无关风月
9 天以前 4106bd3d06127ae542ef9ef975862eecc4ae1ff0
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
package com.ruoyi.web.controller.api;
 
 
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.AddAssetHouseInspection;
import com.ruoyi.system.dto.AddAssetRepairRequestDTO;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.AssetHouseInspectionRecordListQuery;
import com.ruoyi.system.query.AssetRepairRequestListQuery;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.AssetHouseInspectionVO;
import com.ruoyi.system.vo.AssetRepairRequestVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * <p>
 * 房屋巡检项维护表 前端控制器
 * </p>
 *
 * @author WuGuanFengYue
 * @since 2025-09-15
 */
@RestController
@RequestMapping("/asset-house-inspection-item")
@Api(tags = {"房屋巡检"})
public class AssetHouseInspectionItemController {
    @Autowired
    private TokenService tokenService;
    @Autowired
    private ISysUserService sysUserService;
    @Autowired
    private TDeptService deptService;
    @Autowired
    private AssetMainService assetMainService;
    @Autowired
    private AssetHouseInspectionItemService assetHouseInspectionItemService;
    @Autowired
    private AssetHouseInspectionDetailService assetHouseInspectionDetailService;
    @Autowired
    private AssetHouseInspectionRecordService assetHouseInspectionRecordService;
 
    @ApiOperation("房屋巡检不分页列表")
    @PostMapping("/listAll")
    public R<PageInfo<AssetHouseInspectionVO>> listAll(@RequestBody AssetHouseInspectionRecordListQuery query) {
        String deptId = tokenService.getLoginUser().getDeptId();
        List<Integer> deptIds = deptService.getAllSubDeptIds(deptId);
        List<SysUser> sysUsers = sysUserService.selectAllList();
        if (deptIds.isEmpty()) {
            return R.ok(new PageInfo<>());
        } else {
            List<Long> userIds = sysUsers.stream().filter(e -> deptIds.contains(Integer.valueOf(e.getDeptId())))
                    .map(SysUser::getUserId).collect(Collectors.toList());
            if (userIds.isEmpty()) {
                return R.ok(new PageInfo<>());
            }
            if (StringUtils.hasLength(query.getNickName())) {
                List<SysUser> users = sysUsers.stream().filter(e -> e.getNickName().contains(query.getNickName())).collect(Collectors.toList());
                List<Long> queryUserIds = users.stream().map(SysUser::getUserId).collect(Collectors.toList());
                // userIds和queryUserIds取交集
                userIds = userIds.stream().filter(queryUserIds::contains).collect(Collectors.toList());
                if (userIds.isEmpty()) {
                    return R.ok(new PageInfo<>());
                }
            }
            query.setUserIds(userIds);
        }
        PageInfo<AssetHouseInspectionVO> res = assetHouseInspectionRecordService.pageList(query);
        return R.ok(res);
    }
 
    @ApiOperation(value = "巡检子项树状结构")
    @PostMapping(value = "/listItem")
    public R<List<AssetHouseInspectionItem>> listItem() {
        // 查询所有未被禁用的巡检项
        List<AssetHouseInspectionItem> allItems = assetHouseInspectionItemService.list(
                new LambdaQueryWrapper<AssetHouseInspectionItem>()
                        .eq(AssetHouseInspectionItem::getDisabled, 0)
        );
        // 构建树形结构
        List<AssetHouseInspectionItem> tree = buildTree(allItems, 0);
 
        return R.ok(tree);
    }
 
    /**
     * 构建树形结构
     *
     * @param items    所有巡检项
     * @param parentId 父级ID
     * @return 树形结构列表
     */
    private List<AssetHouseInspectionItem> buildTree(List<AssetHouseInspectionItem> items, int parentId) {
        List<AssetHouseInspectionItem> children = new ArrayList<>();
 
        for (AssetHouseInspectionItem item : items) {
            if (item.getParentId() != null && item.getParentId() == parentId) {
                // 递归设置子节点
                List<AssetHouseInspectionItem> childItems = buildTree(items, item.getId());
                item.setChildren(childItems);
                children.add(item);
            }
        }
 
        return children;
    }
 
