package com.template.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.template.annotation.Encrypt; import com.template.api.HouseAPI; import com.template.common.utils.DateUtil; import com.template.model.dto.HouseDto; import com.template.model.pojo.*; import com.template.model.result.CommonResult; import com.template.model.result.PageUtils; import com.template.model.vo.*; import com.template.services.*; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; import java.util.List; /** *

* 前端控制器 *

* * @author ceshi * @since 2023-11-06 */ @RestController //加密 //@DESRespondSecret public class HouseController implements HouseAPI { @Autowired HouseService houseService; @Autowired HouseNumberService houseNumberService; @Autowired HouseNumberStateService houseNumberStateService; @Autowired PermissionSettingService permissionSettingService; @Autowired HousePriceService housePriceService; @Autowired FacilityServicesService facilityServicesService; @Override @Encrypt @Transactional(rollbackFor = Exception.class)//1 public CommonResult save(@RequestBody HouseDto houseDto) { if (ObjectUtils.isEmpty(houseDto) && ObjectUtils.isEmpty(houseDto.getAdminId())) { return CommonResult.fail("参数异常"); } PermissionSetting permissionSetting = permissionSettingService.getById(houseDto.getAdminId()); if (ObjectUtils.isEmpty(permissionSetting)) { return CommonResult.fail("非法进入"); } // 判断该用户是否拥有权限 String houseTypeManagement = permissionSetting.getHouseTypeManagement(); if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("1")) { return CommonResult.fail("此账号暂无该权限"); } House house = houseDto.getHouse(); // List roomNumbers = houseDto.getRoomNumbers(); // // Integer number = house.getNumber(); // // if (number != roomNumbers.size()) { // return CommonResult.fail("房间数量不一致"); // } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(House::getRoomName, house.getRoomName()) .eq(House::getRoomType, house.getRoomType()); House one = houseService.getOne(wrapper); if (ObjectUtils.isNotEmpty(one)) { return CommonResult.fail("该房型已存在"); } houseService.save(house); // ArrayList 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(); // } return CommonResult.ok(); } @Override public CommonResult getPage(int page, int size, int type, String keyWord) { if (ObjectUtils.isEmpty(page) && page <= 0) { page = 1; } if (ObjectUtils.isEmpty(size) && size <= 0) { size = 10; } // if (!(type == 1 || type == 2)) { // return CommonResult.fail("参数异常"); // } PageUtils pageDto = houseService.getPage(page, size, type, keyWord); List list = pageDto.getList(); System.out.println("list = " + list); return CommonResult.ok(pageDto); } @Override public CommonResult details(String houseId) { if (ObjectUtils.isEmpty(houseId)) { return CommonResult.fail("参数异常"); } HousedetailsVo housedetailsVo = houseService.details(houseId); if (ObjectUtils.isNotEmpty(housedetailsVo)) { String roomIds = housedetailsVo.getRoomIds(); if (ObjectUtils.isNotEmpty(roomIds)) { String[] split = roomIds.split(","); ArrayList 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); } @Override @Transactional(rollbackFor = Exception.class)//1 public CommonResult update(HouseDto houseDto) { if (ObjectUtils.isEmpty(houseDto) && ObjectUtils.isEmpty(houseDto.getHouse().getId()) && ObjectUtils.isEmpty(houseDto.getAdminId())) { return CommonResult.fail("参数异常"); } PermissionSetting permissionSetting = permissionSettingService.getById(houseDto.getAdminId()); if (ObjectUtils.isEmpty(permissionSetting)) { return CommonResult.fail("非法进入"); } // 判断该用户是否拥有权限 String houseTypeManagement = permissionSetting.getHouseTypeManagement(); if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("2")) { return CommonResult.fail("此账号暂无该权限"); } House house = houseDto.getHouse(); // List roomNumbers = houseDto.getRoomNumbers(); // // Integer number = house.getNumber(); // // if (number != roomNumbers.size()) { // return CommonResult.fail("房间数量不一致"); // } // 判断修改的房型名称和房型类型是是否已存在 House byId = houseService.getById(house.getId()); String roomName = byId.getRoomName(); Integer type = byId.getRoomType(); if (!house.getRoomName().equals(roomName) || !type.equals(house.getRoomType())) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(House::getRoomName, house.getRoomName()) .eq(House::getRoomType, house.getRoomType()); House one = houseService.getOne(wrapper); if (ObjectUtils.isNotEmpty(one)) { return CommonResult.fail("该房型已存在"); } } houseService.updateById(house); return CommonResult.ok(); // try { // // 通过houseId,找到房间号 //// LambdaQueryWrapper wrapperHn = new LambdaQueryWrapper<>(); //// wrapperHn.eq(HouseNumber::getHouseId, house.getId()); //// List list = houseNumberService.list(wrapperHn); //// for (HouseNumber houseNumber : list) { ////// 判断房间号是否还存在 //// String roomNumber = houseNumber.getRoomNumber(); ////// 不存在则删除 //// if (!roomNumbers.contains(roomNumber)) { ////// 判断房间是否有订单,有则不能删除 //// LambdaQueryWrapper wrapperHNS = new LambdaQueryWrapper<>(); //// wrapperHNS.eq(HouseNumberState::getHouseNumberId, houseNumber.getId()) //// .ge(HouseNumberState::getEndTime, new Date()); //// List 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 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(); // } } @Override @Transactional(rollbackFor = Exception.class)//1 public CommonResult delete(String houseId, int adminId) { if (ObjectUtils.isEmpty(houseId) && ObjectUtils.isEmpty(adminId)) { return CommonResult.fail(); } PermissionSetting permissionSetting = permissionSettingService.getById(adminId); if (ObjectUtils.isEmpty(permissionSetting)) { return CommonResult.fail("非法进入"); } // 判断该用户是否拥有权限 String houseTypeManagement = permissionSetting.getHouseTypeManagement(); if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("3")) { return CommonResult.fail("此账号暂无该权限"); } // 删除房型需先删除房间号 // 通过houseId,找到房间号 // LambdaQueryWrapper wrapperHn = new LambdaQueryWrapper<>(); // wrapperHn.eq(HouseNumber::getHouseId, houseId); // List list = houseNumberService.list(wrapperHn); // for (HouseNumber houseNumber : list) { //// 判断房间是否有订单,有则不能删除 // LambdaQueryWrapper wrapperHNS = new LambdaQueryWrapper<>(); // wrapperHNS.eq(HouseNumberState::getHouseNumberId, houseNumber.getId()) // .ge(HouseNumberState::getEndTime, new Date()); // List houseNumberStates = houseNumberStateService.list(wrapperHNS); // if (ObjectUtils.isNotEmpty(houseNumberStates) && houseNumberStates.size() > 0) { // return CommonResult.fail(houseNumber.getRoomNumber() + "房间在使用,无法删除"); // } // } // for (HouseNumber houseNumber : list) { // Integer id = houseNumber.getId(); // houseNumberService.removeById(id); // } House byId = houseService.getById(houseId); if (ObjectUtils.isEmpty(byId)) { return CommonResult.fail("参数异常"); } List houseNumberList = houseNumberService.getHouseId(houseId); if (ObjectUtils.isNotEmpty(houseNumberList) || houseNumberList.size() > 0) { return CommonResult.fail("该房型下还有房间"); } houseService.removeById(Integer.valueOf(houseId)); return CommonResult.ok(); } @Override public CommonResult roomNameType() { List roomNameList = houseService.group(); return CommonResult.ok(roomNameList); } public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); LocalDateTime start = now.withHour(0).withMinute(0).withSecond(0); LocalDateTime end = now.withHour(23).withMinute(59).withSecond(59); System.out.println("start = " + start); System.out.println("end = " + end); } @Override public CommonResult getAppletPage(int page, int size, int type, String startTime, String endTime) { if (ObjectUtils.isEmpty(page) && page <= 0) { page = 1; } if (ObjectUtils.isEmpty(size) && size <= 0) { size = 10; } if (ObjectUtils.isEmpty(startTime) && ObjectUtils.isEmpty(endTime)) { return CommonResult.fail("参数异常"); } DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 判断传过来的时间和当前时间比较 LocalDateTime now = LocalDateTime.now(); LocalDateTime date = LocalDateTime.parse(startTime, dateTimeFormatter1); if (now.isAfter(date)) { startTime = now.format(dateTimeFormatter1); } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(House::getRoomType, type); // 上架 wrapper.eq(House::getIsAdded, 1); IPage page1 = houseService.page(new Page<>(page, size), wrapper); List records = page1.getRecords(); String houseIds = ""; for (int i = 0; i < records.size(); i++) { String id = String.valueOf(records.get(i).getId()); if (i == 0) { houseIds = houseIds + id; } else { houseIds = houseIds + "," + id; } } // 获取今天的所有的改价记录 // LocalDateTime now = LocalDateTime.now(); LocalDateTime now2 = LocalDateTime.parse(startTime, dateTimeFormatter1); LocalDateTime start = now2.withHour(0).withMinute(0).withSecond(0); LocalDateTime end = now2.withHour(23).withMinute(59).withSecond(59); List housePrices = housePriceService.housePrice(start, end, houseIds); ArrayList houseAppletPageVos = new ArrayList<>(); for (House record : records) { HouseAppletPageVo houseAppletPageVo = new HouseAppletPageVo(); BeanUtils.copyProperties(record, houseAppletPageVo); // 获取设置图片 String roomConfiguration = record.getRoomConfiguration(); String[] split1 = roomConfiguration.split(","); ArrayList strings = new ArrayList<>(); for (int i = 0; i < split1.length; i++) { String name = split1[i]; LambdaQueryWrapper wrapperRC = new LambdaQueryWrapper<>(); wrapperRC.eq(FacilityServices::getHouseService, name); FacilityServices one = facilityServicesService.getOne(wrapperRC); if (ObjectUtils.isNotEmpty(one)) { strings.add(one); } } houseAppletPageVo.setRoomConfigurationPicture(strings); String id = String.valueOf(record.getId()); // 判断这个时间内是否有 for (HousePrice housePrice : housePrices) { if (housePrice.getHouseId().equals(id)) { String setDate = housePrice.getSetDate(); String[] split = setDate.split(","); Date startDate = DateUtil.parseDateOnly(split[0]); Date endDate = DateUtil.parseDateOnly(split[1]); // 判断当前时间是否在[startTime, endTime]区间 assert startDate != null; boolean effectiveDate = DateUtil.isEffectiveDate(new Date(), startDate, endDate); if (effectiveDate) { BigDecimal price = housePrice.getPrice(); houseAppletPageVo.setRoomPrice(price); } } } // 判断该房型是否还有房间 LambdaQueryWrapper wrapperHN = new LambdaQueryWrapper<>(); wrapperHN.eq(HouseNumber::getHouseId, id); List houseNumberList = houseNumberService.list(wrapperHN); // 获取当前房型的所有id String houseNumberIds = ""; for (int i = 0; i < houseNumberList.size(); i++) { String houseNumber = houseNumberList.get(i).getId() + ""; if (i == 0) { houseNumberIds = houseNumberIds + houseNumber; } else { houseNumberIds = houseNumberIds + "," + houseNumber; } } // LocalDateTime localDateTime = LocalDateTime.parse(startTime, dateTimeFormatter1); // LocalDateTime endLocalDateTime = LocalDateTime.parse(endTime, dateTimeFormatter1); List houseNumberStates = houseNumberStateService.getHouseNumber(startTime, endTime, houseNumberIds); LambdaQueryWrapper wrapperHN2 = new LambdaQueryWrapper<>(); wrapperHN2.eq(HouseNumber::getHouseId, id); wrapperHN2.eq(HouseNumber::getHouseStatus, 2); List list = houseNumberService.list(wrapperHN2); // 将房态和脏房合一起 HashSet houseNumberIdList = new HashSet<>(houseNumberStates); for (HouseNumber houseNumber : list) { Integer houseNumberId = houseNumber.getId(); houseNumberIdList.add(houseNumberId+""); } if (houseNumberList.size() - houseNumberIdList.size() > 0) { houseAppletPageVo.setHouseStatus("1"); // houseAppletPageVo.setSurplusCount(houseNumberList.size() - houseNumberStates.size() - list.size()); houseAppletPageVo.setSurplusCount(houseNumberList.size() - houseNumberIdList.size()); } else { houseAppletPageVo.setHouseStatus("2"); houseAppletPageVo.setSurplusCount(0); } houseAppletPageVos.add(houseAppletPageVo); } IPage houseAppletPageVoPage = new Page<>(); BeanUtils.copyProperties(page1, houseAppletPageVoPage); houseAppletPageVoPage.setRecords(houseAppletPageVos); return CommonResult.ok(houseAppletPageVoPage); } @Override public CommonResult getappletParticulars(Integer houseId) { if (ObjectUtils.isEmpty(houseId)) { return CommonResult.fail("参数异常"); } House house = houseService.getById(houseId); if (ObjectUtils.isEmpty(house)) { return CommonResult.fail("参数异常"); } JSONObject jsonObject = new JSONObject(); jsonObject.put("housePicture", house.getHousePicture()); jsonObject.put("introductory", house.getIntroductory()); return CommonResult.ok(jsonObject); } @Override public CommonResult displayBar(Integer type) { List list = houseService.displayBar(type); return CommonResult.ok(list); } }