yeg
2026-09-02 4eaa4be4d2cbd2aa49d36a313ce71ad3e743db4a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
package com.ruoyi.web.controller.system;
 
import java.util.Collections;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.page.PageDomain;
import com.ruoyi.common.core.page.TableSupport;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.TDetectionCabinet;
import com.ruoyi.system.domain.vo.DiscoveredCabinetVo;
import com.ruoyi.system.service.ITDetectionCabinetService;
 
/**
 * 检测柜管理 Controller
 *
 * @author ruoyi
 */
@RestController
@RequestMapping("/system/detectionCabinet")
public class TDetectionCabinetController extends BaseController
{
    private final ITDetectionCabinetService detectionCabinetService;
 
    /**
     * 构造检测柜管理控制器。
     *
     * @param detectionCabinetService 检测柜业务服务
     */
    public TDetectionCabinetController(ITDetectionCabinetService detectionCabinetService)
    {
        this.detectionCabinetService = detectionCabinetService;
    }
 
    /**
     * 分页查询检测柜,可按设备综合信息、创建时间和运行状态筛选。
     *
     * @param detectionCabinet 查询条件
     * @return 分页结果
     */
    @PreAuthorize("@ss.hasPermi('system:detectionCabinet:list')")
    @GetMapping("/list")
    public TableDataInfo list(TDetectionCabinet detectionCabinet)
    {
        startPage();
        List<TDetectionCabinet> list = detectionCabinetService.selectDetectionCabinetList(detectionCabinet);
        return getDataTable(list);
    }
 
    /**
     * 保留原设备选择弹窗使用的分页接口,数据来自 Redis 发现候选。
     *
     * @return 可供选择的检测柜分页数据
     */
    @PreAuthorize("@ss.hasPermi('system:detectionCabinet:list')")
    @GetMapping("/discovered/list")
    public TableDataInfo discoveredList()
    {
        List<DiscoveredCabinetVo> devices = detectionCabinetService.selectDiscoveredCabinetList();
        PageDomain pageDomain = TableSupport.buildPageRequest();
        int pageNum = pageDomain.getPageNum() == null || pageDomain.getPageNum() < 1 ? 1 : pageDomain.getPageNum();
        int pageSize = pageDomain.getPageSize() == null || pageDomain.getPageSize() < 1 ? 10 : pageDomain.getPageSize();
        long offset = (long) (pageNum - 1) * pageSize;
        int fromIndex = (int) Math.min(offset, devices.size());
        int toIndex = (int) Math.min((long) fromIndex + pageSize, devices.size());
        List<DiscoveredCabinetVo> rows = fromIndex == toIndex
                ? Collections.emptyList()
                : devices.subList(fromIndex, toIndex);
        TableDataInfo result = new TableDataInfo(rows, devices.size());
        result.setCode(HttpStatus.SUCCESS);
        result.setMsg("查询成功");
        return result;
    }
 
    /**
     * 查询检测柜详情。
     *
     * @param cabinetId 检测柜主键
     * @return 检测柜详情
     */
    @PreAuthorize("@ss.hasPermi('system:detectionCabinet:query')")
    @GetMapping("/{cabinetId}")
    public AjaxResult getInfo(@PathVariable Long cabinetId)
    {
        return success(detectionCabinetService.selectDetectionCabinetById(cabinetId));
    }
 
    /**
     * 新增检测柜,创建人取当前登录用户。
     *
     * @param detectionCabinet 检测柜信息
     * @return 操作结果
     */
    @PreAuthorize("@ss.hasPermi('system:detectionCabinet:add')")
    @Log(title = "检测柜管理", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@Validated @RequestBody TDetectionCabinet detectionCabinet)
    {
        detectionCabinet.setCreateBy(getUsername());
        return toAjax(detectionCabinetService.insertDetectionCabinet(detectionCabinet));
    }
 
    /**
     * 修改检测柜基础信息,更新人取当前登录用户。
     *
     * @param detectionCabinet 检测柜信息
     * @return 操作结果
     */
    @PreAuthorize("@ss.hasPermi('system:detectionCabinet:edit')")
    @Log(title = "检测柜管理", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@Validated @RequestBody TDetectionCabinet detectionCabinet)
    {
        detectionCabinet.setUpdateBy(getUsername());
        return toAjax(detectionCabinetService.updateDetectionCabinet(detectionCabinet));
    }
 
    /**
     * 切换检测柜启禁用状态,测试中的检测柜不能禁用。
     *
     * @param detectionCabinet 检测柜主键及目标状态
     * @return 操作结果
     */
    @PreAuthorize("@ss.hasPermi('system:detectionCabinet:changeStatus')")
    @Log(title = "检测柜管理", businessType = BusinessType.UPDATE)
    @PutMapping("/changeStatus")
    public AjaxResult changeStatus(@RequestBody TDetectionCabinet detectionCabinet)
    {
        detectionCabinet.setUpdateBy(getUsername());
        return toAjax(detectionCabinetService.updateDetectionCabinetStatus(detectionCabinet));
    }
 
    /**
     * 批量取消检测柜登记,测试中的检测柜不能操作。
     *
     * @param cabinetIds 检测柜主键数组
     * @return 操作结果
     */
    @PreAuthorize("@ss.hasPermi('system:detectionCabinet:remove')")
    @Log(title = "检测柜管理", businessType = BusinessType.DELETE)
    @DeleteMapping("/{cabinetIds}")
    public AjaxResult remove(@PathVariable Long[] cabinetIds)
    {
        return toAjax(detectionCabinetService.deleteDetectionCabinetByIds(cabinetIds, getUsername()));
    }
}