From bb5ce8ef60a63815f222716c40111bd045464689 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 30 九月 2025 18:32:10 +0800
Subject: [PATCH] 资产维修记录列表查询接口

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetRepairRecordController.java    |   51 +++++++++++++++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetRepairRecordServiceImpl.java |   10 +++++
 ruoyi-system/src/main/resources/mapper/system/AssetRepairRecordMapper.xml                  |   28 ++++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetRepairRecordMapper.java            |   12 ++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/AssetRepairRecordService.java          |   10 +++++
 ruoyi-system/src/main/java/com/ruoyi/system/model/AssetRepairRecord.java                   |    7 +++
 6 files changed, 117 insertions(+), 1 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetRepairRecordController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetRepairRecordController.java
index 4d9a524..4d6acc7 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetRepairRecordController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetRepairRecordController.java
@@ -1,6 +1,22 @@
 package com.ruoyi.web.controller.api;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.system.constants.AssetDeptConstant;
+import com.ruoyi.system.query.AssetRepairRecordPageQuery;
+import com.ruoyi.system.service.AssetRepairRecordService;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.vo.asset.AssetRepairRecordPageVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -13,8 +29,43 @@
  * @since 2025-09-15
  */
 @RestController
+@Api(tags = {"资产维修记录相关接口"})
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
 @RequestMapping("/asset-repair-record")
 public class AssetRepairRecordController {
 
+    private final AssetRepairRecordService assetRepairRecordService;
+    private final ISysUserService sysUserService;
+
+    @ApiOperation("获取维修记录分页列表")
+    @PostMapping("/page-list")
+    public R<IPage<AssetRepairRecordPageVO>> getRepairRecordPageList(@RequestBody AssetRepairRecordPageQuery pageQuery) {
+        // 数据权限:超级管理员/资产管理部查看所有数据,其他部门查看当前及下级部门的数据
+        Long userId = SecurityUtils.getUserId();
+        boolean isAdmin = SecurityUtils.isAdmin(userId);
+
+        if (!isAdmin) {
+            try {
+                // 获取当前用户的部门名称
+                String deptName = sysUserService.selectUserById(userId).getDept().getDeptName();
+
+                // 非超级管理员且非资产管理部,设置部门权限
+                if (!AssetDeptConstant.ASSET_DEPARTMENT_NAME.equals(deptName)) {
+                    pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId()));
+                }
+            } catch (Exception e) {
+                // 如果获取部门信息失败,默认设置部门权限
+                try {
+                    pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId()));
+                } catch (Exception ex) {
+                    // ignore parse, leave null if cannot parse
+                }
+            }
+        }
+
+        IPage<AssetRepairRecordPageVO> page = assetRepairRecordService.getRepairRecordPageList(pageQuery);
+        return R.ok(page);
+    }
+
 }
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetRepairRecordMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetRepairRecordMapper.java
index 807fb33..43e8c4e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetRepairRecordMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetRepairRecordMapper.java
@@ -1,11 +1,15 @@
 package com.ruoyi.system.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.system.model.AssetRepairRecord;
+import com.ruoyi.system.query.AssetRepairRecordPageQuery;
 import com.ruoyi.system.query.AssetRepairRequestListQuery;
 import com.ruoyi.system.query.AssetStatisticsListQuery;
 import com.ruoyi.system.vo.AssetRepairRequestVO;
+import com.ruoyi.system.vo.asset.AssetRepairRecordPageVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -22,4 +26,12 @@
 
     List<AssetRepairRequestVO> pageList(@Param("query") AssetRepairRequestListQuery query, @Param("pageInfo") PageInfo<AssetRepairRequestVO> pageInfo);
 
