Selaa lähdekoodia

维修工单基础代码

ouyj 7 kuukautta sitten
vanhempi
commit
6d127528de

+ 104 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/controller/GxtRepairOrderController.java

@@ -0,0 +1,104 @@
+package com.ygtx.gxt.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ygtx.common.annotation.Log;
+import com.ygtx.common.core.controller.BaseController;
+import com.ygtx.common.core.domain.AjaxResult;
+import com.ygtx.common.enums.BusinessType;
+import com.ygtx.gxt.domain.GxtRepairOrder;
+import com.ygtx.gxt.service.IGxtRepairOrderService;
+import com.ygtx.common.utils.poi.ExcelUtil;
+import com.ygtx.common.core.page.TableDataInfo;
+
+/**
+ * 维修工单Controller
+ * 
+ * @author ouyj
+ * @date 2025-10-30
+ */
+@RestController
+@RequestMapping("/gxt/repairOrder")
+public class GxtRepairOrderController extends BaseController
+{
+    @Autowired
+    private IGxtRepairOrderService gxtRepairOrderService;
+
+    /**
+     * 查询维修工单列表
+     */
+    @PreAuthorize("@ss.hasPermi('gxt:repairOrder:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(GxtRepairOrder gxtRepairOrder)
+    {
+        startPage();
+        List<GxtRepairOrder> list = gxtRepairOrderService.selectGxtRepairOrderList(gxtRepairOrder);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出维修工单列表
+     */
+    @PreAuthorize("@ss.hasPermi('gxt:repairOrder:export')")
+    @Log(title = "维修工单", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, GxtRepairOrder gxtRepairOrder)
+    {
+        List<GxtRepairOrder> list = gxtRepairOrderService.selectGxtRepairOrderList(gxtRepairOrder);
+        ExcelUtil<GxtRepairOrder> util = new ExcelUtil<GxtRepairOrder>(GxtRepairOrder.class);
+        util.exportExcel(response, list, "维修工单数据");
+    }
+
+    /**
+     * 获取维修工单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('gxt:repairOrder:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(gxtRepairOrderService.selectGxtRepairOrderById(id));
+    }
+
+    /**
+     * 新增维修工单
+     */
+    @PreAuthorize("@ss.hasPermi('gxt:repairOrder:add')")
+    @Log(title = "维修工单", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody GxtRepairOrder gxtRepairOrder)
+    {
+        return toAjax(gxtRepairOrderService.insertGxtRepairOrder(gxtRepairOrder));
+    }
+
+    /**
+     * 修改维修工单
+     */
+    @PreAuthorize("@ss.hasPermi('gxt:repairOrder:edit')")
+    @Log(title = "维修工单", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody GxtRepairOrder gxtRepairOrder)
+    {
+        return toAjax(gxtRepairOrderService.updateGxtRepairOrder(gxtRepairOrder));
+    }
+
+    /**
+     * 删除维修工单
+     */
+    @PreAuthorize("@ss.hasPermi('gxt:repairOrder:remove')")
+    @Log(title = "维修工单", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(gxtRepairOrderService.deleteGxtRepairOrderByIds(ids));
+    }
+}

+ 104 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/controller/GxtRepairOrderFlowController.java

@@ -0,0 +1,104 @@
+package com.ygtx.gxt.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ygtx.common.annotation.Log;
+import com.ygtx.common.core.controller.BaseController;
+import com.ygtx.common.core.domain.AjaxResult;
+import com.ygtx.common.enums.BusinessType;
+import com.ygtx.gxt.domain.GxtRepairOrderFlow;
+import com.ygtx.gxt.service.IGxtRepairOrderFlowService;
+import com.ygtx.common.utils.poi.ExcelUtil;
+import com.ygtx.common.core.page.TableDataInfo;
+
+/**
+ * 维修工单流转记录Controller
+ * 
+ * @author ouyj
+ * @date 2025-10-30
+ */
+@RestController
+@RequestMapping("/gxt/repairOrderFlow")
+public class GxtRepairOrderFlowController extends BaseController
+{
+    @Autowired
+    private IGxtRepairOrderFlowService gxtRepairOrderFlowService;
+
+    /**
+     * 查询维修工单流转记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('gxt:repairOrderFlow:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(GxtRepairOrderFlow gxtRepairOrderFlow)
+    {
+        startPage();
+        List<GxtRepairOrderFlow> list = gxtRepairOrderFlowService.selectGxtRepairOrderFlowList(gxtRepairOrderFlow);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出维修工单流转记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('gxt:repairOrderFlow:export')")
+    @Log(title = "维修工单流转记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, GxtRepairOrderFlow gxtRepairOrderFlow)
+    {
+        List<GxtRepairOrderFlow> list = gxtRepairOrderFlowService.selectGxtRepairOrderFlowList(gxtRepairOrderFlow);
+        ExcelUtil<GxtRepairOrderFlow> util = new ExcelUtil<GxtRepairOrderFlow>(GxtRepairOrderFlow.class);
+        util.exportExcel(response, list, "维修工单流转记录数据");
+    }
+
+    /**
+     * 获取维修工单流转记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('gxt:repairOrderFlow:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(gxtRepairOrderFlowService.selectGxtRepairOrderFlowById(id));
+    }
+
+    /**
+     * 新增维修工单流转记录
+     */
+    @PreAuthorize("@ss.hasPermi('gxt:repairOrderFlow:add')")
+    @Log(title = "维修工单流转记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody GxtRepairOrderFlow gxtRepairOrderFlow)
+    {
+        return toAjax(gxtRepairOrderFlowService.insertGxtRepairOrderFlow(gxtRepairOrderFlow));
+    }
+
+    /**
+     * 修改维修工单流转记录
+     */
+    @PreAuthorize("@ss.hasPermi('gxt:repairOrderFlow:edit')")
+    @Log(title = "维修工单流转记录", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody GxtRepairOrderFlow gxtRepairOrderFlow)
+    {
+        return toAjax(gxtRepairOrderFlowService.updateGxtRepairOrderFlow(gxtRepairOrderFlow));
+    }
+
+    /**
+     * 删除维修工单流转记录
+     */
+    @PreAuthorize("@ss.hasPermi('gxt:repairOrderFlow:remove')")
+    @Log(title = "维修工单流转记录", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(gxtRepairOrderFlowService.deleteGxtRepairOrderFlowByIds(ids));
+    }
+}

+ 484 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/domain/GxtRepairOrder.java

@@ -0,0 +1,484 @@
+package com.ygtx.gxt.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ygtx.common.annotation.Excel;
+import com.ygtx.common.core.domain.BaseEntity;
+
+/**
+ * 维修工单对象 gxt_repair_order
+ * 
+ * @author ouyj
+ * @date 2025-10-30
+ */
+public class GxtRepairOrder extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 工单ID */
+    private Long id;
+
+    /** 工单编码 */
+    @Excel(name = "工单编码")
+    private String workOrderProjectNo;
+
+    /** 工单状态:draft-草稿,to_assign-待派单,assigned-已派单,accepted-已接单,processing-处理中,paused-暂停中,to_approve-待审批,suspended-已挂起,completed-已完成 */
+    @Excel(name = "工单状态:draft-草稿,to_assign-待派单,assigned-已派单,accepted-已接单,processing-处理中,paused-暂停中,to_approve-待审批,suspended-已挂起,completed-已完成")
+    private String workOrderStatus;
+
+    /** 维保中心ID */
+    @Excel(name = "维保中心ID")
+    private Long gxtCenterId;
+
+    /** 维保中心 */
+    @Excel(name = "维保中心")
+    private String gxtCenter;
+
+    /** 风电场ID */
+    @Excel(name = "风电场ID")
+    private Long pcsStationId;
+
+    /** 风电场 */
+    @Excel(name = "风电场")
+    private String pcsStationName;
+
+    /** 风机设备ID */
+    @Excel(name = "风机设备ID")
+    private Long pcsDeviceId;
+
+    /** 风机编号 */
+    @Excel(name = "风机编号")
+    private String pcsDeviceName;
+
+    /** 风机品牌 */
+    @Excel(name = "风机品牌")
+    private String brand;
+
+    /** 风机型号 */
+    @Excel(name = "风机型号")
+    private String model;
+
+    /** 故障代码 */
+    @Excel(name = "故障代码")
+    private String faultCode;
+
+    /** 故障描述 */
+    @Excel(name = "故障描述")
+    private String faultDesc;
+
+    /** 派单时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "派单时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date assignTime;
+
+    /** 派单人ID */
+    @Excel(name = "派单人ID")
+    private Long assignUserId;
+
+    /** 派单人姓名 */
+    @Excel(name = "派单人姓名")
+    private String assignUserName;
+
+    /** 接单时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "接单时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date acceptTime;
+
+    /** 接单人ID */
+    @Excel(name = "接单人ID")
+    private Long acceptUserId;
+
+    /** 接单人姓名 */
+    @Excel(name = "接单人姓名")
+    private String acceptUserName;
+
+    /** 实际开始时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "实际开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date realStartTime;
+
+    /** 实际结束时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "实际结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date realEndTime;
+
+    /** 班组组长ID */
+    @Excel(name = "班组组长ID")
+    private Long teamLeaderId;
+
+    /** 班组组长姓名 */
+    @Excel(name = "班组组长姓名")
+    private String teamLeaderName;
+
+    /** 工作组成员ID */
+    @Excel(name = "工作组成员ID")
+    private Long workGroupMemberId;
+
+    /** 工作组成员姓名 */
+    @Excel(name = "工作组成员姓名")
+    private String workGroupMemberName;
+
+    /** 维保内容 */
+    @Excel(name = "维保内容")
+    private String content;
+
+    /** 预计工时(小时) */
+    @Excel(name = "预计工时", readConverterExp = "小=时")
+    private BigDecimal planHour;
+
+    /** 优先级 */
+    @Excel(name = "优先级")
+    private Long priorityType;
+
+    /** 评分 */
+    @Excel(name = "评分")
+    private BigDecimal score;
+
+    /** 点评 */
+    @Excel(name = "点评")
+    private String reviewContent;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+
+    public void setWorkOrderProjectNo(String workOrderProjectNo) 
+    {
+        this.workOrderProjectNo = workOrderProjectNo;
+    }
+
+    public String getWorkOrderProjectNo() 
+    {
+        return workOrderProjectNo;
+    }
+
+    public void setWorkOrderStatus(String workOrderStatus) 
+    {
+        this.workOrderStatus = workOrderStatus;
+    }
+
+    public String getWorkOrderStatus() 
+    {
+        return workOrderStatus;
+    }
+
+    public void setGxtCenterId(Long gxtCenterId) 
+    {
+        this.gxtCenterId = gxtCenterId;
+    }
+
+    public Long getGxtCenterId() 
+    {
+        return gxtCenterId;
+    }
+
+    public void setGxtCenter(String gxtCenter) 
+    {
+        this.gxtCenter = gxtCenter;
+    }
+
+    public String getGxtCenter() 
+    {
+        return gxtCenter;
+    }
+
+    public void setPcsStationId(Long pcsStationId) 
+    {
+        this.pcsStationId = pcsStationId;
+    }
+
+    public Long getPcsStationId() 
+    {
+        return pcsStationId;
+    }
+
+    public void setPcsStationName(String pcsStationName) 
+    {
+        this.pcsStationName = pcsStationName;
+    }
+
+    public String getPcsStationName() 
+    {
+        return pcsStationName;
+    }
+
+    public void setPcsDeviceId(Long pcsDeviceId) 
+    {
+        this.pcsDeviceId = pcsDeviceId;
+    }
+
+    public Long getPcsDeviceId() 
+    {
+        return pcsDeviceId;
+    }
+
+    public void setPcsDeviceName(String pcsDeviceName) 
+    {
+        this.pcsDeviceName = pcsDeviceName;
+    }
+
+    public String getPcsDeviceName() 
+    {
+        return pcsDeviceName;
+    }
+
+    public void setBrand(String brand) 
+    {
+        this.brand = brand;
+    }
+
+    public String getBrand() 
+    {
+        return brand;
+    }
+
+    public void setModel(String model) 
+    {
+        this.model = model;
+    }
+
+    public String getModel() 
+    {
+        return model;
+    }
+
+    public void setFaultCode(String faultCode) 
+    {
+        this.faultCode = faultCode;
+    }
+
+    public String getFaultCode() 
+    {
+        return faultCode;
+    }
+
+    public void setFaultDesc(String faultDesc) 
+    {
+        this.faultDesc = faultDesc;
+    }
+
+    public String getFaultDesc() 
+    {
+        return faultDesc;
+    }
+
+    public void setAssignTime(Date assignTime) 
+    {
+        this.assignTime = assignTime;
+    }
+
+    public Date getAssignTime() 
+    {
+        return assignTime;
+    }
+
+    public void setAssignUserId(Long assignUserId) 
+    {
+        this.assignUserId = assignUserId;
+    }
+
+    public Long getAssignUserId() 
+    {
+        return assignUserId;
+    }
+
+    public void setAssignUserName(String assignUserName) 
+    {
+        this.assignUserName = assignUserName;
+    }
+
+    public String getAssignUserName() 
+    {
+        return assignUserName;
+    }
+
+    public void setAcceptTime(Date acceptTime) 
+    {
+        this.acceptTime = acceptTime;
+    }
+
+    public Date getAcceptTime() 
+    {
+        return acceptTime;
+    }
+
+    public void setAcceptUserId(Long acceptUserId) 
+    {
+        this.acceptUserId = acceptUserId;
+    }
+
+    public Long getAcceptUserId() 
+    {
+        return acceptUserId;
+    }
+
+    public void setAcceptUserName(String acceptUserName) 
+    {
+        this.acceptUserName = acceptUserName;
+    }
+
+    public String getAcceptUserName() 
+    {
+        return acceptUserName;
+    }
+
+    public void setRealStartTime(Date realStartTime) 
+    {
+        this.realStartTime = realStartTime;
+    }
+
+    public Date getRealStartTime() 
+    {
+        return realStartTime;
+    }
+
+    public void setRealEndTime(Date realEndTime) 
+    {
+        this.realEndTime = realEndTime;
+    }
+
+    public Date getRealEndTime() 
+    {
+        return realEndTime;
+    }
+
+    public void setTeamLeaderId(Long teamLeaderId) 
+    {
+        this.teamLeaderId = teamLeaderId;
+    }
+
+    public Long getTeamLeaderId() 
+    {
+        return teamLeaderId;
+    }
+
+    public void setTeamLeaderName(String teamLeaderName) 
+    {
+        this.teamLeaderName = teamLeaderName;
+    }
+
+    public String getTeamLeaderName() 
+    {
+        return teamLeaderName;
+    }
+
+    public void setWorkGroupMemberId(Long workGroupMemberId) 
+    {
+        this.workGroupMemberId = workGroupMemberId;
+    }
+
+    public Long getWorkGroupMemberId() 
+    {
+        return workGroupMemberId;
+    }
+
+    public void setWorkGroupMemberName(String workGroupMemberName) 
+    {
+        this.workGroupMemberName = workGroupMemberName;
+    }
+
+    public String getWorkGroupMemberName() 
+    {
+        return workGroupMemberName;
+    }
+
+    public void setContent(String content) 
+    {
+        this.content = content;
+    }
+
+    public String getContent() 
+    {
+        return content;
+    }
+
+    public void setPlanHour(BigDecimal planHour) 
+    {
+        this.planHour = planHour;
+    }
+
+    public BigDecimal getPlanHour() 
+    {
+        return planHour;
+    }
+
+    public void setPriorityType(Long priorityType) 
+    {
+        this.priorityType = priorityType;
+    }
+
+    public Long getPriorityType() 
+    {
+        return priorityType;
+    }
+
+    public void setScore(BigDecimal score) 
+    {
+        this.score = score;
+    }
+
+    public BigDecimal getScore() 
+    {
+        return score;
+    }
+
+    public void setReviewContent(String reviewContent) 
+    {
+        this.reviewContent = reviewContent;
+    }
+
+    public String getReviewContent() 
+    {
+        return reviewContent;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("workOrderProjectNo", getWorkOrderProjectNo())
+            .append("workOrderStatus", getWorkOrderStatus())
+            .append("gxtCenterId", getGxtCenterId())
+            .append("gxtCenter", getGxtCenter())
+            .append("pcsStationId", getPcsStationId())
+            .append("pcsStationName", getPcsStationName())
+            .append("pcsDeviceId", getPcsDeviceId())
+            .append("pcsDeviceName", getPcsDeviceName())
+            .append("brand", getBrand())
+            .append("model", getModel())
+            .append("faultCode", getFaultCode())
+            .append("faultDesc", getFaultDesc())
+            .append("assignTime", getAssignTime())
+            .append("assignUserId", getAssignUserId())
+            .append("assignUserName", getAssignUserName())
+            .append("acceptTime", getAcceptTime())
+            .append("acceptUserId", getAcceptUserId())
+            .append("acceptUserName", getAcceptUserName())
+            .append("realStartTime", getRealStartTime())
+            .append("realEndTime", getRealEndTime())
+            .append("teamLeaderId", getTeamLeaderId())
+            .append("teamLeaderName", getTeamLeaderName())
+            .append("workGroupMemberId", getWorkGroupMemberId())
+            .append("workGroupMemberName", getWorkGroupMemberName())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .append("content", getContent())
+            .append("planHour", getPlanHour())
+            .append("priorityType", getPriorityType())
+            .append("score", getScore())
+            .append("reviewContent", getReviewContent())
+            .toString();
+    }
+}

+ 177 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/domain/GxtRepairOrderFlow.java

@@ -0,0 +1,177 @@
+package com.ygtx.gxt.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ygtx.common.annotation.Excel;
+import com.ygtx.common.core.domain.BaseEntity;
+
+/**
+ * 维修工单流转记录对象 gxt_repair_order_flow
+ * 
+ * @author ouyj
+ * @date 2025-10-30
+ */
+public class GxtRepairOrderFlow extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 流转记录ID */
+    private Long id;
+
+    /** 工单ID */
+    @Excel(name = "工单ID")
+    private Long orderId;
+
+    /** 工单编码 */
+    @Excel(name = "工单编码")
+    private String orderCode;
+
+    /** 操作类型:create-创建,assign-派单,accept-接单,process-处理,pause-暂停,suspend-挂起,restart-重启,approve-审批,complete-完成 */
+    @Excel(name = "操作类型:create-创建,assign-派单,accept-接单,process-处理,pause-暂停,suspend-挂起,restart-重启,approve-审批,complete-完成")
+    private String actionType;
+
+    /** 原状态 */
+    @Excel(name = "原状态")
+    private String fromStatus;
+
+    /** 目标状态 */
+    @Excel(name = "目标状态")
+    private String toStatus;
+
+    /** 操作人ID */
+    @Excel(name = "操作人ID")
+    private Long operatorId;
+
+    /** 操作人姓名 */
+    @Excel(name = "操作人姓名")
+    private String operatorName;
+
+    /** 操作时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date actionTime;
+
+    /** 操作备注 */
+    @Excel(name = "操作备注")
+    private String actionRemark;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+
+    public void setOrderId(Long orderId) 
+    {
+        this.orderId = orderId;
+    }
+
+    public Long getOrderId() 
+    {
+        return orderId;
+    }
+
+    public void setOrderCode(String orderCode) 
+    {
+        this.orderCode = orderCode;
+    }
+
+    public String getOrderCode() 
+    {
+        return orderCode;
+    }
+
+    public void setActionType(String actionType) 
+    {
+        this.actionType = actionType;
+    }
+
+    public String getActionType() 
+    {
+        return actionType;
+    }
+
+    public void setFromStatus(String fromStatus) 
+    {
+        this.fromStatus = fromStatus;
+    }
+
+    public String getFromStatus() 
+    {
+        return fromStatus;
+    }
+
+    public void setToStatus(String toStatus) 
+    {
+        this.toStatus = toStatus;
+    }
+
+    public String getToStatus() 
+    {
+        return toStatus;
+    }
+
+    public void setOperatorId(Long operatorId) 
+    {
+        this.operatorId = operatorId;
+    }
+
+    public Long getOperatorId() 
+    {
+        return operatorId;
+    }
+
+    public void setOperatorName(String operatorName) 
+    {
+        this.operatorName = operatorName;
+    }
+
+    public String getOperatorName() 
+    {
+        return operatorName;
+    }
+
+    public void setActionTime(Date actionTime) 
+    {
+        this.actionTime = actionTime;
+    }
+
+    public Date getActionTime() 
+    {
+        return actionTime;
+    }
+
+    public void setActionRemark(String actionRemark) 
+    {
+        this.actionRemark = actionRemark;
+    }
+
+    public String getActionRemark() 
+    {
+        return actionRemark;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("orderId", getOrderId())
+            .append("orderCode", getOrderCode())
+            .append("actionType", getActionType())
+            .append("fromStatus", getFromStatus())
+            .append("toStatus", getToStatus())
+            .append("operatorId", getOperatorId())
+            .append("operatorName", getOperatorName())
+            .append("actionTime", getActionTime())
+            .append("actionRemark", getActionRemark())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .toString();
+    }
+}

+ 61 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/mapper/GxtRepairOrderFlowMapper.java

@@ -0,0 +1,61 @@
+package com.ygtx.gxt.mapper;
+
+import java.util.List;
+import com.ygtx.gxt.domain.GxtRepairOrderFlow;
+
+/**
+ * 维修工单流转记录Mapper接口
+ * 
+ * @author ouyj
+ * @date 2025-10-30
+ */
+public interface GxtRepairOrderFlowMapper 
+{
+    /**
+     * 查询维修工单流转记录
+     * 
+     * @param id 维修工单流转记录主键
+     * @return 维修工单流转记录
+     */
+    public GxtRepairOrderFlow selectGxtRepairOrderFlowById(Long id);
+
+    /**
+     * 查询维修工单流转记录列表
+     * 
+     * @param gxtRepairOrderFlow 维修工单流转记录
+     * @return 维修工单流转记录集合
+     */
+    public List<GxtRepairOrderFlow> selectGxtRepairOrderFlowList(GxtRepairOrderFlow gxtRepairOrderFlow);
+
+    /**
+     * 新增维修工单流转记录
+     * 
+     * @param gxtRepairOrderFlow 维修工单流转记录
+     * @return 结果
+     */
+    public int insertGxtRepairOrderFlow(GxtRepairOrderFlow gxtRepairOrderFlow);
+
+    /**
+     * 修改维修工单流转记录
+     * 
+     * @param gxtRepairOrderFlow 维修工单流转记录
+     * @return 结果
+     */
+    public int updateGxtRepairOrderFlow(GxtRepairOrderFlow gxtRepairOrderFlow);
+
+    /**
+     * 删除维修工单流转记录
+     * 
+     * @param id 维修工单流转记录主键
+     * @return 结果
+     */
+    public int deleteGxtRepairOrderFlowById(Long id);
+
+    /**
+     * 批量删除维修工单流转记录
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteGxtRepairOrderFlowByIds(Long[] ids);
+}

+ 61 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/mapper/GxtRepairOrderMapper.java

@@ -0,0 +1,61 @@
+package com.ygtx.gxt.mapper;
+
+import java.util.List;
+import com.ygtx.gxt.domain.GxtRepairOrder;
+
+/**
+ * 维修工单Mapper接口
+ * 
+ * @author ouyj
+ * @date 2025-10-30
+ */
+public interface GxtRepairOrderMapper 
+{
+    /**
+     * 查询维修工单
+     * 
+     * @param id 维修工单主键
+     * @return 维修工单
+     */
+    public GxtRepairOrder selectGxtRepairOrderById(Long id);
+
+    /**
+     * 查询维修工单列表
+     * 
+     * @param gxtRepairOrder 维修工单
+     * @return 维修工单集合
+     */
+    public List<GxtRepairOrder> selectGxtRepairOrderList(GxtRepairOrder gxtRepairOrder);
+
+    /**
+     * 新增维修工单
+     * 
+     * @param gxtRepairOrder 维修工单
+     * @return 结果
+     */
+    public int insertGxtRepairOrder(GxtRepairOrder gxtRepairOrder);
+
+    /**
+     * 修改维修工单
+     * 
+     * @param gxtRepairOrder 维修工单
+     * @return 结果
+     */
+    public int updateGxtRepairOrder(GxtRepairOrder gxtRepairOrder);
+
+    /**
+     * 删除维修工单
+     * 
+     * @param id 维修工单主键
+     * @return 结果
+     */
+    public int deleteGxtRepairOrderById(Long id);
+
+    /**
+     * 批量删除维修工单
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteGxtRepairOrderByIds(Long[] ids);
+}

+ 61 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/service/IGxtRepairOrderFlowService.java

@@ -0,0 +1,61 @@
+package com.ygtx.gxt.service;
+
+import java.util.List;
+import com.ygtx.gxt.domain.GxtRepairOrderFlow;
+
+/**
+ * 维修工单流转记录Service接口
+ * 
+ * @author ouyj
+ * @date 2025-10-30
+ */
+public interface IGxtRepairOrderFlowService 
+{
+    /**
+     * 查询维修工单流转记录
+     * 
+     * @param id 维修工单流转记录主键
+     * @return 维修工单流转记录
+     */
+    public GxtRepairOrderFlow selectGxtRepairOrderFlowById(Long id);
+
+    /**
+     * 查询维修工单流转记录列表
+     * 
+     * @param gxtRepairOrderFlow 维修工单流转记录
+     * @return 维修工单流转记录集合
+     */
+    public List<GxtRepairOrderFlow> selectGxtRepairOrderFlowList(GxtRepairOrderFlow gxtRepairOrderFlow);
+
+    /**
+     * 新增维修工单流转记录
+     * 
+     * @param gxtRepairOrderFlow 维修工单流转记录
+     * @return 结果
+     */
+    public int insertGxtRepairOrderFlow(GxtRepairOrderFlow gxtRepairOrderFlow);
+
+    /**
+     * 修改维修工单流转记录
+     * 
+     * @param gxtRepairOrderFlow 维修工单流转记录
+     * @return 结果
+     */
+    public int updateGxtRepairOrderFlow(GxtRepairOrderFlow gxtRepairOrderFlow);
+
+    /**
+     * 批量删除维修工单流转记录
+     * 
+     * @param ids 需要删除的维修工单流转记录主键集合
+     * @return 结果
+     */
+    public int deleteGxtRepairOrderFlowByIds(Long[] ids);
+
+    /**
+     * 删除维修工单流转记录信息
+     * 
+     * @param id 维修工单流转记录主键
+     * @return 结果
+     */
+    public int deleteGxtRepairOrderFlowById(Long id);
+}

+ 61 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/service/IGxtRepairOrderService.java

@@ -0,0 +1,61 @@
+package com.ygtx.gxt.service;
+
+import java.util.List;
+import com.ygtx.gxt.domain.GxtRepairOrder;
+
+/**
+ * 维修工单Service接口
+ * 
+ * @author ouyj
+ * @date 2025-10-30
+ */
+public interface IGxtRepairOrderService 
+{
+    /**
+     * 查询维修工单
+     * 
+     * @param id 维修工单主键
+     * @return 维修工单
+     */
+    public GxtRepairOrder selectGxtRepairOrderById(Long id);
+
+    /**
+     * 查询维修工单列表
+     * 
+     * @param gxtRepairOrder 维修工单
+     * @return 维修工单集合
+     */
+    public List<GxtRepairOrder> selectGxtRepairOrderList(GxtRepairOrder gxtRepairOrder);
+
+    /**
+     * 新增维修工单
+     * 
+     * @param gxtRepairOrder 维修工单
+     * @return 结果
+     */
+    public int insertGxtRepairOrder(GxtRepairOrder gxtRepairOrder);
+
+    /**
+     * 修改维修工单
+     * 
+     * @param gxtRepairOrder 维修工单
+     * @return 结果
+     */
+    public int updateGxtRepairOrder(GxtRepairOrder gxtRepairOrder);
+
+    /**
+     * 批量删除维修工单
+     * 
+     * @param ids 需要删除的维修工单主键集合
+     * @return 结果
+     */
+    public int deleteGxtRepairOrderByIds(Long[] ids);
+
+    /**
+     * 删除维修工单信息
+     * 
+     * @param id 维修工单主键
+     * @return 结果
+     */
+    public int deleteGxtRepairOrderById(Long id);
+}

+ 95 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtRepairOrderFlowServiceImpl.java

@@ -0,0 +1,95 @@
+package com.ygtx.gxt.service.impl;
+
+import java.util.List;
+import com.ygtx.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ygtx.gxt.mapper.GxtRepairOrderFlowMapper;
+import com.ygtx.gxt.domain.GxtRepairOrderFlow;
+import com.ygtx.gxt.service.IGxtRepairOrderFlowService;
+
+/**
+ * 维修工单流转记录Service业务层处理
+ * 
+ * @author ouyj
+ * @date 2025-10-30
+ */
+@Service
+public class GxtRepairOrderFlowServiceImpl implements IGxtRepairOrderFlowService 
+{
+    @Autowired
+    private GxtRepairOrderFlowMapper gxtRepairOrderFlowMapper;
+
+    /**
+     * 查询维修工单流转记录
+     * 
+     * @param id 维修工单流转记录主键
+     * @return 维修工单流转记录
+     */
+    @Override
+    public GxtRepairOrderFlow selectGxtRepairOrderFlowById(Long id)
+    {
+        return gxtRepairOrderFlowMapper.selectGxtRepairOrderFlowById(id);
+    }
+
+    /**
+     * 查询维修工单流转记录列表
+     * 
+     * @param gxtRepairOrderFlow 维修工单流转记录
+     * @return 维修工单流转记录
+     */
+    @Override
+    public List<GxtRepairOrderFlow> selectGxtRepairOrderFlowList(GxtRepairOrderFlow gxtRepairOrderFlow)
+    {
+        return gxtRepairOrderFlowMapper.selectGxtRepairOrderFlowList(gxtRepairOrderFlow);
+    }
+
+    /**
+     * 新增维修工单流转记录
+     * 
+     * @param gxtRepairOrderFlow 维修工单流转记录
+     * @return 结果
+     */
+    @Override
+    public int insertGxtRepairOrderFlow(GxtRepairOrderFlow gxtRepairOrderFlow)
+    {
+        gxtRepairOrderFlow.setCreateTime(DateUtils.getNowDate());
+        return gxtRepairOrderFlowMapper.insertGxtRepairOrderFlow(gxtRepairOrderFlow);
+    }
+
+    /**
+     * 修改维修工单流转记录
+     * 
+     * @param gxtRepairOrderFlow 维修工单流转记录
+     * @return 结果
+     */
+    @Override
+    public int updateGxtRepairOrderFlow(GxtRepairOrderFlow gxtRepairOrderFlow)
+    {
+        return gxtRepairOrderFlowMapper.updateGxtRepairOrderFlow(gxtRepairOrderFlow);
+    }
+
+    /**
+     * 批量删除维修工单流转记录
+     * 
+     * @param ids 需要删除的维修工单流转记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteGxtRepairOrderFlowByIds(Long[] ids)
+    {
+        return gxtRepairOrderFlowMapper.deleteGxtRepairOrderFlowByIds(ids);
+    }
+
+    /**
+     * 删除维修工单流转记录信息
+     * 
+     * @param id 维修工单流转记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteGxtRepairOrderFlowById(Long id)
+    {
+        return gxtRepairOrderFlowMapper.deleteGxtRepairOrderFlowById(id);
+    }
+}

+ 96 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtRepairOrderServiceImpl.java

@@ -0,0 +1,96 @@
+package com.ygtx.gxt.service.impl;
+
+import java.util.List;
+import com.ygtx.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ygtx.gxt.mapper.GxtRepairOrderMapper;
+import com.ygtx.gxt.domain.GxtRepairOrder;
+import com.ygtx.gxt.service.IGxtRepairOrderService;
+
+/**
+ * 维修工单Service业务层处理
+ * 
+ * @author ouyj
+ * @date 2025-10-30
+ */
+@Service
+public class GxtRepairOrderServiceImpl implements IGxtRepairOrderService 
+{
+    @Autowired
+    private GxtRepairOrderMapper gxtRepairOrderMapper;
+
+    /**
+     * 查询维修工单
+     * 
+     * @param id 维修工单主键
+     * @return 维修工单
+     */
+    @Override
+    public GxtRepairOrder selectGxtRepairOrderById(Long id)
+    {
+        return gxtRepairOrderMapper.selectGxtRepairOrderById(id);
+    }
+
+    /**
+     * 查询维修工单列表
+     * 
+     * @param gxtRepairOrder 维修工单
+     * @return 维修工单
+     */
+    @Override
+    public List<GxtRepairOrder> selectGxtRepairOrderList(GxtRepairOrder gxtRepairOrder)
+    {
+        return gxtRepairOrderMapper.selectGxtRepairOrderList(gxtRepairOrder);
+    }
+
+    /**
+     * 新增维修工单
+     * 
+     * @param gxtRepairOrder 维修工单
+     * @return 结果
+     */
+    @Override
+    public int insertGxtRepairOrder(GxtRepairOrder gxtRepairOrder)
+    {
+        gxtRepairOrder.setCreateTime(DateUtils.getNowDate());
+        return gxtRepairOrderMapper.insertGxtRepairOrder(gxtRepairOrder);
+    }
+
+    /**
+     * 修改维修工单
+     * 
+     * @param gxtRepairOrder 维修工单
+     * @return 结果
+     */
+    @Override
+    public int updateGxtRepairOrder(GxtRepairOrder gxtRepairOrder)
+    {
+        gxtRepairOrder.setUpdateTime(DateUtils.getNowDate());
+        return gxtRepairOrderMapper.updateGxtRepairOrder(gxtRepairOrder);
+    }
+
+    /**
+     * 批量删除维修工单
+     * 
+     * @param ids 需要删除的维修工单主键
+     * @return 结果
+     */
+    @Override
+    public int deleteGxtRepairOrderByIds(Long[] ids)
+    {
+        return gxtRepairOrderMapper.deleteGxtRepairOrderByIds(ids);
+    }
+
+    /**
+     * 删除维修工单信息
+     * 
+     * @param id 维修工单主键
+     * @return 结果
+     */
+    @Override
+    public int deleteGxtRepairOrderById(Long id)
+    {
+        return gxtRepairOrderMapper.deleteGxtRepairOrderById(id);
+    }
+}

+ 104 - 0
ygtx-gxt/src/main/resources/mapper/gxt/GxtRepairOrderFlowMapper.xml

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ygtx.gxt.mapper.GxtRepairOrderFlowMapper">
+    
+    <resultMap type="GxtRepairOrderFlow" id="GxtRepairOrderFlowResult">
+        <result property="id"    column="id"    />
+        <result property="orderId"    column="order_id"    />
+        <result property="orderCode"    column="order_code"    />
+        <result property="actionType"    column="action_type"    />
+        <result property="fromStatus"    column="from_status"    />
+        <result property="toStatus"    column="to_status"    />
+        <result property="operatorId"    column="operator_id"    />
+        <result property="operatorName"    column="operator_name"    />
+        <result property="actionTime"    column="action_time"    />
+        <result property="actionRemark"    column="action_remark"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+    </resultMap>
+
+    <sql id="selectGxtRepairOrderFlowVo">
+        select id, order_id, order_code, action_type, from_status, to_status, operator_id, operator_name, action_time, action_remark, create_by, create_time from gxt_repair_order_flow
+    </sql>
+
+    <select id="selectGxtRepairOrderFlowList" parameterType="GxtRepairOrderFlow" resultMap="GxtRepairOrderFlowResult">
+        <include refid="selectGxtRepairOrderFlowVo"/>
+        <where>  
+            <if test="orderId != null "> and order_id = #{orderId}</if>
+            <if test="orderCode != null  and orderCode != ''"> and order_code = #{orderCode}</if>
+            <if test="actionType != null  and actionType != ''"> and action_type = #{actionType}</if>
+            <if test="fromStatus != null  and fromStatus != ''"> and from_status = #{fromStatus}</if>
+            <if test="toStatus != null  and toStatus != ''"> and to_status = #{toStatus}</if>
+            <if test="operatorId != null "> and operator_id = #{operatorId}</if>
+            <if test="operatorName != null  and operatorName != ''"> and operator_name like concat('%', #{operatorName}, '%')</if>
+            <if test="actionTime != null "> and action_time = #{actionTime}</if>
+            <if test="actionRemark != null  and actionRemark != ''"> and action_remark = #{actionRemark}</if>
+        </where>
+    </select>
+    
+    <select id="selectGxtRepairOrderFlowById" parameterType="Long" resultMap="GxtRepairOrderFlowResult">
+        <include refid="selectGxtRepairOrderFlowVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertGxtRepairOrderFlow" parameterType="GxtRepairOrderFlow" useGeneratedKeys="true" keyProperty="id">
+        insert into gxt_repair_order_flow
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="orderId != null">order_id,</if>
+            <if test="orderCode != null and orderCode != ''">order_code,</if>
+            <if test="actionType != null and actionType != ''">action_type,</if>
+            <if test="fromStatus != null">from_status,</if>
+            <if test="toStatus != null and toStatus != ''">to_status,</if>
+            <if test="operatorId != null">operator_id,</if>
+            <if test="operatorName != null">operator_name,</if>
+            <if test="actionTime != null">action_time,</if>
+            <if test="actionRemark != null">action_remark,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="orderId != null">#{orderId},</if>
+            <if test="orderCode != null and orderCode != ''">#{orderCode},</if>
+            <if test="actionType != null and actionType != ''">#{actionType},</if>
+            <if test="fromStatus != null">#{fromStatus},</if>
+            <if test="toStatus != null and toStatus != ''">#{toStatus},</if>
+            <if test="operatorId != null">#{operatorId},</if>
+            <if test="operatorName != null">#{operatorName},</if>
+            <if test="actionTime != null">#{actionTime},</if>
+            <if test="actionRemark != null">#{actionRemark},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateGxtRepairOrderFlow" parameterType="GxtRepairOrderFlow">
+        update gxt_repair_order_flow
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="orderId != null">order_id = #{orderId},</if>
+            <if test="orderCode != null and orderCode != ''">order_code = #{orderCode},</if>
+            <if test="actionType != null and actionType != ''">action_type = #{actionType},</if>
+            <if test="fromStatus != null">from_status = #{fromStatus},</if>
+            <if test="toStatus != null and toStatus != ''">to_status = #{toStatus},</if>
+            <if test="operatorId != null">operator_id = #{operatorId},</if>
+            <if test="operatorName != null">operator_name = #{operatorName},</if>
+            <if test="actionTime != null">action_time = #{actionTime},</if>
+            <if test="actionRemark != null">action_remark = #{actionRemark},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteGxtRepairOrderFlowById" parameterType="Long">
+        delete from gxt_repair_order_flow where id = #{id}
+    </delete>
+
+    <delete id="deleteGxtRepairOrderFlowByIds" parameterType="String">
+        delete from gxt_repair_order_flow where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 216 - 0
ygtx-gxt/src/main/resources/mapper/gxt/GxtRepairOrderMapper.xml

@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ygtx.gxt.mapper.GxtRepairOrderMapper">
+    
+    <resultMap type="GxtRepairOrder" id="GxtRepairOrderResult">
+        <result property="id"    column="id"    />
+        <result property="workOrderProjectNo"    column="work_order_project_no"    />
+        <result property="workOrderStatus"    column="work_order_status"    />
+        <result property="gxtCenterId"    column="gxt_center_id"    />
+        <result property="gxtCenter"    column="gxt_center"    />
+        <result property="pcsStationId"    column="pcs_station_id"    />
+        <result property="pcsStationName"    column="pcs_station_name"    />
+        <result property="pcsDeviceId"    column="pcs_device_id"    />
+        <result property="pcsDeviceName"    column="pcs_device_name"    />
+        <result property="brand"    column="brand"    />
+        <result property="model"    column="model"    />
+        <result property="faultCode"    column="fault_code"    />
+        <result property="faultDesc"    column="fault_desc"    />
+        <result property="assignTime"    column="assign_time"    />
+        <result property="assignUserId"    column="assign_user_id"    />
+        <result property="assignUserName"    column="assign_user_name"    />
+        <result property="acceptTime"    column="accept_time"    />
+        <result property="acceptUserId"    column="accept_user_id"    />
+        <result property="acceptUserName"    column="accept_user_name"    />
+        <result property="realStartTime"    column="real_start_time"    />
+        <result property="realEndTime"    column="real_end_time"    />
+        <result property="teamLeaderId"    column="team_leader_id"    />
+        <result property="teamLeaderName"    column="team_leader_name"    />
+        <result property="workGroupMemberId"    column="work_group_member_id"    />
+        <result property="workGroupMemberName"    column="work_group_member_name"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+        <result property="content"    column="content"    />
+        <result property="planHour"    column="plan_hour"    />
+        <result property="priorityType"    column="priority_type"    />
+        <result property="score"    column="score"    />
+        <result property="reviewContent"    column="review_content"    />
+    </resultMap>
+
+    <sql id="selectGxtRepairOrderVo">
+        select id, work_order_project_no, work_order_status, gxt_center_id, gxt_center, pcs_station_id, pcs_station_name, pcs_device_id, pcs_device_name, brand, model, fault_code, fault_desc, assign_time, assign_user_id, assign_user_name, accept_time, accept_user_id, accept_user_name, real_start_time, real_end_time, team_leader_id, team_leader_name, work_group_member_id, work_group_member_name, create_by, create_time, update_by, update_time, remark, content, plan_hour, priority_type, score, review_content from gxt_repair_order
+    </sql>
+
+    <select id="selectGxtRepairOrderList" parameterType="GxtRepairOrder" resultMap="GxtRepairOrderResult">
+        <include refid="selectGxtRepairOrderVo"/>
+        <where>  
+            <if test="workOrderProjectNo != null  and workOrderProjectNo != ''"> and work_order_project_no = #{workOrderProjectNo}</if>
+            <if test="workOrderStatus != null  and workOrderStatus != ''"> and work_order_status = #{workOrderStatus}</if>
+            <if test="gxtCenterId != null "> and gxt_center_id = #{gxtCenterId}</if>
+            <if test="gxtCenter != null  and gxtCenter != ''"> and gxt_center = #{gxtCenter}</if>
+            <if test="pcsStationId != null "> and pcs_station_id = #{pcsStationId}</if>
+            <if test="pcsStationName != null  and pcsStationName != ''"> and pcs_station_name like concat('%', #{pcsStationName}, '%')</if>
+            <if test="pcsDeviceId != null "> and pcs_device_id = #{pcsDeviceId}</if>
+            <if test="pcsDeviceName != null  and pcsDeviceName != ''"> and pcs_device_name like concat('%', #{pcsDeviceName}, '%')</if>
+            <if test="brand != null  and brand != ''"> and brand = #{brand}</if>
+            <if test="model != null  and model != ''"> and model = #{model}</if>
+            <if test="faultCode != null  and faultCode != ''"> and fault_code = #{faultCode}</if>
+            <if test="faultDesc != null  and faultDesc != ''"> and fault_desc = #{faultDesc}</if>
+            <if test="assignTime != null "> and assign_time = #{assignTime}</if>
+            <if test="assignUserId != null "> and assign_user_id = #{assignUserId}</if>
+            <if test="assignUserName != null  and assignUserName != ''"> and assign_user_name like concat('%', #{assignUserName}, '%')</if>
+            <if test="acceptTime != null "> and accept_time = #{acceptTime}</if>
+            <if test="acceptUserId != null "> and accept_user_id = #{acceptUserId}</if>
+            <if test="acceptUserName != null  and acceptUserName != ''"> and accept_user_name like concat('%', #{acceptUserName}, '%')</if>
+            <if test="realStartTime != null "> and real_start_time = #{realStartTime}</if>
+            <if test="realEndTime != null "> and real_end_time = #{realEndTime}</if>
+            <if test="teamLeaderId != null "> and team_leader_id = #{teamLeaderId}</if>
+            <if test="teamLeaderName != null  and teamLeaderName != ''"> and team_leader_name like concat('%', #{teamLeaderName}, '%')</if>
+            <if test="workGroupMemberId != null "> and work_group_member_id = #{workGroupMemberId}</if>
+            <if test="workGroupMemberName != null  and workGroupMemberName != ''"> and work_group_member_name like concat('%', #{workGroupMemberName}, '%')</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="planHour != null "> and plan_hour = #{planHour}</if>
+            <if test="priorityType != null "> and priority_type = #{priorityType}</if>
+            <if test="score != null "> and score = #{score}</if>
+            <if test="reviewContent != null  and reviewContent != ''"> and review_content = #{reviewContent}</if>
+        </where>
+    </select>
+    
+    <select id="selectGxtRepairOrderById" parameterType="Long" resultMap="GxtRepairOrderResult">
+        <include refid="selectGxtRepairOrderVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertGxtRepairOrder" parameterType="GxtRepairOrder" useGeneratedKeys="true" keyProperty="id">
+        insert into gxt_repair_order
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="workOrderProjectNo != null and workOrderProjectNo != ''">work_order_project_no,</if>
+            <if test="workOrderStatus != null">work_order_status,</if>
+            <if test="gxtCenterId != null">gxt_center_id,</if>
+            <if test="gxtCenter != null">gxt_center,</if>
+            <if test="pcsStationId != null">pcs_station_id,</if>
+            <if test="pcsStationName != null">pcs_station_name,</if>
+            <if test="pcsDeviceId != null">pcs_device_id,</if>
+            <if test="pcsDeviceName != null">pcs_device_name,</if>
+            <if test="brand != null">brand,</if>
+            <if test="model != null">model,</if>
+            <if test="faultCode != null">fault_code,</if>
+            <if test="faultDesc != null">fault_desc,</if>
+            <if test="assignTime != null">assign_time,</if>
+            <if test="assignUserId != null">assign_user_id,</if>
+            <if test="assignUserName != null">assign_user_name,</if>
+            <if test="acceptTime != null">accept_time,</if>
+            <if test="acceptUserId != null">accept_user_id,</if>
+            <if test="acceptUserName != null">accept_user_name,</if>
+            <if test="realStartTime != null">real_start_time,</if>
+            <if test="realEndTime != null">real_end_time,</if>
+            <if test="teamLeaderId != null">team_leader_id,</if>
+            <if test="teamLeaderName != null">team_leader_name,</if>
+            <if test="workGroupMemberId != null">work_group_member_id,</if>
+            <if test="workGroupMemberName != null">work_group_member_name,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+            <if test="content != null">content,</if>
+            <if test="planHour != null">plan_hour,</if>
+            <if test="priorityType != null">priority_type,</if>
+            <if test="score != null">score,</if>
+            <if test="reviewContent != null">review_content,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="workOrderProjectNo != null and workOrderProjectNo != ''">#{workOrderProjectNo},</if>
+            <if test="workOrderStatus != null">#{workOrderStatus},</if>
+            <if test="gxtCenterId != null">#{gxtCenterId},</if>
+            <if test="gxtCenter != null">#{gxtCenter},</if>
+            <if test="pcsStationId != null">#{pcsStationId},</if>
+            <if test="pcsStationName != null">#{pcsStationName},</if>
+            <if test="pcsDeviceId != null">#{pcsDeviceId},</if>
+            <if test="pcsDeviceName != null">#{pcsDeviceName},</if>
+            <if test="brand != null">#{brand},</if>
+            <if test="model != null">#{model},</if>
+            <if test="faultCode != null">#{faultCode},</if>
+            <if test="faultDesc != null">#{faultDesc},</if>
+            <if test="assignTime != null">#{assignTime},</if>
+            <if test="assignUserId != null">#{assignUserId},</if>
+            <if test="assignUserName != null">#{assignUserName},</if>
+            <if test="acceptTime != null">#{acceptTime},</if>
+            <if test="acceptUserId != null">#{acceptUserId},</if>
+            <if test="acceptUserName != null">#{acceptUserName},</if>
+            <if test="realStartTime != null">#{realStartTime},</if>
+            <if test="realEndTime != null">#{realEndTime},</if>
+            <if test="teamLeaderId != null">#{teamLeaderId},</if>
+            <if test="teamLeaderName != null">#{teamLeaderName},</if>
+            <if test="workGroupMemberId != null">#{workGroupMemberId},</if>
+            <if test="workGroupMemberName != null">#{workGroupMemberName},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="content != null">#{content},</if>
+            <if test="planHour != null">#{planHour},</if>
+            <if test="priorityType != null">#{priorityType},</if>
+            <if test="score != null">#{score},</if>
+            <if test="reviewContent != null">#{reviewContent},</if>
+         </trim>
+    </insert>
+
+    <update id="updateGxtRepairOrder" parameterType="GxtRepairOrder">
+        update gxt_repair_order
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="workOrderProjectNo != null and workOrderProjectNo != ''">work_order_project_no = #{workOrderProjectNo},</if>
+            <if test="workOrderStatus != null">work_order_status = #{workOrderStatus},</if>
+            <if test="gxtCenterId != null">gxt_center_id = #{gxtCenterId},</if>
+            <if test="gxtCenter != null">gxt_center = #{gxtCenter},</if>
+            <if test="pcsStationId != null">pcs_station_id = #{pcsStationId},</if>
+            <if test="pcsStationName != null">pcs_station_name = #{pcsStationName},</if>
+            <if test="pcsDeviceId != null">pcs_device_id = #{pcsDeviceId},</if>
+            <if test="pcsDeviceName != null">pcs_device_name = #{pcsDeviceName},</if>
+            <if test="brand != null">brand = #{brand},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="faultCode != null">fault_code = #{faultCode},</if>
+            <if test="faultDesc != null">fault_desc = #{faultDesc},</if>
+            <if test="assignTime != null">assign_time = #{assignTime},</if>
+            <if test="assignUserId != null">assign_user_id = #{assignUserId},</if>
+            <if test="assignUserName != null">assign_user_name = #{assignUserName},</if>
+            <if test="acceptTime != null">accept_time = #{acceptTime},</if>
+            <if test="acceptUserId != null">accept_user_id = #{acceptUserId},</if>
+            <if test="acceptUserName != null">accept_user_name = #{acceptUserName},</if>
+            <if test="realStartTime != null">real_start_time = #{realStartTime},</if>
+            <if test="realEndTime != null">real_end_time = #{realEndTime},</if>
+            <if test="teamLeaderId != null">team_leader_id = #{teamLeaderId},</if>
+            <if test="teamLeaderName != null">team_leader_name = #{teamLeaderName},</if>
+            <if test="workGroupMemberId != null">work_group_member_id = #{workGroupMemberId},</if>
+            <if test="workGroupMemberName != null">work_group_member_name = #{workGroupMemberName},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="content != null">content = #{content},</if>
+            <if test="planHour != null">plan_hour = #{planHour},</if>
+            <if test="priorityType != null">priority_type = #{priorityType},</if>
+            <if test="score != null">score = #{score},</if>
+            <if test="reviewContent != null">review_content = #{reviewContent},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteGxtRepairOrderById" parameterType="Long">
+        delete from gxt_repair_order where id = #{id}
+    </delete>
+
+    <delete id="deleteGxtRepairOrderByIds" parameterType="String">
+        delete from gxt_repair_order where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 44 - 0
ygtx-ui/src/api/gxt/repairOrder.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询维修工单列表
+export function listRepairOrder(query) {
+  return request({
+    url: '/gxt/repairOrder/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询维修工单详细
+export function getRepairOrder(id) {
+  return request({
+    url: '/gxt/repairOrder/' + id,
+    method: 'get'
+  })
+}
+
+// 新增维修工单
+export function addRepairOrder(data) {
+  return request({
+    url: '/gxt/repairOrder',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改维修工单
+export function updateRepairOrder(data) {
+  return request({
+    url: '/gxt/repairOrder',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除维修工单
+export function delRepairOrder(id) {
+  return request({
+    url: '/gxt/repairOrder/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
ygtx-ui/src/api/gxt/repairOrderFlow.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询维修工单流转记录列表
+export function listRepairOrderFlow(query) {
+  return request({
+    url: '/gxt/repairOrderFlow/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询维修工单流转记录详细
+export function getRepairOrderFlow(id) {
+  return request({
+    url: '/gxt/repairOrderFlow/' + id,
+    method: 'get'
+  })
+}
+
+// 新增维修工单流转记录
+export function addRepairOrderFlow(data) {
+  return request({
+    url: '/gxt/repairOrderFlow',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改维修工单流转记录
+export function updateRepairOrderFlow(data) {
+  return request({
+    url: '/gxt/repairOrderFlow',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除维修工单流转记录
+export function delRepairOrderFlow(id) {
+  return request({
+    url: '/gxt/repairOrderFlow/' + id,
+    method: 'delete'
+  })
+}

+ 621 - 0
ygtx-ui/src/views/gxt/repairOrder/index.vue

@@ -0,0 +1,621 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="工单编码" prop="workOrderProjectNo">
+        <el-input
+          v-model="queryParams.workOrderProjectNo"
+          placeholder="请输入工单编码"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="维保中心ID" prop="gxtCenterId">
+        <el-input
+          v-model="queryParams.gxtCenterId"
+          placeholder="请输入维保中心ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="维保中心" prop="gxtCenter">
+        <el-input
+          v-model="queryParams.gxtCenter"
+          placeholder="请输入维保中心"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="风电场ID" prop="pcsStationId">
+        <el-input
+          v-model="queryParams.pcsStationId"
+          placeholder="请输入风电场ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="风电场" prop="pcsStationName">
+        <el-input
+          v-model="queryParams.pcsStationName"
+          placeholder="请输入风电场"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="风机设备ID" prop="pcsDeviceId">
+        <el-input
+          v-model="queryParams.pcsDeviceId"
+          placeholder="请输入风机设备ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="风机编号" prop="pcsDeviceName">
+        <el-input
+          v-model="queryParams.pcsDeviceName"
+          placeholder="请输入风机编号"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="风机品牌" prop="brand">
+        <el-input
+          v-model="queryParams.brand"
+          placeholder="请输入风机品牌"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="风机型号" prop="model">
+        <el-input
+          v-model="queryParams.model"
+          placeholder="请输入风机型号"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="故障代码" prop="faultCode">
+        <el-input
+          v-model="queryParams.faultCode"
+          placeholder="请输入故障代码"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="派单时间" prop="assignTime">
+        <el-date-picker clearable
+          v-model="queryParams.assignTime"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择派单时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="派单人ID" prop="assignUserId">
+        <el-input
+          v-model="queryParams.assignUserId"
+          placeholder="请输入派单人ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="派单人姓名" prop="assignUserName">
+        <el-input
+          v-model="queryParams.assignUserName"
+          placeholder="请输入派单人姓名"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="接单时间" prop="acceptTime">
+        <el-date-picker clearable
+          v-model="queryParams.acceptTime"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择接单时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="接单人ID" prop="acceptUserId">
+        <el-input
+          v-model="queryParams.acceptUserId"
+          placeholder="请输入接单人ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="接单人姓名" prop="acceptUserName">
+        <el-input
+          v-model="queryParams.acceptUserName"
+          placeholder="请输入接单人姓名"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="实际开始时间" prop="realStartTime">
+        <el-date-picker clearable
+          v-model="queryParams.realStartTime"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择实际开始时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="实际结束时间" prop="realEndTime">
+        <el-date-picker clearable
+          v-model="queryParams.realEndTime"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择实际结束时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="班组组长ID" prop="teamLeaderId">
+        <el-input
+          v-model="queryParams.teamLeaderId"
+          placeholder="请输入班组组长ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="班组组长姓名" prop="teamLeaderName">
+        <el-input
+          v-model="queryParams.teamLeaderName"
+          placeholder="请输入班组组长姓名"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="工作组成员ID" prop="workGroupMemberId">
+        <el-input
+          v-model="queryParams.workGroupMemberId"
+          placeholder="请输入工作组成员ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="工作组成员姓名" prop="workGroupMemberName">
+        <el-input
+          v-model="queryParams.workGroupMemberName"
+          placeholder="请输入工作组成员姓名"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="预计工时" prop="planHour">
+        <el-input
+          v-model="queryParams.planHour"
+          placeholder="请输入预计工时"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="评分" prop="score">
+        <el-input
+          v-model="queryParams.score"
+          placeholder="请输入评分"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="Plus"
+          @click="handleAdd"
+          v-hasPermi="['gxt:repairOrder:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="Edit"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['gxt:repairOrder:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="Delete"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['gxt:repairOrder:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="Download"
+          @click="handleExport"
+          v-hasPermi="['gxt:repairOrder:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="repairOrderList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="工单ID" align="center" prop="id" />
+      <el-table-column label="工单编码" align="center" prop="workOrderProjectNo" />
+      <el-table-column label="工单状态:draft-草稿,to_assign-待派单,assigned-已派单,accepted-已接单,processing-处理中,paused-暂停中,to_approve-待审批,suspended-已挂起,completed-已完成" align="center" prop="workOrderStatus" />
+      <el-table-column label="维保中心ID" align="center" prop="gxtCenterId" />
+      <el-table-column label="维保中心" align="center" prop="gxtCenter" />
+      <el-table-column label="风电场ID" align="center" prop="pcsStationId" />
+      <el-table-column label="风电场" align="center" prop="pcsStationName" />
+      <el-table-column label="风机设备ID" align="center" prop="pcsDeviceId" />
+      <el-table-column label="风机编号" align="center" prop="pcsDeviceName" />
+      <el-table-column label="风机品牌" align="center" prop="brand" />
+      <el-table-column label="风机型号" align="center" prop="model" />
+      <el-table-column label="故障代码" align="center" prop="faultCode" />
+      <el-table-column label="故障描述" align="center" prop="faultDesc" />
+      <el-table-column label="派单时间" align="center" prop="assignTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.assignTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="派单人ID" align="center" prop="assignUserId" />
+      <el-table-column label="派单人姓名" align="center" prop="assignUserName" />
+      <el-table-column label="接单时间" align="center" prop="acceptTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.acceptTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="接单人ID" align="center" prop="acceptUserId" />
+      <el-table-column label="接单人姓名" align="center" prop="acceptUserName" />
+      <el-table-column label="实际开始时间" align="center" prop="realStartTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.realStartTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="实际结束时间" align="center" prop="realEndTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.realEndTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="班组组长ID" align="center" prop="teamLeaderId" />
+      <el-table-column label="班组组长姓名" align="center" prop="teamLeaderName" />
+      <el-table-column label="工作组成员ID" align="center" prop="workGroupMemberId" />
+      <el-table-column label="工作组成员姓名" align="center" prop="workGroupMemberName" />
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="维保内容" align="center" prop="content" />
+      <el-table-column label="预计工时" align="center" prop="planHour" />
+      <el-table-column label="优先级" align="center" prop="priorityType" />
+      <el-table-column label="评分" align="center" prop="score" />
+      <el-table-column label="点评" align="center" prop="reviewContent" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template #default="scope">
+          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['gxt:repairOrder:edit']">修改</el-button>
+          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['gxt:repairOrder:remove']">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改维修工单对话框 -->
+    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
+      <el-form ref="repairOrderRef" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="工单编码" prop="workOrderProjectNo">
+          <el-input v-model="form.workOrderProjectNo" placeholder="请输入工单编码" />
+        </el-form-item>
+        <el-form-item label="维保中心ID" prop="gxtCenterId">
+          <el-input v-model="form.gxtCenterId" placeholder="请输入维保中心ID" />
+        </el-form-item>
+        <el-form-item label="维保中心" prop="gxtCenter">
+          <el-input v-model="form.gxtCenter" placeholder="请输入维保中心" />
+        </el-form-item>
+        <el-form-item label="风电场ID" prop="pcsStationId">
+          <el-input v-model="form.pcsStationId" placeholder="请输入风电场ID" />
+        </el-form-item>
+        <el-form-item label="风电场" prop="pcsStationName">
+          <el-input v-model="form.pcsStationName" placeholder="请输入风电场" />
+        </el-form-item>
+        <el-form-item label="风机设备ID" prop="pcsDeviceId">
+          <el-input v-model="form.pcsDeviceId" placeholder="请输入风机设备ID" />
+        </el-form-item>
+        <el-form-item label="风机编号" prop="pcsDeviceName">
+          <el-input v-model="form.pcsDeviceName" placeholder="请输入风机编号" />
+        </el-form-item>
+        <el-form-item label="风机品牌" prop="brand">
+          <el-input v-model="form.brand" placeholder="请输入风机品牌" />
+        </el-form-item>
+        <el-form-item label="风机型号" prop="model">
+          <el-input v-model="form.model" placeholder="请输入风机型号" />
+        </el-form-item>
+        <el-form-item label="故障代码" prop="faultCode">
+          <el-input v-model="form.faultCode" placeholder="请输入故障代码" />
+        </el-form-item>
+        <el-form-item label="故障描述" prop="faultDesc">
+          <el-input v-model="form.faultDesc" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="派单时间" prop="assignTime">
+          <el-date-picker clearable
+            v-model="form.assignTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="请选择派单时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="派单人ID" prop="assignUserId">
+          <el-input v-model="form.assignUserId" placeholder="请输入派单人ID" />
+        </el-form-item>
+        <el-form-item label="派单人姓名" prop="assignUserName">
+          <el-input v-model="form.assignUserName" placeholder="请输入派单人姓名" />
+        </el-form-item>
+        <el-form-item label="接单时间" prop="acceptTime">
+          <el-date-picker clearable
+            v-model="form.acceptTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="请选择接单时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="接单人ID" prop="acceptUserId">
+          <el-input v-model="form.acceptUserId" placeholder="请输入接单人ID" />
+        </el-form-item>
+        <el-form-item label="接单人姓名" prop="acceptUserName">
+          <el-input v-model="form.acceptUserName" placeholder="请输入接单人姓名" />
+        </el-form-item>
+        <el-form-item label="实际开始时间" prop="realStartTime">
+          <el-date-picker clearable
+            v-model="form.realStartTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="请选择实际开始时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="实际结束时间" prop="realEndTime">
+          <el-date-picker clearable
+            v-model="form.realEndTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="请选择实际结束时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="班组组长ID" prop="teamLeaderId">
+          <el-input v-model="form.teamLeaderId" placeholder="请输入班组组长ID" />
+        </el-form-item>
+        <el-form-item label="班组组长姓名" prop="teamLeaderName">
+          <el-input v-model="form.teamLeaderName" placeholder="请输入班组组长姓名" />
+        </el-form-item>
+        <el-form-item label="工作组成员ID" prop="workGroupMemberId">
+          <el-input v-model="form.workGroupMemberId" placeholder="请输入工作组成员ID" />
+        </el-form-item>
+        <el-form-item label="工作组成员姓名" prop="workGroupMemberName">
+          <el-input v-model="form.workGroupMemberName" placeholder="请输入工作组成员姓名" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="维保内容" prop="content">
+          <el-input v-model="form.content" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="预计工时" prop="planHour">
+          <el-input v-model="form.planHour" placeholder="请输入预计工时" />
+        </el-form-item>
+        <el-form-item label="评分" prop="score">
+          <el-input v-model="form.score" placeholder="请输入评分" />
+        </el-form-item>
+        <el-form-item label="点评" prop="reviewContent">
+          <el-input v-model="form.reviewContent" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">确 定</el-button>
+          <el-button @click="cancel">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="RepairOrder">
+import { listRepairOrder, getRepairOrder, delRepairOrder, addRepairOrder, updateRepairOrder } from "@/api/gxt/repairOrder"
+
+const { proxy } = getCurrentInstance()
+
+const repairOrderList = ref([])
+const open = ref(false)
+const loading = ref(true)
+const showSearch = ref(true)
+const ids = ref([])
+const single = ref(true)
+const multiple = ref(true)
+const total = ref(0)
+const title = ref("")
+
+const data = reactive({
+  form: {},
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+    workOrderProjectNo: null,
+    workOrderStatus: null,
+    gxtCenterId: null,
+    gxtCenter: null,
+    pcsStationId: null,
+    pcsStationName: null,
+    pcsDeviceId: null,
+    pcsDeviceName: null,
+    brand: null,
+    model: null,
+    faultCode: null,
+    faultDesc: null,
+    assignTime: null,
+    assignUserId: null,
+    assignUserName: null,
+    acceptTime: null,
+    acceptUserId: null,
+    acceptUserName: null,
+    realStartTime: null,
+    realEndTime: null,
+    teamLeaderId: null,
+    teamLeaderName: null,
+    workGroupMemberId: null,
+    workGroupMemberName: null,
+    content: null,
+    planHour: null,
+    priorityType: null,
+    score: null,
+    reviewContent: null
+  },
+  rules: {
+    workOrderProjectNo: [
+      { required: true, message: "工单编码不能为空", trigger: "blur" }
+    ],
+  }
+})
+
+const { queryParams, form, rules } = toRefs(data)
+
+/** 查询维修工单列表 */
+function getList() {
+  loading.value = true
+  listRepairOrder(queryParams.value).then(response => {
+    repairOrderList.value = response.rows
+    total.value = response.total
+    loading.value = false
+  })
+}
+
+// 取消按钮
+function cancel() {
+  open.value = false
+  reset()
+}
+
+// 表单重置
+function reset() {
+  form.value = {
+    id: null,
+    workOrderProjectNo: null,
+    workOrderStatus: null,
+    gxtCenterId: null,
+    gxtCenter: null,
+    pcsStationId: null,
+    pcsStationName: null,
+    pcsDeviceId: null,
+    pcsDeviceName: null,
+    brand: null,
+    model: null,
+    faultCode: null,
+    faultDesc: null,
+    assignTime: null,
+    assignUserId: null,
+    assignUserName: null,
+    acceptTime: null,
+    acceptUserId: null,
+    acceptUserName: null,
+    realStartTime: null,
+    realEndTime: null,
+    teamLeaderId: null,
+    teamLeaderName: null,
+    workGroupMemberId: null,
+    workGroupMemberName: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null,
+    remark: null,
+    content: null,
+    planHour: null,
+    priorityType: null,
+    score: null,
+    reviewContent: null
+  }
+  proxy.resetForm("repairOrderRef")
+}
+
+/** 搜索按钮操作 */
+function handleQuery() {
+  queryParams.value.pageNum = 1
+  getList()
+}
+
+/** 重置按钮操作 */
+function resetQuery() {
+  proxy.resetForm("queryRef")
+  handleQuery()
+}
+
+// 多选框选中数据
+function handleSelectionChange(selection) {
+  ids.value = selection.map(item => item.id)
+  single.value = selection.length != 1
+  multiple.value = !selection.length
+}
+
+/** 新增按钮操作 */
+function handleAdd() {
+  reset()
+  open.value = true
+  title.value = "添加维修工单"
+}
+
+/** 修改按钮操作 */
+function handleUpdate(row) {
+  reset()
+  const _id = row.id || ids.value
+  getRepairOrder(_id).then(response => {
+    form.value = response.data
+    open.value = true
+    title.value = "修改维修工单"
+  })
+}
+
+/** 提交按钮 */
+function submitForm() {
+  proxy.$refs["repairOrderRef"].validate(valid => {
+    if (valid) {
+      if (form.value.id != null) {
+        updateRepairOrder(form.value).then(response => {
+          proxy.$modal.msgSuccess("修改成功")
+          open.value = false
+          getList()
+        })
+      } else {
+        addRepairOrder(form.value).then(response => {
+          proxy.$modal.msgSuccess("新增成功")
+          open.value = false
+          getList()
+        })
+      }
+    }
+  })
+}
+
+/** 删除按钮操作 */
+function handleDelete(row) {
+  const _ids = row.id || ids.value
+  proxy.$modal.confirm('是否确认删除维修工单编号为"' + _ids + '"的数据项?').then(function() {
+    return delRepairOrder(_ids)
+  }).then(() => {
+    getList()
+    proxy.$modal.msgSuccess("删除成功")
+  }).catch(() => {})
+}
+
+/** 导出按钮操作 */
+function handleExport() {
+  proxy.download('gxt/repairOrder/export', {
+    ...queryParams.value
+  }, `repairOrder_${new Date().getTime()}.xlsx`)
+}
+
+getList()
+</script>