    @Log(title = "房屋巡检-新增", businessType = BusinessType.INSERT)
    @ApiOperation(value = "房屋巡检新增")
    @PostMapping(value = "/add")
    @Transactional
    public R add(@RequestBody AddAssetHouseInspection dto) {
        assetHouseInspectionRecordService.save(dto);
        StringBuilder houseCloseStatus = new StringBuilder();
        StringBuilder waterElectronicGasCloseStatus = new StringBuilder();
        StringBuilder innerStatus = new StringBuilder();
        for (AssetHouseInspectionDetail assetHouseInspectionDetail : dto.getList()) {
            assetHouseInspectionDetail.setInspectionRecordId(dto.getId());
            if (assetHouseInspectionDetail.getInspectionResult()) {
                if (assetHouseInspectionDetail.getSubItemName().contains("门窗")) {
                    houseCloseStatus.append(assetHouseInspectionDetail.getRemark());
                } else if (assetHouseInspectionDetail.getSubItemName().contains("电表")) {
                    waterElectronicGasCloseStatus.append(assetHouseInspectionDetail.getRemark()).append("|");
                } else if (assetHouseInspectionDetail.getSubItemName().contains("气表")) {
                    waterElectronicGasCloseStatus.append(assetHouseInspectionDetail.getRemark()).append("|");
                } else if (assetHouseInspectionDetail.getSubItemName().contains("水表")) {
                    waterElectronicGasCloseStatus.append(assetHouseInspectionDetail.getRemark()).append("|");
                } else if (assetHouseInspectionDetail.getSubItemName().contains("瓷砖")) {
                    innerStatus.append(assetHouseInspectionDetail.getRemark()).append("|");
                } else if (assetHouseInspectionDetail.getSubItemName().contains("墙壁")) {
                    innerStatus.append(assetHouseInspectionDetail.getRemark()).append("|");
                } else if (assetHouseInspectionDetail.getSubItemName().contains("设备")) {
                    innerStatus.append(assetHouseInspectionDetail.getRemark()).append("|");
                } else if (assetHouseInspectionDetail.getSubItemName().contains("漏水")) {
                    innerStatus.append(assetHouseInspectionDetail.getRemark()).append("|");
                }
            }
        }
        if (StringUtils.hasLength(waterElectronicGasCloseStatus)){
            waterElectronicGasCloseStatus.deleteCharAt(waterElectronicGasCloseStatus.length() - 1);
        }
        if (StringUtils.hasLength(innerStatus)){
            innerStatus.deleteCharAt(innerStatus.length() - 1);
        }
        if (StringUtils.hasLength(houseCloseStatus)){
            dto.setHouseCloseStatus(houseCloseStatus.toString());
        }else{
            dto.setInnerStatus("正常");
        }
        if (StringUtils.hasLength(waterElectronicGasCloseStatus)){
            dto.setWaterElectronicGasCloseStatus(waterElectronicGasCloseStatus.toString());
        }else{
            dto.setInnerStatus("正常");
        }
        if (StringUtils.hasLength(innerStatus)){
            dto.setInnerStatus(innerStatus.toString());
        }else{
            dto.setInnerStatus("正常");
        }
        assetHouseInspectionRecordService.updateById(dto);
        assetHouseInspectionDetailService.saveBatch(dto.getList());
        return R.ok();
    }
 
    @Log(title = "房屋巡检-删除", businessType = BusinessType.DELETE)
    @ApiOperation(value = "房屋巡检-删除")
    @DeleteMapping(value = "/delete")
    public R delete(@RequestParam String ids) {
        assetHouseInspectionDetailService.remove(new LambdaQueryWrapper<AssetHouseInspectionDetail>()
                .in(AssetHouseInspectionDetail::getInspectionRecordId, Arrays.asList(ids.split(","))));
        assetHouseInspectionRecordService.removeBatchByIds(Arrays.asList(ids.split(",")));
        return R.ok();
    }
}