ソースを参照

feat(property): 添加房屋信息详情功能

- 新增房屋信息详情接口和相关服务方法
- 实现根据房屋ID查询合同信息、租户信息、设备信息等功能
- 创建 HouseInfoVo 类封装房屋详情信息
- 添加相关单元测试
nahida 10 ヶ月 前
コミット
783ccebe2a

+ 6 - 10
src/main/java/com/zksy/controller/property/AContractInfoController.java

@@ -1,26 +1,16 @@
 package com.zksy.controller.property;
 
-import cn.hutool.core.date.DateTime;
-import com.zksy.property.domain.AAssetManagement;
 import com.zksy.property.domain.AContractInfo;
-import com.zksy.property.service.AAssetManagementService;
 import com.zksy.property.service.AContractInfoService;
 import com.zksy.utils.AjaxResult;
-import com.zksy.utils.ExcelExportUtil;
-import com.zksy.utils.ExcelImportUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.Arrays;
 
-import static com.zksy.utils.util.generateAssetNumber;
-
 /**
  * @author Administrator
  * @version 1.0
@@ -66,4 +56,10 @@ public class AContractInfoController {
         return service.removeBatchByIds(Arrays.asList(ids)) ? AjaxResult.success("删除成功") : AjaxResult.error("删除失败");
     }
 
+    @GetMapping("/getBySimplifiedHouseId")
+    @ApiOperation(value = "根据 simplifiedHouseId 查询合同信息")
+    public AjaxResult getBySimplifiedHouseId(String simplifiedHouseId){
+        return AjaxResult.success(service.getBySimplifiedHouseId(simplifiedHouseId));
+    }
+
 }

+ 6 - 2
src/main/java/com/zksy/controller/property/ASimplifiedHouseInfoController.java

@@ -1,8 +1,6 @@
 package com.zksy.controller.property;
 
-import com.zksy.property.domain.AMaintenanceRecords;
 import com.zksy.property.domain.ASimplifiedHouseInfo;
-import com.zksy.property.service.AMaintenanceRecordsService;
 import com.zksy.property.service.ASimplifiedHouseInfoService;
 import com.zksy.utils.AjaxResult;
 import io.swagger.annotations.Api;
@@ -59,4 +57,10 @@ public class ASimplifiedHouseInfoController {
         return service.removeBatchByIds(Arrays.asList(ids)) ? AjaxResult.success("删除成功") : AjaxResult.error("删除失败");
     }
 
+    @GetMapping("/getHouseDetailInfo")
+    @ApiOperation(value = "房屋信息详情")
+    public AjaxResult getHouseDetailInfo(String houseId){
+        return AjaxResult.success(service.getHouseDetailInfo(houseId));
+    }
+
 }

+ 6 - 2
src/main/java/com/zksy/controller/property/ATenantInfoController.java

@@ -1,8 +1,6 @@
 package com.zksy.controller.property;
 
-import com.zksy.property.domain.ASimplifiedHouseInfo;
 import com.zksy.property.domain.ATenantInfo;
-import com.zksy.property.service.ASimplifiedHouseInfoService;
 import com.zksy.property.service.ATenantInfoService;
 import com.zksy.utils.AjaxResult;
 import io.swagger.annotations.Api;
@@ -59,4 +57,10 @@ public class ATenantInfoController {
         return service.removeBatchByIds(Arrays.asList(ids)) ? AjaxResult.success("删除成功") : AjaxResult.error("删除失败");
     }
 
+    @GetMapping("/getBySimplifiedHouseId")
+    @ApiOperation(value = "根据房屋ID查询")
+    public AjaxResult getBySimplifiedHouseId(String simplifiedHouseId){
+        return AjaxResult.success(service.getBySimplifiedHouseId(simplifiedHouseId));
+    }
+
 }

+ 6 - 12
src/main/java/com/zksy/property/domain/vo/HouseInfoVo.java

@@ -4,6 +4,8 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.util.List;
+
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
@@ -12,6 +14,10 @@ public class HouseInfoVo {
     private String address;//地址
     private String status ;//状态 (未租/已租)
     private String rentRange ;//租金范围
+    private TenantInfo tenantInfo;//租户信息
+    private HouseInfo houseInfo;//房间详细信息
+    private List<DeviceInfo> deviceInfo;//设备信息
+    private ContractInfo contractInfo;//合同信息
 
     @Data
     @NoArgsConstructor
@@ -46,18 +52,6 @@ public class HouseInfoVo {
         private String devicePrice;//设备价格
     }
 
-    @Data
-    @NoArgsConstructor
-    @AllArgsConstructor
-    public static class MaintenanceRecords{
-        private String maintenanceDate;//维护时间
-        private String maintenanceContent;//维护内容
-        private String maintenanceType;//维护类型
-        private String maintenanceCost;//维护费用
-        private String maintenancePerson;//维护人员
-        private String maintenanceStatus;//维护状态
-    }
-
     @Data
     @NoArgsConstructor
     @AllArgsConstructor

+ 17 - 0
src/main/java/com/zksy/property/domain/vo/MaintenanceRecordVo.java

@@ -0,0 +1,17 @@
+package com.zksy.property.domain.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class MaintenanceRecordVo {
+    private String maintenanceDate;//维护时间
+    private String maintenanceContent;//维护内容
+    private String maintenanceType;//维护类型
+    private String maintenanceCost;//维护费用
+    private String maintenancePerson;//维护人员
+    private String maintenanceStatus;//维护状态
+}

+ 2 - 1
src/main/java/com/zksy/property/service/AContractInfoService.java

@@ -1,8 +1,8 @@
 package com.zksy.property.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.zksy.property.domain.AContractInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zksy.property.domain.AContractInfo;
 
 import java.util.List;
 
@@ -15,4 +15,5 @@ public interface AContractInfoService extends IService<AContractInfo> {
     Page<AContractInfo> findByPage(long pageNum, long pageSize, String contractNumber,String contractDate,String contractStatus);
     List<AContractInfo> getAContractInfoList(String contractNumber,String contractDate,String contractStatus);
 
+    AContractInfo getBySimplifiedHouseId(String simplifiedHouseId);
 }

+ 3 - 1
src/main/java/com/zksy/property/service/ASimplifiedHouseInfoService.java

@@ -1,8 +1,9 @@
 package com.zksy.property.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.zksy.property.domain.ASimplifiedHouseInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zksy.property.domain.ASimplifiedHouseInfo;
+import com.zksy.property.domain.vo.HouseInfoVo;
 
 import java.util.List;
 
@@ -15,4 +16,5 @@ public interface ASimplifiedHouseInfoService extends IService<ASimplifiedHouseIn
     Page<ASimplifiedHouseInfo> findByPage(long pageNum, long pageSize, String assetType,String building,String houseName,String status);
     List<ASimplifiedHouseInfo> getASimplifiedHouseInfoList(String assetType,String building,String houseName,String status);
 
+    HouseInfoVo getHouseDetailInfo(String simplifiedHouseId);
 }

+ 2 - 1
src/main/java/com/zksy/property/service/ATenantInfoService.java

@@ -1,8 +1,8 @@
 package com.zksy.property.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.zksy.property.domain.ATenantInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zksy.property.domain.ATenantInfo;
 
 import java.util.List;
 
@@ -15,4 +15,5 @@ public interface ATenantInfoService extends IService<ATenantInfo> {
     Page<ATenantInfo> findByPage(long pageNum, long pageSize, String tenantName, String tenantIdCard, String tenantInDate);
     List<ATenantInfo> getATenantInfoList(String tenantName, String tenantIdCard, String tenantInDate);
 
+    ATenantInfo getBySimplifiedHouseId(String simplifiedHouseId);
 }

+ 8 - 1
src/main/java/com/zksy/property/service/impl/AContractInfoServiceImpl.java

@@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zksy.property.domain.AContractInfo;
-import com.zksy.property.service.AContractInfoService;
 import com.zksy.property.mapper.AContractInfoMapper;
+import com.zksy.property.service.AContractInfoService;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -40,6 +40,13 @@ public class AContractInfoServiceImpl extends ServiceImpl<AContractInfoMapper, A
         List<AContractInfo> list = this.list(queryWrapper);
         return list;
     }
+
+    @Override
+    public AContractInfo getBySimplifiedHouseId(String simplifiedHouseId) {
+        LambdaQueryWrapper<AContractInfo> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AContractInfo::getSimplifiedHouseId,simplifiedHouseId);
+        return this.getOne(queryWrapper);
+    }
 }
 
 

+ 93 - 2
src/main/java/com/zksy/property/service/impl/ASimplifiedHouseInfoServiceImpl.java

@@ -3,12 +3,16 @@ package com.zksy.property.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zksy.property.domain.ASimplifiedHouseInfo;
-import com.zksy.property.service.ASimplifiedHouseInfoService;
+import com.zksy.property.domain.*;
+import com.zksy.property.domain.vo.HouseInfoVo;
 import com.zksy.property.mapper.ASimplifiedHouseInfoMapper;
+import com.zksy.property.service.*;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.format.DateTimeFormatter;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
 * @author Administrator
@@ -39,6 +43,93 @@ public class ASimplifiedHouseInfoServiceImpl extends ServiceImpl<ASimplifiedHous
         List<ASimplifiedHouseInfo> list = this.list(queryWrapper);
         return list;
     }
+
+    @Autowired
+    private AHouseInfoDetailService aHouseInfoDetailService;
+    @Autowired
+    private ATenantInfoService aTenantInfoService;
+    @Autowired
+    private ADeviceInfoService aDeviceInfoService;
+    @Autowired
+    private AContractInfoService aContractInfoService;
+
+    @Override
+    public HouseInfoVo getHouseDetailInfo(String simplifiedHouseId) {
+        var vo = new HouseInfoVo();
+        ASimplifiedHouseInfo aSimplifiedHouseInfo = this.getById(simplifiedHouseId);
+        if(aSimplifiedHouseInfo == null){
+            throw new RuntimeException("数据不存在");
+        }
+        vo.setHouseName(aSimplifiedHouseInfo.getHouseName());
+        vo.setAddress(aSimplifiedHouseInfo.getAddress());
+        vo.setStatus(aSimplifiedHouseInfo.getStatus());
+        vo.setRentRange(aSimplifiedHouseInfo.getRentRange());
+
+        AHouseInfoDetail houseInfoDetail = aHouseInfoDetailService.getBySimplifiedHouseId(simplifiedHouseId);
+        HouseInfoVo.HouseInfo houseInfo = new HouseInfoVo.HouseInfo();
+        houseInfo.setFloor(aSimplifiedHouseInfo.getFloor());
+        if(houseInfoDetail == null){
+            houseInfo.setArea(null);
+            houseInfo.setHouseType(null);
+            houseInfo.setIntroduce(null);
+        }else {
+            houseInfo.setArea(houseInfoDetail.getArea());
+            houseInfo.setHouseType(houseInfoDetail.getHouseType());
+            houseInfo.setIntroduce(houseInfoDetail.getIntroduce());
+        }
+        vo.setHouseInfo(houseInfo);
+
+        ATenantInfo tenantInfo = aTenantInfoService.getBySimplifiedHouseId(simplifiedHouseId);
+        HouseInfoVo.TenantInfo tenant = new HouseInfoVo.TenantInfo();
+        if(tenantInfo == null){
+            tenant.setTenantName(null);
+            tenant.setTenantIdCard(null);
+            tenant.setTenantInDate(null);
+            tenant.setTenantTime(null);
+            tenant.setTenantRent(null);
+            tenant.setTenantNumber(null);
+        }else {
+            tenant.setTenantName(tenantInfo.getTenantName());
+            tenant.setTenantIdCard(tenantInfo.getTenantIdCard());
+            tenant.setTenantInDate(tenantInfo.getTenantInDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+            tenant.setTenantTime(tenantInfo.getTenantTime());
+            tenant.setTenantRent(tenantInfo.getTenantRent().toString());
+            tenant.setTenantNumber(tenantInfo.getTenantNumber());
+        }
+        vo.setTenantInfo(tenant);
+
+        List<ADeviceInfo> deviceInfos = aDeviceInfoService.getBySimplifiedHouseId(simplifiedHouseId);
+        List<HouseInfoVo.DeviceInfo> deviceInfoList = deviceInfos.stream().map(deviceInfo -> {
+            HouseInfoVo.DeviceInfo device = new HouseInfoVo.DeviceInfo();
+            device.setDeviceName(deviceInfo.getDeviceName());
+            device.setDeviceType(deviceInfo.getDeviceType());
+            device.setDeviceBrand(deviceInfo.getDeviceBrand());
+            device.setDeviceNumber(deviceInfo.getDeviceNumber());
+            device.setDevicePrice(deviceInfo.getDevicePrice());
+            return device;
+        }).collect(Collectors.toList());
+        vo.setDeviceInfo(deviceInfoList);
+
+        AContractInfo contractInfo = aContractInfoService.getBySimplifiedHouseId(simplifiedHouseId);
+        HouseInfoVo.ContractInfo contract = new HouseInfoVo.ContractInfo();
+        if(contractInfo == null){
+            contract.setContractNumber(null);
+            contract.setContractDate(null);
+            contract.setContractTime(null);
+            contract.setContractExpirationDate(null);
+            contract.setContractDeposit(null);
+            contract.setContractStatus(null);
+        }else {
+            contract.setContractNumber(contractInfo.getContractNumber());
+            contract.setContractDate(contractInfo.getContractDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+            contract.setContractTime(contractInfo.getContractTime());
+            contract.setContractExpirationDate(contractInfo.getContractExpirationDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+            contract.setContractDeposit(contractInfo.getContractDeposit().toString());
+            contract.setContractStatus(contractInfo.getContractStatus());
+        }
+        vo.setContractInfo(contract);
+        return vo;
+    }
 }
 
 

+ 8 - 1
src/main/java/com/zksy/property/service/impl/ATenantInfoServiceImpl.java

@@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zksy.property.domain.ATenantInfo;
-import com.zksy.property.service.ATenantInfoService;
 import com.zksy.property.mapper.ATenantInfoMapper;
+import com.zksy.property.service.ATenantInfoService;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -39,6 +39,13 @@ public class ATenantInfoServiceImpl extends ServiceImpl<ATenantInfoMapper, ATena
         List<ATenantInfo> list = this.list(queryWrapper);
         return list;
     }
+
+    @Override
+    public ATenantInfo getBySimplifiedHouseId(String simplifiedHouseId) {
+        LambdaQueryWrapper<ATenantInfo> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ATenantInfo::getSimplifiedHouseId,simplifiedHouseId);
+        return this.getOne(queryWrapper);
+    }
 }
 
 

+ 38 - 0
src/test/java/com/zksy/property/service/impl/ASimplifiedHouseInfoServiceImplTest.java

@@ -0,0 +1,38 @@
+package com.zksy.property.service.impl;
+
+import com.zksy.property.domain.vo.HouseInfoVo;
+import com.zksy.property.service.ASimplifiedHouseInfoService;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class ASimplifiedHouseInfoServiceImplTest {
+
+    @Autowired
+    private ASimplifiedHouseInfoService simplifiedHouseInfoService;
+    @Test
+    void test(){
+        HouseInfoVo info = simplifiedHouseInfoService.getHouseDetailInfo("35c10d2b4be0a7eee74300b759e0efcf");
+        System.out.println(info);
+    }
+
+    @Test
+    void testEmpty(){
+        simplifiedHouseInfoService.getHouseDetailInfo("12321321321");
+    }
+
+    @Test
+    void testNoDevice(){
+        var vo = simplifiedHouseInfoService.getHouseDetailInfo("637a5298e3a076ab80fd695f5435a3a9");
+        System.out.println(vo);
+    }
+
+    @Test
+    void testNoHouseDetail(){
+        var vo = simplifiedHouseInfoService.getHouseDetailInfo("45371d4140ccb8347c8f9b1dae03e7b9");
+        System.out.println(vo);
+    }
+
+
+}