Browse Source

Merge branch 'master' of https://e.coding.net/chuanghaikeji/smarCampus/iHotel_student_houtai into develop-wxl

wanxl 1 year ago
parent
commit
18f7348bad

+ 4 - 0
src/main/java/com/template/api/BuildingControllerAPI.java

@@ -30,4 +30,8 @@ public interface BuildingControllerAPI {
     @ApiOperation(value = "楼栋下拉框查询", notes = "楼栋下拉框查询", httpMethod = "GET")
     @ApiOperation(value = "楼栋下拉框查询", notes = "楼栋下拉框查询", httpMethod = "GET")
     CommonResult displayBar();
     CommonResult displayBar();
 
 
+    @GetMapping("/beDisplayBar")
+    @ApiOperation(value = "楼栋单元下拉框查询", notes = "楼栋单元下拉框查询", httpMethod = "GET")
+    CommonResult beDisplayBar();
+
 }
 }

+ 10 - 0
src/main/java/com/template/api/HouseNumberControllerAPI.java

@@ -65,4 +65,14 @@ public interface HouseNumberControllerAPI {
     @ApiOperation(value = "房间删除", notes = "房间删除", httpMethod = "GET")
     @ApiOperation(value = "房间删除", notes = "房间删除", httpMethod = "GET")
     CommonResult deleteHouseNumber(@RequestParam Integer houseNumberId);
     CommonResult deleteHouseNumber(@RequestParam Integer houseNumberId);
 
 
+
+    @GetMapping("/houseNumberExport")
+    @ApiOperation(value = "房间导入模板", notes = "房间导入模板", httpMethod = "GET")
+    void houseNumberExport(HttpServletResponse response);
+
+    @PostMapping("/importHouseNumbers")
+    @ApiOperation(value = "房间水电编码导入", notes = "房间水电编码导入", httpMethod = "POST")
+    CommonResult importHouseNumbers(@RequestParam("file") MultipartFile file) throws Exception;
+
+
 }
 }

+ 9 - 0
src/main/java/com/template/controller/BuildingController.java

@@ -131,5 +131,14 @@ public class BuildingController implements BuildingControllerAPI {
 
 
         return CommonResult.ok(vos);
         return CommonResult.ok(vos);
     }
     }
+
+    @Override
+    public CommonResult beDisplayBar() {
+        LambdaQueryWrapper<Building> wrapper=new LambdaQueryWrapper<>();
+        wrapper.orderByAsc(Building::getBuilding)
+                .orderByAsc(Building::getElement);
+        List<Building> list = buildingService.list(wrapper);
+        return CommonResult.ok(list);
+    }
 }
 }
 
 

+ 137 - 127
src/main/java/com/template/controller/HouseController.java

@@ -13,10 +13,7 @@ import com.template.model.dto.HouseDto;
 import com.template.model.pojo.*;
 import com.template.model.pojo.*;
 import com.template.model.result.CommonResult;
 import com.template.model.result.CommonResult;
 import com.template.model.result.PageUtils;
 import com.template.model.result.PageUtils;
-import com.template.model.vo.HouseAppletPageVo;
-import com.template.model.vo.HouseDisplayBarVo;
-import com.template.model.vo.HouseVo;
-import com.template.model.vo.HousedetailsVo;
+import com.template.model.vo.*;
 import com.template.services.*;
 import com.template.services.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,7 +27,6 @@ import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