+    /**
+     * 分页查询维修记录列表
+     * @param page 分页参数
+     * @param pageQuery 查询条件
+     * @return 分页结果
+     */
+    IPage<AssetRepairRecordPageVO> getRepairRecordPageList(Page<AssetRepairRecordPageVO> page, @Param("query") AssetRepairRecordPageQuery pageQuery);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetRepairRecord.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetRepairRecord.java
index d63b2c2..42b6d44 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetRepairRecord.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetRepairRecord.java
@@ -10,6 +10,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 /**
@@ -36,7 +37,7 @@
     @TableField("repair_request_id")
     private Integer repairRequestId;
 
-    @ApiModelProperty(value = "报修单号")
+    @ApiModelProperty(value = "维修单号")
     @TableField("repair_no")
     private String repairNo;
 
@@ -68,6 +69,10 @@
     @TableField("repair_status")
     private Boolean repairStatus;
 
+    @ApiModelProperty(value = "维修费用")
+    @TableField("total_fee")
+    private BigDecimal totalFee;
+
     @ApiModelProperty(value = "创建时间")
     @TableField("create_time")
     private LocalDateTime createTime;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetRepairRecordService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetRepairRecordService.java
index 240be6c..0ea19c3 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetRepairRecordService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetRepairRecordService.java
@@ -1,12 +1,15 @@
 package com.ruoyi.system.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.system.model.AssetRepairRecord;
+import com.ruoyi.system.query.AssetRepairRecordPageQuery;
 import com.ruoyi.system.query.AssetRepairRequestListQuery;
 import com.ruoyi.system.query.AssetStatisticsListQuery;
 import com.ruoyi.system.vo.AssetRepairRequestVO;
 import com.ruoyi.system.vo.AssetStatisticsVO;
+import com.ruoyi.system.vo.asset.AssetRepairRecordPageVO;
 
 /**
  * <p>
@@ -20,4 +23,11 @@
 
     PageInfo<AssetRepairRequestVO> pageList(AssetRepairRequestListQuery query);
 
+    /**
+     * 获取维修记录分页列表
+     * @param pageQuery 查询参数
+     * @return 分页结果
+     */
+    IPage<AssetRepairRecordPageVO> getRepairRecordPageList(AssetRepairRecordPageQuery pageQuery);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetRepairRecordServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetRepairRecordServiceImpl.java
index c5acfe3..a1ebac1 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetRepairRecordServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetRepairRecordServiceImpl.java
@@ -1,16 +1,20 @@
 package com.ruoyi.system.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.system.mapper.AssetRepairRecordMapper;
 import com.ruoyi.system.model.AssetRepairRecord;
 import com.ruoyi.system.model.AssetType;
+import com.ruoyi.system.query.AssetRepairRecordPageQuery;
 import com.ruoyi.system.query.AssetRepairRequestListQuery;
 import com.ruoyi.system.query.AssetStatisticsListQuery;
 import com.ruoyi.system.service.AssetRepairRecordService;
 import com.ruoyi.system.vo.AssetIdleListVO;
 import com.ruoyi.system.vo.AssetRepairRequestVO;
 import com.ruoyi.system.vo.AssetStatisticsVO;
+import com.ruoyi.system.vo.asset.AssetRepairRecordPageVO;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -35,4 +39,10 @@
         pageInfo.setRecords(list);
         return pageInfo;
     }
+
+    @Override
+    public IPage<AssetRepairRecordPageVO> getRepairRecordPageList(AssetRepairRecordPageQuery pageQuery) {
+        Page<AssetRepairRecordPageVO> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
+        return this.baseMapper.getRepairRecordPageList(page, pageQuery);
+    }
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/AssetRepairRecordMapper.xml b/ruoyi-system/src/main/resources/mapper/system/AssetRepairRecordMapper.xml
index a1b48a1..facab9f 100644
--- a/ruoyi-system/src/main/resources/mapper/system/AssetRepairRecordMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/AssetRepairRecordMapper.xml
@@ -36,4 +36,32 @@
         order by t1.repair_status, t1.urgency_level asc
     </select>
 
+    <!-- 分页查询维修记录列表 -->
+    <select id="getRepairRecordPageList" resultType="com.ruoyi.system.vo.asset.AssetRepairRecordPageVO">
+        SELECT
+            arr.repair_no AS repairNo,
+            arr.title,
+            pt.type_name AS assetTypeFirstLevel,
+            ct.type_name AS assetTypeSecondLevel,
+            u.nick_name AS reporterName,
+            arr.total_fee AS totalFee,
+            arr.repair_time AS repairTime,
+            arr.repair_status AS repairStatus
+        FROM asset_repair_record arr
+        LEFT JOIN asset_repair_request req ON arr.repair_request_id = req.id
+        LEFT JOIN sys_user u ON req.reporter_id = u.user_id
+        LEFT JOIN asset_type ct ON arr.asset_type_id = ct.id
+        LEFT JOIN asset_type pt ON ct.parent_id = pt.id
+        LEFT JOIN t_dept d ON u.dept_id = d.id
+        WHERE arr.disabled = 0
+        <if test="query.keyword != null and query.keyword != ''">
+            AND (arr.repair_no LIKE CONCAT('%', #{query.keyword}, '%')
+                 OR arr.title LIKE CONCAT('%', #{query.keyword}, '%'))
+        </if>
+        <if test="query.deptId != null">
+            AND (d.id = #{query.deptId} OR FIND_IN_SET(#{query.deptId}, d.parent_id))
+        </if>
+        ORDER BY arr.create_time DESC
+    </select>
+
 </mapper>

--
Gitblit v1.7.1