From 96928bdb692c62e01105d1d6a7f4bd04df5aa3c0 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 17 十月 2025 16:39:08 +0800 Subject: [PATCH] bug修改 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetHouseInspectionItemController.java | 344 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 331 insertions(+), 13 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 7b7e00a..58bd53f 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,16 +1,25 @@ package com.ruoyi.web.controller.api; +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; @@ -20,15 +29,29 @@ 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; /** @@ -42,6 +65,7 @@ @RestController @RequestMapping("/asset-house-inspection-item") @Api(tags = {"房屋巡检"}) +@Slf4j public class AssetHouseInspectionItemController { @Autowired private TokenService tokenService; @@ -52,13 +76,17 @@ @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("房屋巡检不分页列表") + @ApiOperation("房屋巡检分页列表") @PostMapping("/listAll") public R<PageInfo<AssetHouseInspectionVO>> listAll(@RequestBody AssetHouseInspectionRecordListQuery query) { String deptId = tokenService.getLoginUser().getDeptId(); @@ -86,7 +114,30 @@ 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() { @@ -128,13 +179,22 @@ @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.getInspectionResult()) { if (assetHouseInspectionDetail.getSubItemName().contains("门窗")) { houseCloseStatus.append(assetHouseInspectionDetail.getRemark()); } else if (assetHouseInspectionDetail.getSubItemName().contains("电表")) { @@ -154,32 +214,290 @@ } } } - if (StringUtils.hasLength(waterElectronicGasCloseStatus)){ + if (StringUtils.hasLength(waterElectronicGasCloseStatus)) { waterElectronicGasCloseStatus.deleteCharAt(waterElectronicGasCloseStatus.length() - 1); } - if (StringUtils.hasLength(innerStatus)){ + if (StringUtils.hasLength(innerStatus)) { innerStatus.deleteCharAt(innerStatus.length() - 1); } - if (StringUtils.hasLength(houseCloseStatus)){ + if (StringUtils.hasLength(houseCloseStatus)) { dto.setHouseCloseStatus(houseCloseStatus.toString()); - }else{ - dto.setInnerStatus("正常"); + } else { + dto.setHouseCloseStatus("正常"); } - if (StringUtils.hasLength(waterElectronicGasCloseStatus)){ + if (StringUtils.hasLength(waterElectronicGasCloseStatus)) { dto.setWaterElectronicGasCloseStatus(waterElectronicGasCloseStatus.toString()); - }else{ - dto.setInnerStatus("正常"); + } else { + dto.setWaterElectronicGasCloseStatus("正常"); } - if (StringUtils.hasLength(innerStatus)){ + if (StringUtils.hasLength(innerStatus)) { dto.setInnerStatus(innerStatus.toString()); - }else{ + } 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); + assetHouseInspectionRecord.setHouseCloseStatus("正常"); + }else{ + assetHouseInspectionDetail.setInspectionResult(false); + } + assetHouseInspectionDetails.add(assetHouseInspectionDetail); + String waterStatus1 = assetHouseInspectionImport.getWaterStatus1(); + String waterStatus2 = assetHouseInspectionImport.getWaterStatus2(); + String waterStatus3 = assetHouseInspectionImport.getWaterStatus3(); + + AssetHouseInspectionDetail assetHouseInspectionDetailWatter1 = new AssetHouseInspectionDetail(); + assetHouseInspectionDetailWatter1.setInspectionItemId(3); + assetHouseInspectionDetailWatter1.setItemName("水电气表关闭情况"); + assetHouseInspectionDetailWatter1.setSubItemId(4); + assetHouseInspectionDetailWatter1.setSubItemName("水表关闭情况"); + assetHouseInspectionDetailWatter1.setRemark(assetHouseInspectionImport.getWaterStatus1()); + + AssetHouseInspectionDetail assetHouseInspectionDetailWatter2 = new AssetHouseInspectionDetail(); + assetHouseInspectionDetailWatter2.setInspectionItemId(3); + assetHouseInspectionDetailWatter2.setItemName("水电气表关闭情况"); + assetHouseInspectionDetailWatter2.setSubItemId(5); + assetHouseInspectionDetailWatter2.setSubItemName("气表关闭情况"); + assetHouseInspectionDetailWatter2.setRemark(assetHouseInspectionImport.getWaterStatus2()); + + AssetHouseInspectionDetail assetHouseInspectionDetailWatter3 = new AssetHouseInspectionDetail(); + assetHouseInspectionDetailWatter3.setInspectionItemId(3); + assetHouseInspectionDetailWatter3.setItemName("水电气表关闭情况"); + assetHouseInspectionDetailWatter3.setSubItemId(6); + assetHouseInspectionDetailWatter3.setSubItemName("电表关闭情况"); + assetHouseInspectionDetailWatter3.setRemark(assetHouseInspectionImport.getWaterStatus3()); + if (waterStatus1.equals("正常")&&waterStatus2.equals("正常")&&waterStatus3.equals("正常")){ + assetHouseInspectionDetailWatter1.setInspectionResult(true); + assetHouseInspectionDetailWatter2.setInspectionResult(true); + assetHouseInspectionDetailWatter3.setInspectionResult(true); + assetHouseInspectionRecord.setWaterElectronicGasCloseStatus("正常"); + }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()); + } + assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter1); + assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter2); + assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter3); + + 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()); + + AssetHouseInspectionDetail assetHouseInspectionDetailInner2 = new AssetHouseInspectionDetail(); + assetHouseInspectionDetailInner2.setInspectionItemId(7); + assetHouseInspectionDetailInner2.setItemName("房屋内部情况"); + assetHouseInspectionDetailInner2.setSubItemId(9); + assetHouseInspectionDetailInner2.setSubItemName("设备损坏情况"); + assetHouseInspectionDetailInner2.setRemark(assetHouseInspectionImport.getWaterStatus2()); + + AssetHouseInspectionDetail assetHouseInspectionDetailInner3 = new AssetHouseInspectionDetail(); + assetHouseInspectionDetailInner3.setInspectionItemId(7); + assetHouseInspectionDetailInner3.setItemName("房屋内部情况"); + assetHouseInspectionDetailInner3.setSubItemId(10); + assetHouseInspectionDetailInner3.setSubItemName("墙壁掉灰情况"); + assetHouseInspectionDetailInner3.setRemark(assetHouseInspectionImport.getWaterStatus3()); + + AssetHouseInspectionDetail assetHouseInspectionDetailInner4 = new AssetHouseInspectionDetail(); + assetHouseInspectionDetailInner4.setInspectionItemId(7); + assetHouseInspectionDetailInner4.setItemName("房屋内部情况"); + assetHouseInspectionDetailInner4.setSubItemId(11); + assetHouseInspectionDetailInner4.setSubItemName("地瓷砖开裂情况"); + assetHouseInspectionDetailInner4.setRemark(assetHouseInspectionImport.getWaterStatus3()); + if (innerStatus1.equals("正常")&&innerStatus2.equals("正常")&&innerStatus3.equals("正常")&&innerStatus4.equals("正常")){ + assetHouseInspectionRecord.setInnerStatus("正常"); + assetHouseInspectionDetailInner4.setInspectionResult(true); + assetHouseInspectionDetailInner3.setInspectionResult(true); + assetHouseInspectionDetailInner2.setInspectionResult(true); + assetHouseInspectionDetailInner1.setInspectionResult(true); + + }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("|"); + assetHouseInspectionDetailInner2.setInspectionResult(false); + }else{ + assetHouseInspectionDetailInner2.setInspectionResult(true); + } + if (!innerStatus3.equals("正常")){ + stringBuilder.append(innerStatus3).append("|"); + assetHouseInspectionDetailInner3.setInspectionResult(false); + }else{ + assetHouseInspectionDetailInner3.setInspectionResult(true); + } + if (!innerStatus4.equals("正常")){ + stringBuilder.append(innerStatus4).append("|"); + assetHouseInspectionDetailInner4.setInspectionResult(false); + }else{ + assetHouseInspectionDetailInner4.setInspectionResult(true); + } + if (stringBuilder.length()>0){ + stringBuilder.deleteCharAt(stringBuilder.length()-1); + } + assetHouseInspectionRecord.setInnerStatus(stringBuilder.toString()); + } + assetHouseInspectionDetails.add(assetHouseInspectionDetailInner4); + assetHouseInspectionDetails.add(assetHouseInspectionDetailInner3); + assetHouseInspectionDetails.add(assetHouseInspectionDetailInner2); + assetHouseInspectionDetails.add(assetHouseInspectionDetailInner1); + + assetHouseInspectionRecord.setRemarks(assetHouseInspectionImport.getRemark()); + assetHouseInspectionRecordService.save(assetHouseInspectionRecord); + assetHouseInspectionDetails.add(assetHouseInspectionDetail); + for (AssetHouseInspectionDetail houseInspectionDetail : assetHouseInspectionDetails) { + houseInspectionDetail.setInspectionRecordId(assetHouseInspectionRecord.getId()); + } + assetHouseInspectionDetailService.saveBatch(assetHouseInspectionDetails); + + } + if(!result.isEmpty()){ + return R.fail(result.toString()); + } + return R.ok(); + } + @Log(title = "房屋巡检-删除", businessType = BusinessType.DELETE) @ApiOperation(value = "房屋巡检-删除") @DeleteMapping(value = "/delete") -- Gitblit v1.7.1