-import java.util.Objects;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -64,7 +60,7 @@ public class HouseController implements HouseAPI {
     @Encrypt
     @Encrypt
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     public CommonResult save(@RequestBody HouseDto houseDto) {
     public CommonResult save(@RequestBody HouseDto houseDto) {
-        if (ObjectUtils.isEmpty(houseDto) && ObjectUtils.isEmpty(houseDto.getRoomNumbers()) && ObjectUtils.isEmpty(houseDto.getAdminId())) {
+        if (ObjectUtils.isEmpty(houseDto)  && ObjectUtils.isEmpty(houseDto.getAdminId())) {
             return CommonResult.fail("参数异常");
             return CommonResult.fail("参数异常");
         }
         }
 
 
@@ -80,18 +76,14 @@ public class HouseController implements HouseAPI {
 
 
 
 
         House house = houseDto.getHouse();
         House house = houseDto.getHouse();
-        List<String> roomNumbers = houseDto.getRoomNumbers();
-
-        Integer number = house.getNumber();
+//        List<String> roomNumbers = houseDto.getRoomNumbers();
+//
+//        Integer number = house.getNumber();
+//
+//        if (number != roomNumbers.size()) {
+//            return CommonResult.fail("房间数量不一致");
+//        }
 
 
-        if (number != roomNumbers.size()) {
-            return CommonResult.fail("房间数量不一致");
-        }
-        //      去重后的数量
-        long count = roomNumbers.stream().distinct().count();
-        if (count != roomNumbers.size()) {
-            return CommonResult.fail("房间号不可重复");
-        }
 
 
         LambdaQueryWrapper<House> wrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<House> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(House::getRoomName, house.getRoomName())
         wrapper.eq(House::getRoomName, house.getRoomName())
@@ -101,42 +93,27 @@ public class HouseController implements HouseAPI {
             return CommonResult.fail("该房型已存在");
             return CommonResult.fail("该房型已存在");
         }
         }
 
 
-//        房间号不能重复
-//        LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();
-//        wrapperHn.in(HouseNumber::getRoomNumber, roomNumbers);
-//        List<HouseNumber> list = houseNumberService.list(wrapperHn);
-//        if (ObjectUtils.isNotEmpty(list) && list.size() > 0) {
-//            return CommonResult.fail("该房间号已存在");
-//        }
-
-
         try {
         try {
-            houseService.saveOrUpdate(house);
-
-            ArrayList<HouseNumber> houseNumbers = new ArrayList<>();
-            for (String roomNumber : roomNumbers) {
-//                tian
-                HouseNumber houseNumber = new HouseNumber();
-                houseNumber.setRoomNumber(roomNumber);
-                houseNumber.setHouseId(house.getId() + "");
-//                默认净房
-                houseNumber.setHouseStatus(1);
-//                默认关电
-                houseNumber.setElectricType("2");
-
-                houseNumbers.add(houseNumber);
-            }
-            boolean b = houseNumberService.saveOrUpdateBatch(houseNumbers);
-
-            if (b) {
-                return CommonResult.ok();
-            }
+            houseService.save(house);
+
+//            ArrayList<HouseNumber> houseNumbers = new ArrayList<>();
+//            for (String roomNumber : roomNumbers) {
+////             修改房间
+//                HouseNumber byId = houseNumberService.getById(roomNumber);
+//                byId.setHouseId(house.getId()+"");
+//                houseNumbers.add(byId);
+//            }
+//            boolean b = houseNumberService.updateBatchById(houseNumbers);
+//
+//            if (b) {
+//                return CommonResult.ok();
+//            }
 
 
         } catch (Exception e) {
         } catch (Exception e) {
             return CommonResult.fail();
             return CommonResult.fail();
         }
         }
 
 
-        return CommonResult.fail();
+        return CommonResult.ok();
     }
     }
 
 
 
 
@@ -165,6 +142,23 @@ public class HouseController implements HouseAPI {
         }
         }
 
 
         HousedetailsVo housedetailsVo = houseService.details(houseId);
         HousedetailsVo housedetailsVo = houseService.details(houseId);
+        if (ObjectUtils.isNotEmpty(housedetailsVo)) {
+            String roomIds = housedetailsVo.getRoomIds();
+            if (ObjectUtils.isNotEmpty(roomIds)) {
+                String[] split = roomIds.split(",");
+                ArrayList<BuildingHouseNumberVo> vos = new ArrayList<>();
+                for (int i = 0; i < split.length; i++) {
+                    String s = split[i];
+                    HouseNumber byId = houseNumberService.getById(s);
+                    BuildingHouseNumberVo vo = new BuildingHouseNumberVo();
+                    vo.setHouseNumberId(byId.getId());
+//            跟下拉列表的楼栋单元id一样
+                    vo.setBuildingId(byId.getBuildingId() + 1000000);
+                    vos.add(vo);
+                }
+                housedetailsVo.setList(vos);
+            }
+        }
 
 
         return CommonResult.ok(housedetailsVo);
         return CommonResult.ok(housedetailsVo);
     }
     }
