package com.template.controller;
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.api.BuildingControllerAPI;
import com.template.model.pojo.Building;
import com.template.model.pojo.HouseNumber;
import com.template.model.result.CommonResult;
import com.template.model.vo.BuildingBarVo;
import com.template.services.BuildingService;
import com.template.services.HouseNumberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 前端控制器
*
*
* @author ceshi
* @since 2024-08-08
*/
@RestController
public class BuildingController implements BuildingControllerAPI {
@Autowired
BuildingService buildingService;
@Autowired
HouseNumberService houseNumberService;
@Override
public CommonResult save(Building building) {
String building1 = building.getBuilding();
String element = building.getElement();
if (ObjectUtils.isEmpty(building1) || ObjectUtils.isEmpty(element)) {
return CommonResult.fail("楼栋和单元不能为空");
}
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Building::getBuilding, building1)
.eq(Building::getElement, element);
Building one = buildingService.getOne(wrapper);
if (ObjectUtils.isNotEmpty(one)) {
return CommonResult.fail("已存在");
}
buildingService.save(building);
return CommonResult.ok();
}
@Override
public CommonResult getPage(int page, int size, String keyWord) {
IPage buildingPage = new Page<>(page, size);
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.like(ObjectUtils.isNotEmpty(keyWord), Building::getBuilding, keyWord)
.or()
.like(ObjectUtils.isNotEmpty(keyWord),Building::getElement,keyWord);
wrapper.orderByAsc(Building::getBuilding)
.orderByAsc(Building::getElement);
IPage page1 = buildingService.page(buildingPage, wrapper);
return CommonResult.ok(page1);
}
@Override
public CommonResult update(Building building) {
String building1 = building.getBuilding();
String element = building.getElement();
if (ObjectUtils.isEmpty(building1) || ObjectUtils.isEmpty(element)) {
return CommonResult.fail("楼栋和单元不能为空");
}
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Building::getBuilding, building1)
.eq(Building::getElement, element);
Building one = buildingService.getOne(wrapper);
if (ObjectUtils.isNotEmpty(one)) {
return CommonResult.fail("已存在该楼栋和单元");
}
buildingService.updateById(building);
return CommonResult.ok();
}
@Override
public CommonResult delete(Integer buildingId) {
LambdaQueryWrapper wrapper=new LambdaQueryWrapper<>();
wrapper.eq(HouseNumber::getBuildingId,buildingId);
List list = houseNumberService.list(wrapper);
if (ObjectUtils.isNotEmpty(list)) {
return CommonResult.fail("该楼栋下还存在房间");
}
buildingService.removeById(buildingId);
return CommonResult.ok();
}
@Override
public CommonResult displayBar() {
List buildings = buildingService.group();
List list = buildingService.list(new LambdaQueryWrapper<>());
ArrayList vos = new ArrayList<>();
for (int i = 0; i < buildings.size(); i++) {
String b = buildings.get(i);
BuildingBarVo vo = new BuildingBarVo();
vo.setId(1000000+i);
vo.setElement(b);
List ownerClasses = list.stream().filter(e -> e.getBuilding().equals(b)).collect(Collectors.toList());
if (ownerClasses != null && ownerClasses.size() > 0) {
vo.setBuildings(ownerClasses);
}
vos.add(vo);
}
return CommonResult.ok(vos);
}
}