From 4106bd3d06127ae542ef9ef975862eecc4ae1ff0 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期六, 11 十月 2025 18:43:26 +0800
Subject: [PATCH] 房屋巡检记录

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetHouseInspectionItemController.java |  177 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 175 insertions(+), 2 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetHouseInspectionItemController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetHouseInspectionItemController.java
index c5126e4..7b7e00a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetHouseInspectionItemController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetHouseInspectionItemController.java
@@ -1,8 +1,35 @@
 package com.ruoyi.web.controller.api;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+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>
@@ -14,7 +41,153 @@
  */
 @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();
+    }
 }
 

--
Gitblit v1.7.1