@@ -173,7 +167,7 @@ public class HouseController implements HouseAPI {
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     public CommonResult update(HouseDto houseDto) {
     public CommonResult update(HouseDto houseDto) {
-        if (ObjectUtils.isEmpty(houseDto) && ObjectUtils.isEmpty(houseDto.getRoomNumbers()) && ObjectUtils.isEmpty(houseDto.getHouse().getId()) && ObjectUtils.isEmpty(houseDto.getAdminId())) {
+        if (ObjectUtils.isEmpty(houseDto) && ObjectUtils.isEmpty(houseDto.getHouse().getId()) && ObjectUtils.isEmpty(houseDto.getAdminId())) {
             return CommonResult.fail("参数异常");
             return CommonResult.fail("参数异常");
         }
         }
 
 
@@ -189,22 +183,20 @@ public class HouseController implements HouseAPI {
 
 
 
 
         House house = houseDto.getHouse();
         House house = houseDto.getHouse();
-        List<String> roomNumbers = houseDto.getRoomNumbers();
-
-        Integer number = house.getNumber();
-
-        if (number != roomNumbers.size()) {
-            return CommonResult.fail("房间数量不一致");
-        }
-        //      去重后的数量
-        long count = roomNumbers.stream().distinct().count();
-        if (count != roomNumbers.size()) {
-            return CommonResult.fail("房间号不可重复");
-        }
+//        List<String> roomNumbers = houseDto.getRoomNumbers();
+//
+//        Integer number = house.getNumber();
+//
+//        if (number != roomNumbers.size()) {
+//            return CommonResult.fail("房间数量不一致");
+//        }
 
 
 //        判断修改的房型名称和房型类型是是否已存在
 //        判断修改的房型名称和房型类型是是否已存在
         House byId = houseService.getById(house.getId());
         House byId = houseService.getById(house.getId());
-        if (!house.getNumber().equals(byId.getNumber()) && !Objects.equals(house.getRoomType(), byId.getRoomType())) {
+
+        String roomName = byId.getRoomName();
+        Integer type = byId.getRoomType();
+        if (!house.getRoomName().equals(roomName)||!type.equals(house.getRoomType())) {
             LambdaQueryWrapper<House> wrapper = new LambdaQueryWrapper<>();
             LambdaQueryWrapper<House> wrapper = new LambdaQueryWrapper<>();
             wrapper.eq(House::getRoomName, house.getRoomName())
             wrapper.eq(House::getRoomName, house.getRoomName())
                     .eq(House::getRoomType, house.getRoomType());
                     .eq(House::getRoomType, house.getRoomType());
@@ -214,56 +206,63 @@ public class HouseController implements HouseAPI {
             }
             }
         }
         }
 
 
-        try {
-            //        通过houseId,找到房间号
-            LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();
-            wrapperHn.eq(HouseNumber::getHouseId, house.getId());
-            List<HouseNumber> list = houseNumberService.list(wrapperHn);
-            for (HouseNumber houseNumber : list) {
-//            判断房间号是否还存在
-                String roomNumber = houseNumber.getRoomNumber();
-//            不存在则删除
-                if (!roomNumbers.contains(roomNumber)) {
-//                判断房间是否有订单,有则不能删除
-                    LambdaQueryWrapper<HouseNumberState> wrapperHNS = new LambdaQueryWrapper<>();
-                    wrapperHNS.eq(HouseNumberState::getHouseNumberId, houseNumber.getId())
-                            .ge(HouseNumberState::getEndTime, new Date());
-                    List<HouseNumberState> houseNumberStates = houseNumberStateService.list(wrapperHNS);
-                    if (ObjectUtils.isNotEmpty(houseNumberStates) && houseNumberStates.size() > 0) {
-                        return CommonResult.fail(roomNumber + "房间在使用");
-                    }
-                    houseNumberService.removeById(houseNumber);
-
-                } else {
-//                存在则在集合删除这个
-                    roomNumbers.remove(roomNumber);
-                }
-            }
-
-            houseService.updateById(house);
-            if (ObjectUtils.isNotEmpty(roomNumbers) && roomNumbers.size() > 0) {
-                ArrayList<HouseNumber> houseNumbers = new ArrayList<>();
-                for (String roomNumber : roomNumbers) {
-//                添加
-                    HouseNumber houseNumber = new HouseNumber();
-                    houseNumber.setRoomNumber(roomNumber);
-                    houseNumber.setHouseId(house.getId() + "");
-//                默认净房
-                    houseNumber.setHouseStatus(1);
-////               默认空闲
-//                    houseNumber.setStatus(1);
-//                默认关电
-                    houseNumber.setElectricType("2");
-
-                    houseNumbers.add(houseNumber);
-                }
-                boolean b = houseNumberService.saveOrUpdateBatch(houseNumbers);
-            }
-            return CommonResult.ok();
-
-        } catch (Exception e) {
-            return CommonResult.fail();
-        }
+        houseService.updateById(house);
+
+        return CommonResult.ok();
+
+
+
+
+//        try {
+//            //        通过houseId,找到房间号
+////            LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();
+////            wrapperHn.eq(HouseNumber::getHouseId, house.getId());
+////            List<HouseNumber> list = houseNumberService.list(wrapperHn);
+////            for (HouseNumber houseNumber : list) {
+//////            判断房间号是否还存在
+////                String roomNumber = houseNumber.getRoomNumber();
+//////            不存在则删除
+////                if (!roomNumbers.contains(roomNumber)) {
+//////                判断房间是否有订单,有则不能删除
+////                    LambdaQueryWrapper<HouseNumberState> wrapperHNS = new LambdaQueryWrapper<>();
+////                    wrapperHNS.eq(HouseNumberState::getHouseNumberId, houseNumber.getId())
+////                            .ge(HouseNumberState::getEndTime, new Date());
+////                    List<HouseNumberState> houseNumberStates = houseNumberStateService.list(wrapperHNS);
+////                    if (ObjectUtils.isNotEmpty(houseNumberStates) && houseNumberStates.size() > 0) {
+////                        return CommonResult.fail(roomNumber + "房间在使用");
+////                    }
+////                    houseNumberService.removeById(houseNumber);
+////
+////                } else {
+//////                存在则在集合删除这个
+////                    roomNumbers.remove(roomNumber);
+////                }
+////            }
+////
+////            houseService.updateById(house);
+////            if (ObjectUtils.isNotEmpty(roomNumbers) && roomNumbers.size() > 0) {
+////                ArrayList<HouseNumber> houseNumbers = new ArrayList<>();
+////                for (String roomNumber : roomNumbers) {
+//////                添加
+////                    HouseNumber houseNumber = new HouseNumber();
+////                    houseNumber.setRoomNumber(roomNumber);
+////                    houseNumber.setHouseId(house.getId() + "");
+//////                默认净房
+////                    houseNumber.setHouseStatus(1);
+////////               默认空闲
+//////                    houseNumber.setStatus(1);
+//////                默认关电
+////                    houseNumber.setElectricType("2");
+////
+////                    houseNumbers.add(houseNumber);
+////                }
+////                boolean b = houseNumberService.saveOrUpdateBatch(houseNumbers);
+////            }
+//            return CommonResult.ok();
+//
+//        } catch (Exception e) {
+//            return CommonResult.fail();
+//        }
 
 
 
 
     }
     }
@@ -289,24 +288,35 @@ public class HouseController implements HouseAPI {
 
 
 //        删除房型需先删除房间号
 //        删除房型需先删除房间号
         //        通过houseId,找到房间号
         //        通过houseId,找到房间号
-        LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();
-        wrapperHn.eq(HouseNumber::getHouseId, houseId);
-        List<HouseNumber> list = houseNumberService.list(wrapperHn);
-        for (HouseNumber houseNumber : list) {
-//            判断房间是否有订单,有则不能删除
-            LambdaQueryWrapper<HouseNumberState> wrapperHNS = new LambdaQueryWrapper<>();
-            wrapperHNS.eq(HouseNumberState::getHouseNumberId, houseNumber.getId())
-                    .ge(HouseNumberState::getEndTime, new Date());
-            List<HouseNumberState> houseNumberStates = houseNumberStateService.list(wrapperHNS);
-            if (ObjectUtils.isNotEmpty(houseNumberStates) && houseNumberStates.size() > 0) {
-                return CommonResult.fail(houseNumber.getRoomNumber() + "房间在使用,无法删除");
-            }
-        }
+//        LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();
+//        wrapperHn.eq(HouseNumber::getHouseId, houseId);
+//        List<HouseNumber> list = houseNumberService.list(wrapperHn);
+//        for (HouseNumber houseNumber : list) {
+////            判断房间是否有订单,有则不能删除
+//            LambdaQueryWrapper<HouseNumberState> wrapperHNS = new LambdaQueryWrapper<>();
+//            wrapperHNS.eq(HouseNumberState::getHouseNumberId, houseNumber.getId())
+//                    .ge(HouseNumberState::getEndTime, new Date());
+//            List<HouseNumberState> houseNumberStates = houseNumberStateService.list(wrapperHNS);
+//            if (ObjectUtils.isNotEmpty(houseNumberStates) && houseNumberStates.size() > 0) {
+//                return CommonResult.fail(houseNumber.getRoomNumber() + "房间在使用,无法删除");
+//            }
+//        }
         try {
         try {
-            for (HouseNumber houseNumber : list) {
-                Integer id = houseNumber.getId();
-                houseNumberService.removeById(id);
+//            for (HouseNumber houseNumber : list) {
+//                Integer id = houseNumber.getId();
+//                houseNumberService.removeById(id);
+//            }
+            House byId = houseService.getById(houseId);
+
+            if (ObjectUtils.isEmpty(byId)) {
+                return CommonResult.fail("参数异常");
             }
             }
+            List<HouseNumber> houseNumberList=houseNumberService.getHouseId(houseId);
+
+            if (ObjectUtils.isNotEmpty(houseNumberList)||houseNumberList.size()>0) {
+                return CommonResult.fail("该房型下还有房间");
+            }
+
             houseService.removeById(Integer.valueOf(houseId));
             houseService.removeById(Integer.valueOf(houseId));
 
 
             return CommonResult.ok();
             return CommonResult.ok();

+ 130 - 5
src/main/java/com/template/controller/HouseNumberController.java

@@ -16,6 +16,7 @@ import com.template.model.result.PageUtils;
 import com.template.model.vo.HouseNumberListVo;
 import com.template.model.vo.HouseNumberListVo;
 import com.template.model.vo.HouseNumberPageVo;
 import com.template.model.vo.HouseNumberPageVo;
 import com.template.model.vo.HouseNumberPullDownVo;
 import com.template.model.vo.HouseNumberPullDownVo;
+import com.template.model.vo.HouseNumbersImportDto;
 import com.template.services.*;
 import com.template.services.*;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Sheet;
@@ -29,6 +30,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -424,8 +426,8 @@ public class HouseNumberController implements HouseNumberControllerAPI {
         ArrayList<HouseNumberPullDownVo> vos = new ArrayList<>();
         ArrayList<HouseNumberPullDownVo> vos = new ArrayList<>();
         for (Building building : buildingList) {
         for (Building building : buildingList) {
             HouseNumberPullDownVo vo = new HouseNumberPullDownVo();
             HouseNumberPullDownVo vo = new HouseNumberPullDownVo();
-            vo.setBuilding(building.getBuilding());
-            vo.setElement(building.getElement());
+            vo.setId(building.getId() + 1000000);
+            vo.setRoomNumber(building.getBuilding() + "/" + building.getElement());
             List<HouseNumber> ownerClasses = list.stream().filter(e -> e.getBuildingId().equals(building.getId())).collect(Collectors.toList());
             List<HouseNumber> ownerClasses = list.stream().filter(e -> e.getBuildingId().equals(building.getId())).collect(Collectors.toList());
             if (ownerClasses != null && ownerClasses.size() > 0) {
             if (ownerClasses != null && ownerClasses.size() > 0) {
                 vo.setVos(ownerClasses);
                 vo.setVos(ownerClasses);
@@ -555,6 +557,11 @@ public class HouseNumberController implements HouseNumberControllerAPI {
                 }
                 }
                 byId.setWaterEquipmentId(waterEquipment.getId() + "");
                 byId.setWaterEquipmentId(waterEquipment.getId() + "");
             }
             }
+            byId.setHouseId(dto.getHouseId());
+            byId.setBuildingId(dto.getBuildingId());
+            byId.setRoomNumber(dto.getRoomNumber());
+            byId.setWaterEquipmentMeterName(dto.getWaterEquipmentMeterName());
+            byId.setElectricEquipmentMeterName(dto.getElectricEquipmentMeterName());
             houseNumberService.updateById(byId);
             houseNumberService.updateById(byId);
             LambdaQueryWrapper<HouseLock> wrapper = new LambdaQueryWrapper<>();
             LambdaQueryWrapper<HouseLock> wrapper = new LambdaQueryWrapper<>();
             wrapper.eq(HouseLock::getHouseNumberId, dto.getId());
             wrapper.eq(HouseLock::getHouseNumberId, dto.getId());
@@ -615,9 +622,9 @@ public class HouseNumberController implements HouseNumberControllerAPI {
                     hl.setNfcFunction(0);
                     hl.setNfcFunction(0);
                     houseLockService.save(hl);
                     houseLockService.save(hl);
                 }
                 }
-            }else {
+            } else {
                 if (ObjectUtils.isNotEmpty(houseLock)) {
                 if (ObjectUtils.isNotEmpty(houseLock)) {
-                   houseLockService.removeById(houseLock.getId());
+                    houseLockService.removeById(houseLock.getId());
                 }
                 }
             }
             }
         } catch (Exception e) {
         } catch (Exception e) {
@@ -628,6 +635,7 @@ public class HouseNumberController implements HouseNumberControllerAPI {
         return CommonResult.ok();
         return CommonResult.ok();
     }
     }
 
 
+
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     public CommonResult deleteHouseNumber(Integer houseNumberId) {
     public CommonResult deleteHouseNumber(Integer houseNumberId) {
@@ -644,13 +652,130 @@ public class HouseNumberController implements HouseNumberControllerAPI {
                 houseLockService.removeById(houseLock.getId());
                 houseLockService.removeById(houseLock.getId());
             }
             }
             houseNumberService.removeById(houseNumberId);
             houseNumberService.removeById(houseNumberId);
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
             return CommonResult.fail();
             return CommonResult.fail();
         }
         }
         return CommonResult.ok();
         return CommonResult.ok();
     }
     }
 
 
