puzhibing
2026-08-17 df76ce9a356dfee029a63de4aae58c34dc9b7329
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
160
161
162
163
164
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.PageDomain;
import com.ruoyi.common.core.page.TableDataInfo;
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.IDetectionCabinetDiscoveryService;
import com.ruoyi.system.service.ITDetectionCabinetService;
 
/**
 * 检测柜管理 Controller
 *
 * @author ruoyi
 */
@RestController
@RequestMapping("/system/detectionCabinet")
public class TDetectionCabinetController extends BaseController
{
    private final ITDetectionCabinetService detectionCabinetService;
 
    private final IDetectionCabinetDiscoveryService detectionCabinetDiscoveryService;
 
    /**
     * 构造检测柜管理控制器。
     *
     * @param detectionCabinetService 检测柜业务服务
     * @param detectionCabinetDiscoveryService 检测柜设备发现服务
     */
    public TDetectionCabinetController(ITDetectionCabinetService detectionCabinetService,
            IDetectionCabinetDiscoveryService detectionCabinetDiscoveryService)
    {
        this.detectionCabinetService = detectionCabinetService;
        this.detectionCabinetDiscoveryService = detectionCabinetDiscoveryService;
    }
 
    /**
     * 分页查询检测柜,可按设备综合信息、创建时间和运行状态筛选。
     *
     * @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);
    }
 
    /**
     * 查询当前可发现的检测柜列表。
     *
     * @return 可发现检测柜分页数据
     */
    @PreAuthorize("@ss.hasPermi('system:detectionCabinet:list')")
    @GetMapping("/discovered/list")
    public TableDataInfo discoveredList()
    {
        List<DiscoveredCabinetVo> devices = detectionCabinetDiscoveryService.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();
        int fromIndex = Math.min((pageNum - 1) * pageSize, devices.size());
        int toIndex = Math.min(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()));
    }
}