From 2bdcf12109e62a731eb16e90b6e1c39a67853fb1 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 13 十月 2025 18:46:53 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-system/src/main/java/com/ruoyi/system/dto/AddAssetHouseInspection.java | 21 + ruoyi-system/src/main/resources/mapper/system/AssetHouseInspectionRecordMapper.xml | 23 + ruoyi-system/src/main/java/com/ruoyi/system/query/AssetHouseInspectionRecordListQuery.java | 25 ++ ruoyi-system/src/main/java/com/ruoyi/system/export/AssetHouseInspectionImport.java | 41 +++ ruoyi-system/src/main/java/com/ruoyi/system/vo/AssetHouseInspectionVO.java | 18 + ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetHouseInspectionItemController.java | 481 +++++++++++++++++++++++++++++++++++++++ ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetHouseInspectionRecordMapper.java | 8 ruoyi-system/src/main/java/com/ruoyi/system/model/AssetHouseInspectionItem.java | 4 ruoyi-system/src/main/java/com/ruoyi/system/model/AssetHouseInspectionRecord.java | 15 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetHouseInspectionRecordServiceImpl.java | 37 +++ ruoyi-system/src/main/java/com/ruoyi/system/service/AssetHouseInspectionRecordService.java | 5 11 files changed, 670 insertions(+), 8 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..9b641d3 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,58 @@ package com.ruoyi.web.controller.api; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import cn.hutool.json.JSONObject; +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.core.domain.entity.TDept; +import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.WebUtils; +import com.ruoyi.framework.web.service.TokenService; +import com.ruoyi.system.dto.AddAssetHouseInspection; +import com.ruoyi.system.dto.AddAssetRepairRequestDTO; +import com.ruoyi.system.export.AssetHouseInspectionImport; +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 io.swagger.models.auth.In; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Workbook; +import org.checkerframework.checker.units.qual.A; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * <p> @@ -14,7 +64,434 @@ */ @RestController @RequestMapping("/asset-house-inspection-item") +@Api(tags = {"房屋巡检"}) +@Slf4j public class AssetHouseInspectionItemController { + @Autowired + private TokenService tokenService; + @Autowired + private ISysUserService sysUserService; + @Autowired + private TDeptService deptService; + @Autowired + private AssetMainService assetMainService; + @Autowired + private AssetTypeService assetTypeService; + @Autowired + private AssetHouseInspectionItemService assetHouseInspectionItemService; + @Autowired + private AssetHouseInspectionDetailService assetHouseInspectionDetailService; + @Autowired + private AssetHouseInspectionRecordService assetHouseInspectionRecordService; + @Autowired + private AssetPropertyExtService assetPropertyExtService; + @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 = "/listAssetMain") + public R<List<AssetMain>> listAssetMain() { + String deptId = tokenService.getLoginUser().getDeptId(); + TDept dept = deptService.getById(tokenService.getLoginUser().getDeptId()); + List<Integer> deptIds = deptService.getAllSubDeptIds(deptId); + AssetType assetType = assetTypeService.lambdaQuery().like(AssetType::getTypeName, "不动"). + last("limit 1").one(); + if (dept.getDeptName().contains("资产管理")){ + List<AssetMain> list = assetMainService.lambdaQuery() + .eq(AssetMain::getAssetTypeId, assetType.getId()) + .list(); + return R.ok(list); + }else{ + if (deptIds.isEmpty()){ + return R.ok(new ArrayList<>()); + }else{ + List<AssetMain> list = assetMainService.lambdaQuery() + .eq(AssetMain::getAssetTypeId, assetType.getId()) + .in(AssetMain::getOwnershipDeptId, deptIds).list(); + return R.ok(list); + } + } + } + @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) { + AssetMain assetMain = assetMainService.getById(dto.getAssetMainId()); + AssetPropertyExt assetPropertyExt = assetPropertyExtService.lambdaQuery().eq(AssetPropertyExt::getAssetMainId, assetMain.getId()) + .last("limit 1").one(); + dto.setAssetCode(assetMain.getAssetCode()); + dto.setAssetName(assetMain.getAssetName()); + dto.setRoomNumber(assetPropertyExt.getRoomNumber()); + dto.setInspectionDate(LocalDate.now()); + int userId = tokenService.getLoginUser().getUserId().intValue(); + dto.setInspectionId(userId); + 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.setHouseCloseStatus("正常"); + } + if (StringUtils.hasLength(waterElectronicGasCloseStatus)) { + dto.setWaterElectronicGasCloseStatus(waterElectronicGasCloseStatus.toString()); + } else { + dto.setWaterElectronicGasCloseStatus("正常"); + } + if (StringUtils.hasLength(innerStatus)) { + dto.setInnerStatus(innerStatus.toString()); + } else { + dto.setInnerStatus("正常"); + } + + assetHouseInspectionRecordService.updateById(dto); + assetHouseInspectionDetailService.saveBatch(dto.getList()); + return R.ok(); + } + + @ApiOperation(value = "房屋巡检导入模板下载") + @GetMapping("/import-template") + public void importTemplate() { + + List<AssetHouseInspectionImport> assetHouseInspectionImports = new ArrayList<>(); + AssetHouseInspectionImport temp = new AssetHouseInspectionImport(); + assetHouseInspectionImports.add(temp); + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), AssetHouseInspectionImport.class, assetHouseInspectionImports); + HttpServletResponse response = WebUtils.response(); + ServletOutputStream outputStream = null; + try { + String fileName = URLEncoder.encode("房屋巡检导入模板.xls", "utf-8"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName); + response.setHeader("content-Type", "application/vnd.ms-excel"); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + outputStream = response.getOutputStream(); + workbook.write(outputStream); + } catch (IOException e) { + e.printStackTrace(); + System.out.println("房屋巡检导入模板下载失败!"); + } finally { + try { + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + @Log(title = "房屋巡检导入", businessType = BusinessType.INSERT) + @ApiOperation(value = "房屋巡检导入") + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) + @PostMapping("/import") + public R<String> importLocation(@RequestPart("file") MultipartFile file) { + Map<String, AssetMain> assetMainMap = assetMainService.list().stream().collect(Collectors.toMap(AssetMain::getAssetCode, assetMain -> assetMain)); + Map<String, SysUser> sysUserMap = sysUserService.selectAllList().stream().collect(Collectors.toMap(SysUser::getNickName, sysUser -> sysUser)); + Map<Integer, AssetPropertyExt> assetPropertyExtMap = assetPropertyExtService.list().stream().collect(Collectors.toMap(AssetPropertyExt::getAssetMainId, assetPropertyExt -> assetPropertyExt)); + List<AssetHouseInspectionItem> allItems = assetHouseInspectionItemService.list( + new LambdaQueryWrapper<AssetHouseInspectionItem>() + .eq(AssetHouseInspectionItem::getDisabled, 0) + ); + List<AssetHouseInspectionDetail> assetHouseInspectionDetails = new ArrayList<>(); + ImportParams params = new ImportParams(); + params.setHeadRows(1); //表头行数 + InputStream inputStream = null; + List<AssetHouseInspectionImport> assetHouseInspectionImports; + try { + inputStream = file.getInputStream(); + assetHouseInspectionImports = ExcelImportUtil.importExcel(inputStream, + AssetHouseInspectionImport.class, params); + } catch (Exception e) { + e.printStackTrace(); + log.error("房屋巡检导入失败:{}", e.getMessage()); + throw new ServiceException("房屋巡检导入失败!"); + } finally { + try { + inputStream.close(); + } catch (IOException e) { + throw new ServiceException(e.getMessage()); + } + } + if (CollectionUtils.isEmpty(assetHouseInspectionImports)) { + throw new ServiceException("房屋巡检数据为空!"); + } + JSONObject result = new JSONObject(); + for (AssetHouseInspectionImport assetHouseInspectionImport : assetHouseInspectionImports) { + AssetHouseInspectionRecord assetHouseInspectionRecord = new AssetHouseInspectionRecord(); + AssetMain assetMain = assetMainMap.get(assetHouseInspectionImport.getAssetCode()); + if (assetMain==null){ + result.append("根据资产编码:[", assetHouseInspectionImport.getAssetCode()+"]未查询到资产"); + continue; + } + assetHouseInspectionRecord.setAssetMainId(assetMain.getId()); + SysUser sysUser = sysUserMap.get(assetHouseInspectionImport.getNickName()); + if (sysUser==null){ + result.append("根据巡检人名称:[", assetHouseInspectionImport.getNickName()+"]未查询到巡检人"); + continue; + } + assetHouseInspectionRecord.setInspectionId(sysUser.getUserId().intValue()); + assetHouseInspectionRecord.setAssetCode(assetMain.getAssetCode()); + assetHouseInspectionRecord.setAssetName(assetMain.getAssetName()); + AssetPropertyExt assetPropertyExt = assetPropertyExtMap.get(assetMain.getId()); + if (assetPropertyExt!=null){ + assetHouseInspectionRecord.setRoomNumber(assetPropertyExt.getRoomNumber()); + } + if (StringUtils.hasLength(assetHouseInspectionImport.getInspectionDate())){ + LocalDate parse = LocalDate.parse(assetHouseInspectionImport.getInspectionDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")); + assetHouseInspectionRecord.setInspectionDate(parse); + }else{ + result.append("未填写巡检日期:[", "未填写巡检日期"+"]"); + continue; + } + + + assetHouseInspectionRecord.setHouseCloseStatus(assetHouseInspectionImport.getHouseCloseStatus()); + AssetHouseInspectionDetail assetHouseInspectionDetail = new AssetHouseInspectionDetail(); + assetHouseInspectionDetail.setInspectionItemId(1); + assetHouseInspectionDetail.setItemName("房屋关闭情况"); + assetHouseInspectionDetail.setSubItemId(2); + assetHouseInspectionDetail.setSubItemName("门窗关闭情况"); + assetHouseInspectionDetail.setRemark(assetHouseInspectionImport.getHouseCloseStatus()); + if (assetHouseInspectionImport.getHouseCloseStatus().equals("正常")){ + assetHouseInspectionDetail.setInspectionResult(true); + }else{ + assetHouseInspectionDetail.setInspectionResult(false); + } + assetHouseInspectionDetails.add(assetHouseInspectionDetail); + String waterStatus1 = assetHouseInspectionImport.getWaterStatus1(); + String waterStatus2 = assetHouseInspectionImport.getWaterStatus2(); + String waterStatus3 = assetHouseInspectionImport.getWaterStatus3(); + assetHouseInspectionRecord.setWaterElectronicGasCloseStatus("正常"); + AssetHouseInspectionDetail assetHouseInspectionDetailWatter1 = new AssetHouseInspectionDetail(); + assetHouseInspectionDetailWatter1.setInspectionItemId(3); + assetHouseInspectionDetailWatter1.setItemName("水电气表关闭情况"); + assetHouseInspectionDetailWatter1.setSubItemId(4); + assetHouseInspectionDetailWatter1.setSubItemName("水表关闭情况"); + assetHouseInspectionDetailWatter1.setRemark(assetHouseInspectionImport.getWaterStatus1()); + assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter1); + + AssetHouseInspectionDetail assetHouseInspectionDetailWatter2 = new AssetHouseInspectionDetail(); + assetHouseInspectionDetailWatter2.setInspectionItemId(3); + assetHouseInspectionDetailWatter2.setItemName("水电气表关闭情况"); + assetHouseInspectionDetailWatter2.setSubItemId(5); + assetHouseInspectionDetailWatter2.setSubItemName("气表关闭情况"); + assetHouseInspectionDetailWatter2.setRemark(assetHouseInspectionImport.getWaterStatus2()); + assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter2); + + AssetHouseInspectionDetail assetHouseInspectionDetailWatter3 = new AssetHouseInspectionDetail(); + assetHouseInspectionDetailWatter3.setInspectionItemId(3); + assetHouseInspectionDetailWatter3.setItemName("水电气表关闭情况"); + assetHouseInspectionDetailWatter3.setSubItemId(6); + assetHouseInspectionDetailWatter3.setSubItemName("电表关闭情况"); + assetHouseInspectionDetailWatter3.setRemark(assetHouseInspectionImport.getWaterStatus3()); + assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter3); + if (waterStatus1.equals("正常")&&waterStatus2.equals("正常")&&waterStatus3.equals("正常")){ + assetHouseInspectionDetailWatter2.setInspectionResult(true); + assetHouseInspectionDetailWatter3.setInspectionResult(true); + }else{ + StringBuilder stringBuilder = new StringBuilder(); + if (!waterStatus1.equals("正常")){ + stringBuilder.append(waterStatus1).append("|"); + assetHouseInspectionDetailWatter1.setInspectionResult(false); + }else{ + assetHouseInspectionDetailWatter1.setInspectionResult(true); + } + if (!waterStatus2.equals("正常")){ + stringBuilder.append(waterStatus2).append("|"); + assetHouseInspectionDetailWatter2.setInspectionResult(false); + }else{ + assetHouseInspectionDetailWatter2.setInspectionResult(true); + } + if (!waterStatus3.equals("正常")){ + stringBuilder.append(waterStatus3).append("|"); + assetHouseInspectionDetailWatter3.setInspectionResult(false); + }else{ + assetHouseInspectionDetailWatter3.setInspectionResult(true); + } + if (stringBuilder.length()>0){ + stringBuilder.deleteCharAt(stringBuilder.length()-1); + } + assetHouseInspectionRecord.setInnerStatus(stringBuilder.toString()); + } + String innerStatus1 = assetHouseInspectionImport.getInnerStatus1(); + String innerStatus2 = assetHouseInspectionImport.getInnerStatus2(); + String innerStatus3 = assetHouseInspectionImport.getInnerStatus3(); + String innerStatus4 = assetHouseInspectionImport.getInnerStatus4(); + AssetHouseInspectionDetail assetHouseInspectionDetailInner1 = new AssetHouseInspectionDetail(); + assetHouseInspectionDetailInner1.setInspectionItemId(7); + assetHouseInspectionDetailInner1.setItemName("房屋内部情况"); + assetHouseInspectionDetailInner1.setSubItemId(8); + assetHouseInspectionDetailInner1.setSubItemName("墙壁漏水情况"); + assetHouseInspectionDetailInner1.setRemark(assetHouseInspectionImport.getWaterStatus1()); + assetHouseInspectionDetails.add(assetHouseInspectionDetailInner1); + + AssetHouseInspectionDetail assetHouseInspectionDetailInner2 = new AssetHouseInspectionDetail(); + assetHouseInspectionDetailInner2.setInspectionItemId(7); + assetHouseInspectionDetailInner2.setItemName("房屋内部情况"); + assetHouseInspectionDetailInner2.setSubItemId(9); + assetHouseInspectionDetailInner2.setSubItemName("设备损坏情况"); + assetHouseInspectionDetailInner2.setRemark(assetHouseInspectionImport.getWaterStatus2()); + assetHouseInspectionDetails.add(assetHouseInspectionDetailInner2); + + AssetHouseInspectionDetail assetHouseInspectionDetailInner3 = new AssetHouseInspectionDetail(); + assetHouseInspectionDetailInner3.setInspectionItemId(7); + assetHouseInspectionDetailInner3.setItemName("房屋内部情况"); + assetHouseInspectionDetailInner3.setSubItemId(10); + assetHouseInspectionDetailInner3.setSubItemName("墙壁掉灰情况"); + assetHouseInspectionDetailInner3.setRemark(assetHouseInspectionImport.getWaterStatus3()); + assetHouseInspectionDetails.add(assetHouseInspectionDetailInner3); + + AssetHouseInspectionDetail assetHouseInspectionDetailInner4 = new AssetHouseInspectionDetail(); + assetHouseInspectionDetailInner4.setInspectionItemId(7); + assetHouseInspectionDetailInner4.setItemName("房屋内部情况"); + assetHouseInspectionDetailInner4.setSubItemId(11); + assetHouseInspectionDetailInner4.setSubItemName("地瓷砖开裂情况"); + assetHouseInspectionDetailInner4.setRemark(assetHouseInspectionImport.getWaterStatus3()); + assetHouseInspectionDetails.add(assetHouseInspectionDetailInner4); + if (innerStatus1.equals("正常")&&innerStatus2.equals("正常")&&innerStatus3.equals("正常")&&innerStatus4.equals("正常")){ + assetHouseInspectionRecord.setInnerStatus("正常"); + }else{ + StringBuilder stringBuilder = new StringBuilder(); + if (!innerStatus1.equals("正常")){ + stringBuilder.append(innerStatus1).append("|"); + assetHouseInspectionDetailInner1.setInspectionResult(false); + }else{ + assetHouseInspectionDetailInner1.setInspectionResult(true); + } + if (!innerStatus2.equals("正常")){ + stringBuilder.append(innerStatus2).append("|"); + assetHouseInspectionDetailInner1.setInspectionResult(false); + }else{ + assetHouseInspectionDetailInner1.setInspectionResult(true); + } + if (!innerStatus3.equals("正常")){ + stringBuilder.append(innerStatus3).append("|"); + assetHouseInspectionDetailInner1.setInspectionResult(false); + }else{ + assetHouseInspectionDetailInner1.setInspectionResult(true); + } + if (!innerStatus4.equals("正常")){ + stringBuilder.append(innerStatus4).append("|"); + assetHouseInspectionDetailInner1.setInspectionResult(false); + }else{ + assetHouseInspectionDetailInner1.setInspectionResult(true); + } + if (stringBuilder.length()>0){ + stringBuilder.deleteCharAt(stringBuilder.length()-1); + } + assetHouseInspectionRecord.setInnerStatus(stringBuilder.toString()); + } + assetHouseInspectionRecord.setRemarks(assetHouseInspectionImport.getRemark()); + assetHouseInspectionRecordService.save(assetHouseInspectionRecord); + assetHouseInspectionDetails.add(assetHouseInspectionDetail); + for (AssetHouseInspectionDetail houseInspectionDetail : assetHouseInspectionDetails) { + houseInspectionDetail.setInspectionRecordId(assetHouseInspectionRecord.getId()); + } + assetHouseInspectionDetailService.saveBatch(assetHouseInspectionDetails); + + } + 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(); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/AddAssetHouseInspection.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/AddAssetHouseInspection.java new file mode 100644 index 0000000..32b3e45 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/AddAssetHouseInspection.java @@ -0,0 +1,21 @@ +package com.ruoyi.system.dto; + +import com.ruoyi.system.model.*; +import com.ruoyi.system.vo.AssetRepairListVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(value = "新增编辑巡检记录DTO") +public class AddAssetHouseInspection extends AssetHouseInspectionRecord { + + + + @ApiModelProperty(value = "巡检详情列表") + private List<AssetHouseInspectionDetail> list; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/AssetHouseInspectionImport.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/AssetHouseInspectionImport.java new file mode 100644 index 0000000..81e1e1b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/AssetHouseInspectionImport.java @@ -0,0 +1,41 @@ +package com.ruoyi.system.export; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel(value = "房屋巡检导入excel") +public class AssetHouseInspectionImport implements Serializable { + + @Excel(name = "资产编码",width = 20) + private String assetCode; + @Excel(name = "资产名称",width = 20) + private String assetName; + @Excel(name = "门窗关闭情况",width = 20) + private String houseCloseStatus; + @Excel(name = "水表关闭情况",width = 20) + private String waterStatus1; + @Excel(name = "气表关闭情况",width = 20) + private String waterStatus2; + @Excel(name = "电表关闭情况",width = 20) + private String waterStatus3; + @Excel(name = "墙壁漏水情况",width = 20) + private String innerStatus1; + @Excel(name = "设备损坏情况",width = 20) + private String innerStatus2; + @Excel(name = "墙壁掉灰情况",width = 20) + private String innerStatus3; + @Excel(name = "地瓷砖开裂情况",width = 20) + private String innerStatus4; + @Excel(name = "巡检备注",width = 20) + private String remark; + @Excel(name = "巡检日期",width = 20) + private String inspectionDate; + @Excel(name = "巡检人",width = 20) + private String nickName; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetHouseInspectionRecordMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetHouseInspectionRecordMapper.java index 96f2b45..d45ce34 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetHouseInspectionRecordMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetHouseInspectionRecordMapper.java @@ -1,7 +1,14 @@ package com.ruoyi.system.mapper; +import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.model.AssetHouseInspectionRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.system.query.AssetHouseInspectionRecordListQuery; +import com.ruoyi.system.vo.AssetHouseInspectionVO; +import com.ruoyi.system.vo.AssetRepairRequestVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * <p> @@ -13,4 +20,5 @@ */ public interface AssetHouseInspectionRecordMapper extends BaseMapper<AssetHouseInspectionRecord> { + List<AssetHouseInspectionVO> pageList(@Param("query")AssetHouseInspectionRecordListQuery query, @Param("pageInfo")PageInfo<AssetHouseInspectionVO> pageInfo); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetHouseInspectionItem.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetHouseInspectionItem.java index 78776da..73f70bb 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetHouseInspectionItem.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetHouseInspectionItem.java @@ -12,6 +12,7 @@ import java.io.Serializable; import java.time.LocalDateTime; +import java.util.List; /** * <p> @@ -69,6 +70,9 @@ @TableField("disabled") @TableLogic private Boolean disabled; + @ApiModelProperty("子项") + @TableField(exist = false) + private List<AssetHouseInspectionItem> children; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetHouseInspectionRecord.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetHouseInspectionRecord.java index 9384d32..343158e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetHouseInspectionRecord.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetHouseInspectionRecord.java @@ -37,6 +37,9 @@ @ApiModelProperty(value = "资产主表ID,关联asset_main表") @TableField("asset_main_id") private Integer assetMainId; + @ApiModelProperty(value = "巡检人id") + @TableField("inspection_id") + private Integer inspectionId; @ApiModelProperty(value = "资产编号(冗余字段)") @TableField("asset_code") @@ -54,17 +57,17 @@ @TableField("inspection_date") private LocalDate inspectionDate; - @ApiModelProperty(value = "房屋关闭情况:1-正常、0-异常") + @ApiModelProperty(value = "新增不传 列表使用 房屋关闭情况 ") @TableField("house_close_status") - private Boolean houseCloseStatus; + private String houseCloseStatus; - @ApiModelProperty(value = "水电气关闭情况:1-正常、0-异常") + @ApiModelProperty(value = "新增不传 列表使用 水电气关闭情况 ") @TableField("water_electronic_gas_close_status") - private Boolean waterElectronicGasCloseStatus; + private String waterElectronicGasCloseStatus; - @ApiModelProperty(value = "内部情况:1-正常、0-异常") + @ApiModelProperty(value = "新增不传 列表使用 内部情况 ") @TableField("inner_status") - private Boolean innerStatus; + private String innerStatus; @ApiModelProperty(value = "巡检备注") @TableField("remarks") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetHouseInspectionRecordListQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetHouseInspectionRecordListQuery.java new file mode 100644 index 0000000..3475896 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetHouseInspectionRecordListQuery.java @@ -0,0 +1,25 @@ +package com.ruoyi.system.query; + +import com.ruoyi.common.core.domain.BasePage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(value = "房屋巡检分页列表query") +public class AssetHouseInspectionRecordListQuery extends BasePage { + + @ApiModelProperty(value = "巡检人名称") + private String nickName; + @ApiModelProperty(value = "资产名称") + private String assetMainName; + @ApiModelProperty(value = "开始时间") + private String startTime; + @ApiModelProperty(value = "结束时间") + private String endTime; + + @ApiModelProperty(value = "巡检人ids 前端忽略") + private List<Long> userIds; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetHouseInspectionRecordService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetHouseInspectionRecordService.java index 29a42b9..bf3c381 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetHouseInspectionRecordService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetHouseInspectionRecordService.java @@ -1,7 +1,11 @@ package com.ruoyi.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.model.AssetHouseInspectionRecord; +import com.ruoyi.system.query.AssetHouseInspectionRecordListQuery; +import com.ruoyi.system.vo.AssetHouseInspectionVO; +import com.ruoyi.system.vo.AssetRepairRequestVO; /** * <p> @@ -13,4 +17,5 @@ */ public interface AssetHouseInspectionRecordService extends IService<AssetHouseInspectionRecord> { + PageInfo<AssetHouseInspectionVO> pageList(AssetHouseInspectionRecordListQuery query); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetHouseInspectionRecordServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetHouseInspectionRecordServiceImpl.java index 4b8b3ea..7690813 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetHouseInspectionRecordServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetHouseInspectionRecordServiceImpl.java @@ -1,10 +1,27 @@ package com.ruoyi.system.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.basic.PageInfo; +import com.ruoyi.common.core.domain.entity.TDept; +import com.ruoyi.system.mapper.AssetHouseInspectionDetailMapper; +import com.ruoyi.system.mapper.AssetHouseInspectionItemMapper; import com.ruoyi.system.mapper.AssetHouseInspectionRecordMapper; +import com.ruoyi.system.model.AssetHouseInspectionDetail; +import com.ruoyi.system.model.AssetHouseInspectionItem; import com.ruoyi.system.model.AssetHouseInspectionRecord; +import com.ruoyi.system.query.AssetHouseInspectionRecordListQuery; import com.ruoyi.system.service.AssetHouseInspectionRecordService; +import com.ruoyi.system.vo.AssetHouseInspectionVO; +import com.ruoyi.system.vo.AssetRepairRequestVO; +import com.ruoyi.system.vo.system.ApprovalVO; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * <p> @@ -17,4 +34,24 @@ @Service public class AssetHouseInspectionRecordServiceImpl extends ServiceImpl<AssetHouseInspectionRecordMapper, AssetHouseInspectionRecord> implements AssetHouseInspectionRecordService { + @Autowired + private AssetHouseInspectionDetailMapper assetHouseInspectionDetailMapper; + @Autowired + private AssetHouseInspectionItemMapper assetHouseInspectionItemMapper; + @Override + public PageInfo<AssetHouseInspectionVO> pageList(AssetHouseInspectionRecordListQuery query) { +// List<AssetHouseInspectionItem> assetHouseInspectionItems = assetHouseInspectionItemMapper.selectList(null); + PageInfo<AssetHouseInspectionVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); + List<AssetHouseInspectionVO> list = this.baseMapper.pageList(query,pageInfo); + +// List<Integer> inspectionIds = list.stream().map(AssetHouseInspectionRecord::getId).collect(Collectors.toList()); +// if (!inspectionIds.isEmpty()){ +// Map<Integer, List<AssetHouseInspectionDetail>> detailMaps = assetHouseInspectionDetailMapper.selectList( +// new LambdaQueryWrapper<AssetHouseInspectionDetail>() +// .in(AssetHouseInspectionDetail::getInspectionRecordId, inspectionIds) +// ).stream().collect(Collectors.groupingBy(AssetHouseInspectionDetail::getInspectionRecordId)); +// } + pageInfo.setRecords(list); + return pageInfo; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/AssetHouseInspectionVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/AssetHouseInspectionVO.java new file mode 100644 index 0000000..607591f --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/AssetHouseInspectionVO.java @@ -0,0 +1,18 @@ +package com.ruoyi.system.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.ruoyi.system.model.AssetHouseInspectionRecord; +import com.ruoyi.system.model.AssetRepairRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "房屋巡检分页返回VO") +public class AssetHouseInspectionVO extends AssetHouseInspectionRecord { + @ApiModelProperty(value = "房号") + private String roomNumber; + @ApiModelProperty(value = "巡检人名称") + private String nickName; + +} diff --git a/ruoyi-system/src/main/resources/mapper/system/AssetHouseInspectionRecordMapper.xml b/ruoyi-system/src/main/resources/mapper/system/AssetHouseInspectionRecordMapper.xml index d79b758..251dd49 100644 --- a/ruoyi-system/src/main/resources/mapper/system/AssetHouseInspectionRecordMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/AssetHouseInspectionRecordMapper.xml @@ -25,5 +25,28 @@ <sql id="Base_Column_List"> id, asset_main_id, asset_code, asset_name, room_number, inspection_date, house_close_status, water_electronic_gas_close_status, inner_status, remarks, create_time, create_by, update_time, update_by, disabled </sql> + <select id="pageList" resultType="com.ruoyi.system.vo.AssetHouseInspectionVO"> + select t1.*,t2.nick_name nickName,t3.room_number as roomNumber from asset_house_inspection_record t1 + left join sys_user t2 on t1.inspection_id = t2.user_id + left join asset_property_ext t3 on t1.asset_main_id = t3.asset_main_id + where 1=1 + + <if test="query.assetMainName != null and query.assetMainName != ''"> + AND (t1.asset_name like concat('%', #{query.assetMainName}, '%')) + </if> + <if test="query.userIds != null and query.userIds.size() > 0"> + AND t1.inspection_id IN + <foreach item="item" index="index" collection="query.userIds" open="(" separator="," close=")"> + #{item} + </foreach> + </if> + <if test="query.startTime != null and query.startTime != ''"> + AND t1.inspection_date >= #{query.startTime} + </if> + <if test="query.endTime != null and query.endTime != ''"> + AND t1.inspection_date <= #{query.endTime} + </if> + AND t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} + </select> </mapper> -- Gitblit v1.7.1