+    @Override
+    public void houseNumberExport(HttpServletResponse response) {
+        //        导出
+
+        // 表头数据
+        List<Object> head = Arrays.asList("楼栋", "单元", "房间号", "房型类型", "房型名称", "门锁设备型号", "水表编码", "电表编码");
+
+
+        // 用户1数据
+        List<Object> user1 = new ArrayList<>();
+        user1.add("17栋");
+        user1.add("1单元");
+        user1.add("17-101");
+        user1.add("全日房");
+        user1.add("大床房");
+        user1.add("047863CA78E0");
+        user1.add("202308000088");
+        user1.add("120302136367");
+
+
+        List<Object> user2 = new ArrayList<>();
+        user2.add("17栋");
+        user2.add("1单元");
+        user2.add("17-102");
+        user2.add("钟点房");
+        user2.add("大床房");
+        user2.add("047863CA78E0");
+        user2.add("202308000088");
+        user2.add("120302136367");
+        // 将数据汇总
+        List<List<Object>> sheetDataList = new ArrayList<>();
+        sheetDataList.add(head);
+        sheetDataList.add(user1);
+        sheetDataList.add(user2);
+// 导出数据
+        ExcelUtils.export(response, "房间导入模板", sheetDataList);
+
+    }
+
+    @Override
+    public CommonResult importHouseNumbers(MultipartFile file) throws Exception {
+        List<HouseNumbersImportDto> dtos = ExcelUtils.readMultipartFile(file, HouseNumbersImportDto.class);
+
+        ArrayList<HouseNumber> houseNumbers = new ArrayList<>();
+        for (int i = 0; i < dtos.size(); i++) {
+            HouseNumbersImportDto dto = dtos.get(i);
+            HouseNumber houseNumber = new HouseNumber();
+
+//            判断是否存在该楼栋单元
+            String building = dto.getBuilding();
+            String element = dto.getElement();
+
+            LambdaQueryWrapper<Building> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(Building::getBuilding, building)
+                    .eq(Building::getElement, element);
+            Building one = buildingService.getOne(wrapper);
+            if (ObjectUtils.isEmpty(one)) {
+                return CommonResult.fail("第" + (i + 2) + "行," + "不存在" + building+"/"+element + "该楼栋单元");
+            }
+            Integer bId = one.getId();
+            houseNumber.setBuildingId(bId);
+
+//            判断是否存在该房型
+            Integer roomType = dto.getRoomType();
+//            房型
+            String houseName = dto.getHouseName();
+
+            //            判断当前房型是否存在当前房间号
+            House house = houseService.getHouseName(houseName, roomType);
+            if (ObjectUtils.isEmpty(house)) {
+                return CommonResult.fail("第" + (i + 2) + "行," + "不存在" + houseName + "该房型");
+            }
+            houseNumber.setHouseId(house.getId()+"");
+
+//            判断该房间号是否已经存在
+            //            房间号
+            String roomNumber = dto.getRoomNumber();
+            HouseNumber hn = houseNumberService.getBRoomNumber(bId, roomNumber);
+            if (ObjectUtils.isNotEmpty(hn)) {
+                return CommonResult.fail("第" + (i + 2) + "行," + "该楼栋单元下已存在" + roomNumber + "该房间号");
+            }
+            houseNumber.setRoomNumber(roomNumber);
+
+            String electricEquipmentMeterName = dto.getElectricEquipmentMeterName();
+            LambdaQueryWrapper<ElectricEquipment> wrapperEE = new LambdaQueryWrapper<>();
+            wrapperEE.eq(ElectricEquipment::getMeterName, electricEquipmentMeterName);
+            ElectricEquipment electricEquipment = electricEquipmentService.getOne(wrapperEE);
+
+            if (ObjectUtils.isEmpty(electricEquipment)) {
+                return CommonResult.fail("第" + (i + 2) + "行," + "不存在" + electricEquipmentMeterName + "该电表设备号");
+            }
+
+            String waterEquipmentMeterName = dto.getWaterEquipmentMeterName();
+            LambdaQueryWrapper<WaterEquipment> wrapperWE = new LambdaQueryWrapper<>();
+            wrapperWE.eq(WaterEquipment::getMeterName, waterEquipmentMeterName);
+            WaterEquipment waterEquipment = waterEquipmentService.getOne(wrapperWE);
+            if (ObjectUtils.isEmpty(waterEquipment)) {
+                return CommonResult.fail("第" + (i + 2) + "行," + "不存在" + waterEquipmentMeterName + "该水表设备号");
+            }
+
+            houseNumber.setElectricEquipmentId(electricEquipment.getId() + "");
+            houseNumber.setElectricEquipmentMeterName(electricEquipment.getMeterName());
+            houseNumber.setWaterEquipmentId(waterEquipment.getId() + "");
+            houseNumber.setWaterEquipmentMeterName(waterEquipment.getMeterName());
+
+            houseNumber.setHouseStatus(1);
+            houseNumber.setElectricType("2");
+
+            houseNumbers.add(houseNumber);
+        }
+        boolean b = houseNumberService.saveBatch(houseNumbers);
+        if (b) {
+            return CommonResult.ok();
+        }
+        return CommonResult.fail();
+    }
+
 
 
 }
 }
 
 

