Browse Source

工单延期基础接口

ops-management-platform-backend-dev
gjh 1 week ago
parent
commit
2c59acd62d
  1. 18
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/WorkOrderDelayController.java
  2. 19
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderDelay.java
  3. 100
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java
  4. 66
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderDelayBo.java
  5. 119
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java
  6. 25
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderDelayVo.java
  7. 76
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderInfoVo.java
  8. 2
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IProjectInfoService.java
  9. 2
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderDelayService.java
  10. 1
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/DailyInspectionReportServiceImpl.java
  11. 9
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ProjectInfoServiceImpl.java
  12. 17
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderDelayServiceImpl.java
  13. 26
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java

18
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/WorkOrderDelayController.java

@ -26,12 +26,12 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
* 工单延期审核
*
* @author gejunhao
* @date 2025-02-21
* @date 2025-04-28
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/platform/workOrderDelay")
@RequestMapping("/platform/orderDelay")
public class WorkOrderDelayController extends BaseController {
private final IWorkOrderDelayService workOrderDelayService;
@ -39,7 +39,7 @@ public class WorkOrderDelayController extends BaseController {
/**
* 查询工单延期审核列表
*/
@SaCheckPermission("platform:workOrderDelay:list")
@SaCheckPermission("platform:orderDelay:list")
@GetMapping("/list")
public TableDataInfo<WorkOrderDelayVo> list(WorkOrderDelayBo bo, PageQuery pageQuery) {
return workOrderDelayService.queryPageList(bo, pageQuery);
@ -48,7 +48,7 @@ public class WorkOrderDelayController extends BaseController {
/**
* 导出工单延期审核列表
*/
@SaCheckPermission("platform:workOrderDelay:export")
@SaCheckPermission("platform:orderDelay:export")
@Log(title = "工单延期审核", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WorkOrderDelayBo bo, HttpServletResponse response) {
@ -61,17 +61,17 @@ public class WorkOrderDelayController extends BaseController {
*
* @param id 主键
*/
@SaCheckPermission("platform:workOrderDelay:query")
@SaCheckPermission("platform:orderDelay:query")
@GetMapping("/{id}")
public R<WorkOrderDelayVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
@PathVariable Long id) {
return R.ok(workOrderDelayService.queryById(id));
}
/**
* 新增工单延期审核
*/
@SaCheckPermission("platform:workOrderDelay:add")
@SaCheckPermission("platform:orderDelay:add")
@Log(title = "工单延期审核", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
@ -82,7 +82,7 @@ public class WorkOrderDelayController extends BaseController {
/**
* 修改工单延期审核
*/
@SaCheckPermission("platform:workOrderDelay:edit")
@SaCheckPermission("platform:orderDelay:edit")
@Log(title = "工单延期审核", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
@ -95,7 +95,7 @@ public class WorkOrderDelayController extends BaseController {
*
* @param ids 主键串
*/
@SaCheckPermission("platform:workOrderDelay:remove")
@SaCheckPermission("platform:orderDelay:remove")
@Log(title = "工单延期审核", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")

19
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderDelay.java

@ -4,10 +4,8 @@ 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;
@ -15,7 +13,7 @@ import java.io.Serial;
* 工单延期审核对象 work_order_delay
*
* @author gejunhao
* @date 2025-02-21
* @date 2025-04-28
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -29,7 +27,7 @@ public class WorkOrderDelay extends TenantEntity {
* 工单延期记录的唯一标识符
*/
@TableId(value = "id")
private Long id;
private String id;
/**
* 所属项目的名称
@ -79,12 +77,12 @@ public class WorkOrderDelay extends TenantEntity {
/**
* 是否事故 (0: , 1: )
*/
private Long isAccident;
private String isAccident;
/**
* 响应级别 (0: 常规, 1: 紧急, 2: 特急)
*/
private Long responseLevel;
private String responseLevel;
/**
* 响应时限
@ -99,7 +97,7 @@ public class WorkOrderDelay extends TenantEntity {
/**
* 故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)
*/
private Long faultSubcategory;
private String faultSubcategory;
/**
* 所属机构
@ -119,7 +117,7 @@ public class WorkOrderDelay extends TenantEntity {
/**
* 故障图片
*/
private String faultImage;
private String attachment;
/**
* 待处理人
@ -131,6 +129,11 @@ public class WorkOrderDelay extends TenantEntity {
*/
private String handlerId;
/**
* 审批人
*/
private String approver;
/**
* 当前状态
*/

100
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java

@ -1,21 +1,23 @@
package org.dromara.platform.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
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 org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
import java.util.Date;
import java.util.List;
/**
* 工单信息对象 work_order_info
*
* @author gejunhao
* @date 2025-02-21
* @date 2025-04-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -37,34 +39,14 @@ public class WorkOrderInfo extends TenantEntity {
private String projectName;
/**
* 所属合同
* 合同名称
*/
@TableField(exist = false)
private String contractName;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date ScheduleStartDate;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date ScheduleEndDate;
/**
* 巡检点
* 维护单位
*/
@TableField(exist = false)
private String inspectionPoint;
/**
* 工单类型
*/
@TableField(exist = false)
private String type;
/**
* 运维单位
*/
@TableField(exist = false)
private String ioCompany;
private String maintenanceUnit;
/**
* 报修人员
@ -76,18 +58,20 @@ public class WorkOrderInfo extends TenantEntity {
*/
private String repairerId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
/**
*
*/
private Date repairTime;
/**
* 是否事故 (0: , 1: )
*/
private Long isAccident;
private String isAccident;
/**
* 响应级别 (0: 常规, 1: 紧急, 2: 特急)
*/
private Long responseLevel;
private String responseLevel;
/**
* 响应时限
@ -102,16 +86,13 @@ public class WorkOrderInfo extends TenantEntity {
/**
* 故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)
*/
private Long faultSubcategory;
private String faultSubcategory;
/**
* 所属机构
*/
private String organizationName;
/**
* 文件名称
*/
private String fileName;
/**
* 故障地点
*/
@ -125,12 +106,12 @@ public class WorkOrderInfo extends TenantEntity {
/**
* 故障图片
*/
private String faultImage;
private String attachment;
/**
* 维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)
*/
private Long maintenanceRequirement;
private String maintenanceRequirement;
/**
* 派遣意见
@ -138,9 +119,9 @@ public class WorkOrderInfo extends TenantEntity {
private String dispatchOpinion;
/**
* 是否派遣 (0: , 1: )
* 是否派遣
*/
private Long isDispatched;
private String isDispatched;
/**
* 纬度
@ -152,6 +133,11 @@ public class WorkOrderInfo extends TenantEntity {
*/
private String longitude;
/**
* 处理时间
*/
private Long handleTime;
/**
* 当前状态
*/
@ -163,9 +149,43 @@ public class WorkOrderInfo extends TenantEntity {
@TableLogic
private String delFlag;
@TableField(exist = false)
//@NotBlank(message = "附件不能为空", groups = { AddGroup.class, EditGroup.class })
private List<Attachment> attachments;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date ScheduleStartDate;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date ScheduleEndDate;
/**
* 巡检点位
*/
@TableField(exist = false)
private String inspectionPoint;
/**
* 工单类型
*/
@TableField(exist = false)
private String type;
/**
* 处理时限
* 运维单位
*/
private int handleTime;
@TableField(exist = false)
private String ioCompany;
//@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
/**
* 结束时间
*/
//@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
}

66
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderDelayBo.java

@ -8,16 +8,15 @@ 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;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 工单延期审核业务对象 work_order_delay
*
* @author gejunhao
* @date 2025-02-21
* @date 2025-04-28
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -27,49 +26,51 @@ public class WorkOrderDelayBo extends BaseEntity {
/**
* 工单延期记录的唯一标识符
*/
@NotNull(message = "工单延期记录的唯一标识符不能为空", groups = { EditGroup.class })
private Long id;
//@NotNull(message = "工单延期记录的唯一标识符不能为空", groups = { EditGroup.class })
private String id;
/**
* 所属项目的名称
*/
@NotBlank(message = "所属项目的名称不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "所属项目的名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectName;
/**
* 所属合同的名称或编号
*/
@NotBlank(message = "所属合同的名称或编号不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "所属合同的名称或编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String contractName;
/**
* 延期的原因说明
*/
@NotBlank(message = "延期的原因说明不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "延期的原因说明不能为空", groups = { AddGroup.class, EditGroup.class })
private String delayReason;
/**
* 原定的预计结束时间延期前的时间
*/
@NotNull(message = "原定的预计结束时间(延期前的时间)不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotNull(message = "原定的预计结束时间(延期前的时间)不能为空", groups = { AddGroup.class, EditGroup.class })
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date beforeDelayTime;
/**
* 新的预计结束时间延期后的时间
*/
@NotNull(message = "新的预计结束时间(延期后的时间)不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotNull(message = "新的预计结束时间(延期后的时间)不能为空", groups = { AddGroup.class, EditGroup.class })
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date afterDelayTime;
/**
* 处理结果
*/
@NotBlank(message = "处理结果不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "处理结果不能为空", groups = { AddGroup.class, EditGroup.class })
private String handleResult;
/**
* 报修人员
*/
@NotBlank(message = "报修人员不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "报修人员不能为空", groups = { AddGroup.class, EditGroup.class })
private String repairer;
/**
@ -81,79 +82,86 @@ public class WorkOrderDelayBo extends BaseEntity {
/**
* 报修时间
*/
@NotNull(message = "报修时间不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotNull(message = "报修时间不能为空", groups = { AddGroup.class, EditGroup.class })
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date repairerTime;
/**
* 是否事故 (0: , 1: )
*/
@NotNull(message = "是否事故 (0: 否, 1: 是)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long isAccident;
//@NotBlank(message = "是否事故 (0: 否, 1: 是)不能为空", groups = { AddGroup.class, EditGroup.class })
private String isAccident;
/**
* 响应级别 (0: 常规, 1: 紧急, 2: 特急)
*/
@NotNull(message = "响应级别 (0: 常规, 1: 紧急, 2: 特急)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long responseLevel;
//NotBlank(message = "响应级别 (0: 常规, 1: 紧急, 2: 特急)不能为空", groups = { AddGroup.class, EditGroup.class })
private String responseLevel;
/**
* 响应时限
*/
@NotNull(message = "响应时限不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotNull(message = "响应时限不能为空", groups = { AddGroup.class, EditGroup.class })
private Long responseTime;
/**
* 故障大类
*/
@NotBlank(message = "故障大类不能为空", groups = { AddGroup.class, EditGroup.class })
//@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 = "故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)不能为空", groups = { AddGroup.class, EditGroup.class })
private String faultSubcategory;
/**
* 所属机构
*/
@NotBlank(message = "所属机构不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "所属机构不能为空", groups = { AddGroup.class, EditGroup.class })
private String organizationName;
/**
* 故障地点
*/
@NotBlank(message = "故障地点不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "故障地点不能为空", groups = { AddGroup.class, EditGroup.class })
private String faultLocation;
/**
* 故障描述
*/
@NotBlank(message = "故障描述不能为空", groups = { AddGroup.class, EditGroup.class })
//@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 attachment;
/**
* 待处理人
*/
@NotBlank(message = "待处理人不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "待处理人不能为空", groups = { AddGroup.class, EditGroup.class })
private String handler;
/**
* 待处理人ID
*/
@NotBlank(message = "待处理人ID不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "待处理人ID不能为空", groups = { AddGroup.class, EditGroup.class })
private String handlerId;
/**
* 审批人
*/
//@NotBlank(message = "审批人不能为空", groups = { AddGroup.class, EditGroup.class })
private String approver;
/**
* 当前状态
*/
@NotNull(message = "当前状态不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotNull(message = "当前状态不能为空", groups = { AddGroup.class, EditGroup.class })
private Long status;

119
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java

@ -1,28 +1,28 @@
package org.dromara.platform.domain.bo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.platform.domain.Attachment;
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 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.Attachment;
import org.dromara.platform.domain.WorkOrderInfo;
import jakarta.validation.constraints.*;
import org.dromara.common.translation.annotation.Translation;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.common.translation.constant.TransConstant;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 工单信息业务对象 work_order_info
*
* @author gejunhao
* @date 2025-02-21
* @date 2025-04-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -32,8 +32,7 @@ public class WorkOrderInfoBo extends BaseEntity {
/**
* 工单ID
*/
//@NotBlank(message = "工单ID不能为空", groups = { EditGroup.class })
@TableId(type = IdType.ASSIGN_ID)
@NotBlank(message = "工单ID不能为空", groups = { EditGroup.class })
private String id;
/**
@ -42,120 +41,144 @@ public class WorkOrderInfoBo extends BaseEntity {
@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 maintenanceUnit;
/**
* 报修人员
*/
@NotBlank(message = "报修人员不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "报修人员不能为空", groups = { AddGroup.class, EditGroup.class })
private String repairer;
/**
* 报修人员ID
* 修人员ID
*/
//@NotBlank(message = "报修人员ID不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "修人员ID不能为空", groups = { AddGroup.class, EditGroup.class })
private String repairerId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
/**
*
*/
//@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private Date repairTime;
/**
* 是否事故 (0: , 1: )
*/
@NotNull(message = "是否事故 (0: 否, 1: 是)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long isAccident;
//NotBlank(message = "是否事故 (0: 否, 1: 是)不能为空", groups = { AddGroup.class, EditGroup.class })
private String isAccident;
/**
* 响应级别 (0: 常规, 1: 紧急, 2: 特急)
*/
@NotNull(message = "响应级别 (0: 常规, 1: 紧急, 2: 特急)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long responseLevel;
//@NotBlank(message = "响应级别 (0: 常规, 1: 紧急, 2: 特急)不能为空", groups = { AddGroup.class, EditGroup.class })
private String responseLevel;
/**
* 响应时限
*/
@NotNull(message = "响应时限不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotNull(message = "响应时限不能为空", groups = { AddGroup.class, EditGroup.class })
private Long responseTime;
/**
* 故障大类
*/
@NotBlank(message = "故障大类不能为空", groups = { AddGroup.class, EditGroup.class })
//@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 = "故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)不能为空", groups = { AddGroup.class, EditGroup.class })
private String faultSubcategory;
/**
* 所属机构
*/
@NotBlank(message = "所属机构不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "所属机构不能为空", groups = { AddGroup.class, EditGroup.class })
private String organizationName;
/**
* 故障地点
*/
@NotBlank(message = "故障地点不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "故障地点不能为空", groups = { AddGroup.class, EditGroup.class })
private String faultLocation;
/**
* 故障描述
*/
@NotBlank(message = "故障描述不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "故障描述不能为空", groups = { AddGroup.class, EditGroup.class })
private String faultDescription;
/**
* 故障图片
*/
//@NotBlank(message = "故障图片不能为空", groups = { AddGroup.class, EditGroup.class })
private String faultImage;
@TableField(exist = false)
//@NotBlank(message = "附件不能为空", groups = { AddGroup.class, EditGroup.class })
private List<Attachment> attachments;
private String attachment;
/**
* 维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)
*/
@NotNull(message = "维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long maintenanceRequirement;
@NotBlank(message = "维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)不能为空", groups = { AddGroup.class, EditGroup.class })
private String maintenanceRequirement;
/**
* 派遣意见
*/
@NotBlank(message = "派遣意见不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "派遣意见不能为空", groups = { AddGroup.class, EditGroup.class })
private String dispatchOpinion;
/**
* 是否派遣 (0: , 1: )
* 是否派遣
*/
@NotNull(message = "是否派遣 (0: 否, 1: 是)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long isDispatched;
//@NotBlank(message = "是否派遣不能为空", groups = { AddGroup.class, EditGroup.class })
private String isDispatched;
/**
* 纬度
*/
@NotBlank(message = "纬度不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "纬度不能为空", groups = { AddGroup.class, EditGroup.class })
private String latitude;
/**
* 经度
*/
@NotBlank(message = "经度不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "经度不能为空", groups = { AddGroup.class, EditGroup.class })
private String longitude;
/**
* 当前状态
* 处理时间
*/
//@NotNull(message = "当前状态不能为空", groups = { AddGroup.class, EditGroup.class })
private Long status;
//@NotNull(message = "处理时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Long handleTime;
/**
* 处理时限
* 当前状态
*/
private int handleTime;
//@NotNull(message = "当前状态不能为空", groups = { AddGroup.class, EditGroup.class })
private Long status;
private String fileName;
@TableField(exist = false)
//@NotBlank(message = "附件不能为空", groups = { AddGroup.class, EditGroup.class })
private List<Attachment> attachments;
//@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
/**
* 结束时间
*/
//@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
}

25
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderDelayVo.java

@ -1,9 +1,7 @@
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;
@ -22,7 +20,7 @@ import java.util.Date;
* 工单延期审核视图对象 work_order_delay
*
* @author gejunhao
* @date 2025-02-21
* @date 2025-04-28
*/
@Data
@ExcelIgnoreUnannotated
@ -36,7 +34,7 @@ public class WorkOrderDelayVo implements Serializable {
* 工单延期记录的唯一标识符
*/
@ExcelProperty(value = "工单延期记录的唯一标识符")
private Long id;
private String id;
/**
* 所属项目的名称
@ -98,13 +96,13 @@ public class WorkOrderDelayVo implements Serializable {
* 是否事故 (0: , 1: )
*/
@ExcelProperty(value = "是否事故 (0: 否, 1: 是)")
private Long isAccident;
private String isAccident;
/**
* 响应级别 (0: 常规, 1: 紧急, 2: 特急)
*/
@ExcelProperty(value = "响应级别 (0: 常规, 1: 紧急, 2: 特急)")
private Long responseLevel;
private String responseLevel;
/**
* 响应时限
@ -122,7 +120,7 @@ public class WorkOrderDelayVo implements Serializable {
* 故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)
*/
@ExcelProperty(value = "故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)")
private Long faultSubcategory;
private String faultSubcategory;
/**
* 所属机构
@ -146,13 +144,8 @@ public class WorkOrderDelayVo implements Serializable {
* 故障图片
*/
@ExcelProperty(value = "故障图片")
private String faultImage;
private String attachment;
/**
* 故障图片Url
*/
@Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "faultImage")
private String faultImageUrl;
/**
* 待处理人
*/
@ -165,6 +158,12 @@ public class WorkOrderDelayVo implements Serializable {
@ExcelProperty(value = "待处理人ID")
private String handlerId;
/**
* 审批人
*/
@ExcelProperty(value = "审批人")
private String approver;
/**
* 当前状态
*/

76
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderInfoVo.java

@ -1,8 +1,9 @@
package org.dromara.platform.domain.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
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.Attachment;
import org.dromara.platform.domain.WorkOrderInfo;
@ -12,6 +13,7 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
import java.io.Serializable;
@ -23,7 +25,7 @@ import java.util.List;
* 工单信息视图对象 work_order_info
*
* @author gejunhao
* @date 2025-02-21
* @date 2025-04-27
*/
@Data
@ExcelIgnoreUnannotated
@ -39,16 +41,24 @@ public class WorkOrderInfoVo implements Serializable {
@ExcelProperty(value = "工单ID")
private String id;
@TableField(exist = false)
//@NotBlank(message = "附件不能为空", groups = { AddGroup.class, EditGroup.class })
private List<Attachment> attachments;
/**
* 所属项目
*/
@ExcelProperty(value = "所属项目")
private String projectName;
/**
* 合同名称
*/
@ExcelProperty(value = "合同名称")
private String contractName;
/**
* 维护单位
*/
@ExcelProperty(value = "维护单位")
private String maintenanceUnit;
/**
* 报修人员
*/
@ -58,24 +68,26 @@ public class WorkOrderInfoVo implements Serializable {
/**
* 保修人员ID
*/
@ExcelProperty(value = "修人员ID")
@ExcelProperty(value = "修人员ID")
private String repairerId;
@ExcelProperty(value = "报修时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
/**
*
*/
@ExcelProperty(value = "")
private Date repairTime;
/**
* 是否事故 (0: , 1: )
*/
@ExcelProperty(value = "是否事故 (0: 否, 1: 是)")
private Long isAccident;
private String isAccident;
/**
* 响应级别 (0: 常规, 1: 紧急, 2: 特急)
*/
@ExcelProperty(value = "响应级别 (0: 常规, 1: 紧急, 2: 特急)")
private Long responseLevel;
private String responseLevel;
/**
* 响应时限
@ -93,7 +105,7 @@ public class WorkOrderInfoVo implements Serializable {
* 故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)
*/
@ExcelProperty(value = "故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)")
private Long faultSubcategory;
private String faultSubcategory;
/**
* 所属机构
@ -117,18 +129,18 @@ public class WorkOrderInfoVo implements Serializable {
* 故障图片
*/
@ExcelProperty(value = "故障图片")
private String faultImage;
private String attachment;
/**
* 故障图片Url
*/
// @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "faultImage")
// private String faultImageUrl;
//@Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "faultImage")
//private String faultImageUrl;
/**
* 维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)
*/
@ExcelProperty(value = "维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)")
private Long maintenanceRequirement;
private String maintenanceRequirement;
/**
* 派遣意见
@ -137,10 +149,10 @@ public class WorkOrderInfoVo implements Serializable {
private String dispatchOpinion;
/**
* 是否派遣 (0: , 1: )
* 是否派遣
*/
@ExcelProperty(value = "是否派遣 (0: 否, 1: 是)")
private Long isDispatched;
@ExcelProperty(value = "是否派遣")
private String isDispatched;
/**
* 纬度
@ -154,15 +166,35 @@ public class WorkOrderInfoVo implements Serializable {
@ExcelProperty(value = "经度")
private String longitude;
/**
* 处理时间
*/
@ExcelProperty(value = "处理时间")
private Long handleTime;
/**
* 当前状态
*/
@ExcelProperty(value = "当前状态")
private Long status;
@TableField(exist = false)
//@NotBlank(message = "附件不能为空", groups = { AddGroup.class, EditGroup.class })
private List<Attachment> attachments;
//@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
/**
* 结束时间
*/
//@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
/**
* 处理时限
* 待处理人
*/
private int handleTime;
private String fileName;
private String handler;
}

2
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IProjectInfoService.java

@ -102,4 +102,6 @@ public interface IProjectInfoService {
* @return
*/
String getContractPartyANameByProjectName(String projectName);
String getContractPartyBNameByProjectName(String projectName);
}

2
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderDelayService.java

@ -12,7 +12,7 @@ import java.util.List;
* 工单延期审核Service接口
*
* @author gejunhao
* @date 2025-02-21
* @date 2025-04-28
*/
public interface IWorkOrderDelayService {

1
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/DailyInspectionReportServiceImpl.java

@ -79,6 +79,7 @@ public class DailyInspectionReportServiceImpl implements IDailyInspectionReportS
Page<DailyInspectionReportVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
List<DailyInspectionReportVo> records = result.getRecords();
List<DailyInspectionReportVo> sortedRecords = records.stream()
// 默认小到大 反转 为降序
.sorted(Comparator.comparing(DailyInspectionReportVo::getCreateTime).reversed())
.collect(Collectors.toList());
result.setRecords(sortedRecords);

9
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ProjectInfoServiceImpl.java

@ -214,4 +214,13 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
String partyA = contractInfo.getPartyA();
return partyA;
}
@Override
public String getContractPartyBNameByProjectName(String contractName) {
LambdaQueryWrapper<ContractInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ContractInfo::getContractName, contractName);
ContractInfo contractInfo = contractInfoMapper.selectOne(queryWrapper);
String partyB = contractInfo.getPartyB();
return partyB;
}
}

17
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderDelayServiceImpl.java

@ -23,7 +23,7 @@ import java.util.Collection;
* 工单延期审核Service业务层处理
*
* @author gejunhao
* @date 2025-02-21
* @date 2025-04-28
*/
@RequiredArgsConstructor
@Service
@ -39,7 +39,9 @@ public class WorkOrderDelayServiceImpl implements IWorkOrderDelayService {
*/
@Override
public WorkOrderDelayVo queryById(Long id){
return baseMapper.selectVoById(id);
WorkOrderDelayVo workOrderDelayVo = baseMapper.selectVoById(id);
workOrderDelayVo.setHandler("监理人员、业主人员");
return workOrderDelayVo;
}
/**
@ -80,17 +82,18 @@ public class WorkOrderDelayServiceImpl implements IWorkOrderDelayService {
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(StringUtils.isNotBlank(bo.getIsAccident()), WorkOrderDelay::getIsAccident, bo.getIsAccident());
lqw.eq(StringUtils.isNotBlank(bo.getResponseLevel()), 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.getOrganizationName()), WorkOrderDelay::getOrganizationName, bo.getOrganizationName());
lqw.eq(StringUtils.isNotBlank(bo.getFaultSubcategory()), WorkOrderDelay::getFaultSubcategory, bo.getFaultSubcategory());
lqw.like(StringUtils.isNotBlank(bo.getOrganizationName()), WorkOrderDelay::getOrganizationName, bo.getOrganizationName());
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.getAttachment()), WorkOrderDelay::getAttachment, bo.getAttachment());
lqw.eq(StringUtils.isNotBlank(bo.getHandler()), WorkOrderDelay::getHandler, bo.getHandler());
lqw.eq(StringUtils.isNotBlank(bo.getHandlerId()), WorkOrderDelay::getHandlerId, bo.getHandlerId());
lqw.eq(StringUtils.isNotBlank(bo.getApprover()), WorkOrderDelay::getApprover, bo.getApprover());
lqw.eq(bo.getStatus() != null, WorkOrderDelay::getStatus, bo.getStatus());
return lqw;
}

26
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java

@ -1,7 +1,10 @@
package org.dromara.platform.service.impl;
import cn.hutool.core.date.DateUtil;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -10,9 +13,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.platform.domain.Attachment;
import org.dromara.platform.domain.AttachmentSerializer;
import org.dromara.platform.domain.InspectionPlanInfo;
import org.dromara.platform.service.IProjectInfoService;
import org.springframework.stereotype.Service;
import org.dromara.platform.domain.bo.WorkOrderInfoBo;
import org.dromara.platform.domain.vo.WorkOrderInfoVo;
@ -35,6 +40,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
private final WorkOrderInfoMapper baseMapper;
@Resource
private IProjectInfoService projectInfoService;
/**
* 查询工单信息
*
@ -44,7 +51,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
@Override
public WorkOrderInfoVo queryById(String id){
WorkOrderInfoVo workOrderInfoVo = baseMapper.selectVoById(id);
String attachment = workOrderInfoVo.getFaultImage();
workOrderInfoVo.setHandler("监理人员、业主人员");
String attachment = workOrderInfoVo.getAttachment();
if (StringUtils.isNotBlank(attachment)) {
AttachmentSerializer serializer = new AttachmentSerializer();
List<Attachment> attachments = serializer.deserializeAttachments(attachment);
@ -93,7 +101,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
lqw.eq(StringUtils.isNotBlank(bo.getOrganizationName()), WorkOrderInfo::getOrganizationName, bo.getOrganizationName());
lqw.eq(StringUtils.isNotBlank(bo.getFaultLocation()), WorkOrderInfo::getFaultLocation, bo.getFaultLocation());
lqw.eq(StringUtils.isNotBlank(bo.getFaultDescription()), WorkOrderInfo::getFaultDescription, bo.getFaultDescription());
lqw.eq(StringUtils.isNotBlank(bo.getFaultImage()), WorkOrderInfo::getFaultImage, bo.getFaultImage());
lqw.eq(StringUtils.isNotBlank(bo.getAttachment()), WorkOrderInfo::getAttachment, bo.getAttachment());
lqw.eq(bo.getMaintenanceRequirement() != null, WorkOrderInfo::getMaintenanceRequirement, bo.getMaintenanceRequirement());
lqw.eq(StringUtils.isNotBlank(bo.getDispatchOpinion()), WorkOrderInfo::getDispatchOpinion, bo.getDispatchOpinion());
lqw.eq(bo.getIsDispatched() != null, WorkOrderInfo::getIsDispatched, bo.getIsDispatched());
@ -115,12 +123,22 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
@Override
public Boolean insertByBo(WorkOrderInfoBo bo) {
WorkOrderInfo add = MapstructUtils.convert(bo, WorkOrderInfo.class);
// 设置报修时间
add.setRepairTime(DateUtil.date());
validEntityBeforeSave(add);
List<Attachment> attachments = bo.getAttachments();
AttachmentSerializer serializer = new AttachmentSerializer();
String serializedAttachment = serializer.serializeAttachments(attachments);
add.setFaultImage(serializedAttachment);
add.setAttachment(serializedAttachment);
LoginUser loginUser = LoginHelper.getLoginUser();
// 设置报修人员
String nickname = loginUser.getNickname();
add.setRepairer(nickname);
// 设置维护单位
String contractName = bo.getContractName();
String partyB = projectInfoService.getContractPartyBNameByProjectName(contractName);
add.setMaintenanceUnit(partyB);
//WorkOrderInfoBo 新增字段 bussinkey
//key = 唯一的值 表名+uuid uuid
// add.setBusinessKey(key);
@ -152,7 +170,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
List<Attachment> attachments = bo.getAttachments();
AttachmentSerializer serializer = new AttachmentSerializer();
String serializedAttachment = serializer.serializeAttachments(attachments);
update.setFaultImage(serializedAttachment);
update.setAttachment(serializedAttachment);
return baseMapper.updateById(update) > 0;
}

Loading…
Cancel
Save