+ 5 - 3
src/main/java/com/template/controller/HouseOrderController.java

@@ -179,9 +179,11 @@ public class HouseOrderController implements HouseOrderAPI {
             return CommonResult.fail("无此房间,请重新查询");
             return CommonResult.fail("无此房间,请重新查询");
         }
         }
 
 
-        if (house.getNumber() < Func.parseInt(establishOrderDto.getHouseOrderNumber())) {
-            return CommonResult.fail("超出限定房间数量");
-        }
+
+
+//        if (house.getNumber() < Func.parseInt(establishOrderDto.getHouseOrderNumber())) {
+//            return CommonResult.fail("超出限定房间数量");
+//        }
 
 
 
 
         LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();

+ 9 - 0
src/main/java/com/template/controller/LoginController.java

@@ -479,6 +479,11 @@ public class LoginController implements LoginControllerAPI {
                 functionPointVo4.setStatus(1);
                 functionPointVo4.setStatus(1);
                 vos15.add(functionPointVo4);
                 vos15.add(functionPointVo4);
 
 
+                FunctionPointVo functionPointVo5 = new FunctionPointVo();
+                functionPointVo5.setFunctionPoint("导入");
+                functionPointVo5.setStatus(1);
+                vos15.add(functionPointVo5);
+
             } else {
             } else {
                 FunctionPointVo functionPointVo1 = ifContains(houseNumberManagement, "1");
                 FunctionPointVo functionPointVo1 = ifContains(houseNumberManagement, "1");
                 functionPointVo1.setFunctionPoint("添加");
                 functionPointVo1.setFunctionPoint("添加");
@@ -496,6 +501,10 @@ public class LoginController implements LoginControllerAPI {
                 functionPointVo4.setFunctionPoint("查看界面");
                 functionPointVo4.setFunctionPoint("查看界面");
                 vos15.add(functionPointVo4);
                 vos15.add(functionPointVo4);
 
 
+                FunctionPointVo functionPointVo5 = ifContains(houseNumberManagement, "5");
+                functionPointVo5.setFunctionPoint("导入");
+                vos15.add(functionPointVo5);
+
             }
             }
             menuBarVo15.setFunctionPoints(vos15);
             menuBarVo15.setFunctionPoints(vos15);
             menuBarVos.add(menuBarVo15);
             menuBarVos.add(menuBarVo15);

+ 1 - 3
src/main/java/com/template/model/dto/HouseDto.java

@@ -3,13 +3,11 @@ package com.template.model.dto;
 import com.template.model.pojo.House;
 import com.template.model.pojo.House;
 import lombok.Data;
 import lombok.Data;
 
 
-import java.util.List;
-
 @Data
 @Data
 public class HouseDto {
 public class HouseDto {
     private House house;
     private House house;
 //    房间号
 //    房间号
-    private List<String> roomNumbers;
+//    private List<String> roomNumbers;
 
 
     private int adminId;
     private int adminId;
 }
 }

+ 6 - 11
src/main/java/com/template/model/pojo/House.java

@@ -1,20 +1,15 @@
 package com.template.model.pojo;
 package com.template.model.pojo;
 
 
-import java.math.BigDecimal;
-import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.Version;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.*;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import lombok.experimental.Accessors;
 
 
+import java.io.Serializable;
+import java.math.BigDecimal;
+
 /**
 /**
  * <p>
  * <p>
  * 
  * 
@@ -44,8 +39,8 @@ public class House implements Serializable {
     @ApiModelProperty(value = "房间单价")
     @ApiModelProperty(value = "房间单价")
     private BigDecimal roomPrice;
     private BigDecimal roomPrice;
 
 
-    @ApiModelProperty(value = "房间数量")
-    private Integer number;
+//    @ApiModelProperty(value = "房间数量")
+//    private Integer number;
 
 
     @ApiModelProperty(value = "房间面积")
     @ApiModelProperty(value = "房间面积")
     private String roomArea;
     private String roomArea;

+ 9 - 0
src/main/java/com/template/model/vo/BuildingHouseNumberVo.java

@@ -0,0 +1,9 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+@Data
+public class BuildingHouseNumberVo {
+    private Integer buildingId;
+    private Integer houseNumberId;
+}

+ 5 - 0
src/main/java/com/template/model/vo/HouseNumberListVo.java

@@ -34,6 +34,9 @@ public class HouseNumberListVo {
     @ApiModelProperty(value = "水表设备id")
     @ApiModelProperty(value = "水表设备id")
     private String waterEquipmentId;
     private String waterEquipmentId;
 
 
+    @ApiModelProperty(value = "水表设备编码")
+    private String waterEquipmentMeterName;
+
     @ApiModelProperty(value = "门锁")
     @ApiModelProperty(value = "门锁")
     private String doorLock;
     private String doorLock;
 
 
@@ -43,4 +46,6 @@ public class HouseNumberListVo {
     @ApiModelProperty(value = "房间类型(1:全日房,2:钟点房)")
     @ApiModelProperty(value = "房间类型(1:全日房,2:钟点房)")
     private Integer roomType;
     private Integer roomType;
 
 
+    private Integer buildingId;
+
 }
 }

+ 5 - 4
src/main/java/com/template/model/vo/HouseNumberPullDownVo.java

@@ -8,11 +8,12 @@ import java.util.List;
 
 
 @Data
 @Data
 public class HouseNumberPullDownVo {
 public class HouseNumberPullDownVo {
+    private Integer id;
 
 
-    @ApiModelProperty(value = "楼栋")
-    private String building;
-    @ApiModelProperty(value = "单元")
-    private String element;
+    @ApiModelProperty(value = "楼栋/单元")
+    private String roomNumber;
+//    @ApiModelProperty(value = "单元")
+//    private String element;
 
 
     private List<HouseNumber> vos;
     private List<HouseNumber> vos;
 
 

+ 34 - 0
src/main/java/com/template/model/vo/HouseNumbersImportDto.java

@@ -0,0 +1,34 @@
+package com.template.model.vo;
+
+import com.template.annotation.ExcelImport;
+import lombok.Data;
+
+@Data
+public class HouseNumbersImportDto {
+
+    @ExcelImport(value = "楼栋")
+    private String building;
+
+    @ExcelImport(value = "单元")
+    private String element;
+
+    @ExcelImport("房间号")
+    private String roomNumber;
+
+    @ExcelImport(value = "房型类型",kv = "1-全日房;2-钟点房")
+    private Integer roomType;
+
+    @ExcelImport("房型名称")
+    private String houseName;
+
+    @ExcelImport("门锁设备型号")
+    private String doorLock;
+
+    @ExcelImport(value = "水表编码")
+    private String waterEquipmentMeterName;
+
+    @ExcelImport(value = "电表编码")
+    private String electricEquipmentMeterName;
+
+
+}

+ 1 - 1
src/main/java/com/template/model/vo/HouseVo.java

@@ -12,6 +12,6 @@ public class HouseVo {
     private String name;
     private String name;
     private BigDecimal price;
     private BigDecimal price;
     private String visible;
     private String visible;
-    private Integer count;
+//    private Integer count;
     private Integer type;
     private Integer type;
 }
 }

+ 4 - 0
src/main/java/com/template/model/vo/HousedetailsVo.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.util.List;
 
 
 @Data
 @Data
 public class HousedetailsVo {
 public class HousedetailsVo {
@@ -41,4 +42,7 @@ public class HousedetailsVo {
 
 
 //  房间号
 //  房间号
     private String roomIds;
     private String roomIds;
+
+    private List<BuildingHouseNumberVo> list;
+
 }
 }

+ 2 - 1
src/main/java/com/template/services/HouseNumberService.java

@@ -48,6 +48,7 @@ public interface HouseNumberService extends IService<HouseNumber> {
     PageUtils<HouseNumberListVo> getpage(int page, int size, String keyWord, Integer buildingId, Integer houseId);
     PageUtils<HouseNumberListVo> getpage(int page, int size, String keyWord, Integer buildingId, Integer houseId);
 
 
 
 
+    List<HouseNumber> getHouseId(String houseId);
 
 
-
+    HouseNumber getBRoomNumber(Integer bId, String roomNumber);
 }
 }

+ 17 - 0
src/main/java/com/template/services/impl/HouseNumberServiceImpl.java

@@ -116,5 +116,22 @@ public class HouseNumberServiceImpl extends ServiceImpl<HouseNumberMapper, House
         return new PageUtils(result);
         return new PageUtils(result);
     }
     }
 
 
+    @Override
+    public List<HouseNumber> getHouseId(String houseId) {
+        LambdaQueryWrapper<HouseNumber> wrapper=new LambdaQueryWrapper<>();
+        wrapper.eq(HouseNumber::getHouseId,houseId);
+        List<HouseNumber> list = this.list(wrapper);
+        return list;
+    }
+
+    @Override
+    public HouseNumber getBRoomNumber(Integer bId, String roomNumber) {
+        LambdaQueryWrapper<HouseNumber> wrapper=new LambdaQueryWrapper<>();
+        wrapper.eq(HouseNumber::getBuildingId,bId)
+                .eq(HouseNumber::getRoomNumber,roomNumber);
+        HouseNumber houseNumber = this.getOne(wrapper);
+        return houseNumber;
+    }
+
 
 
 }
 }

+ 3 - 3
src/main/resources/mapper/template/HouseMapper.xml

@@ -5,7 +5,7 @@
     <!-- 可根据自己的需求,是否要使用 -->
     <!-- 可根据自己的需求,是否要使用 -->
     <resultMap type="com.template.model.pojo.House" id="HouseTypeMapper">
     <resultMap type="com.template.model.pojo.House" id="HouseTypeMapper">
         <result property="id" column="id"/>
         <result property="id" column="id"/>
-        <result property="number" column="number"/>
+<!--        <result property="number" column="number"/>-->
         <result property="roomName" column="room_name"/>
         <result property="roomName" column="room_name"/>
         <result property="roomType" column="room_type"/>
         <result property="roomType" column="room_type"/>
         <result property="roomPrice" column="room_price"/>
         <result property="roomPrice" column="room_price"/>
@@ -30,7 +30,7 @@
         as roomId ,
         as roomId ,
         h.room_price AS price,
         h.room_price AS price,
         h.visible AS visible,
         h.visible AS visible,
-        h.number AS count,
+--         h.number AS count,
         h.room_type AS type,
         h.room_type AS type,
         h.id as id
         h.id as id
         FROM
         FROM
@@ -52,7 +52,7 @@
 
 
     <select id="details" resultType="com.template.model.vo.HousedetailsVo">
     <select id="details" resultType="com.template.model.vo.HousedetailsVo">
         SELECT h.*,
         SELECT h.*,
-               (SELECT GROUP_CONCAT(DISTINCT hn.room_number )
+               (SELECT GROUP_CONCAT(DISTINCT hn.id )
                 FROM house_number hn
                 FROM house_number hn
                 WHERE hn.house_id = h.id
                 WHERE hn.house_id = h.id
                   and hn.deleted = 0) AS roomIds
                   and hn.deleted = 0) AS roomIds

+ 3 - 1
src/main/resources/mapper/template/HouseNumberMapper.xml

@@ -298,7 +298,9 @@
             hn.electric_equipment_id AS electricEquipmentId,
             hn.electric_equipment_id AS electricEquipmentId,
             hn.electric_equipment_meter_name AS electricEquipmentMeterName,
             hn.electric_equipment_meter_name AS electricEquipmentMeterName,
             hn.water_equipment_id AS waterEquipmentId,
             hn.water_equipment_id AS waterEquipmentId,
-            hn.water_equipment_meter_name AS waterEquipmentMeterName
+            hn.water_equipment_meter_name AS waterEquipmentMeterName,
+            b.id as buildingId,
+            h.id as houseId
         FROM
         FROM
             `house_number` hn
             `house_number` hn
                 LEFT JOIN building b ON b.id = hn.building_id
                 LEFT JOIN building b ON b.id = hn.building_id