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.HouseNumberControllerAPI;
import com.template.common.utils.ExcelUtils;
import com.template.common.utils.ExcelUtils2;
import com.template.model.dto.HouseNumberBindingDto;
import com.template.model.dto.HouseNumberDeleteBindingDto;
import com.template.model.dto.HouseNumberImportDto;
import com.template.model.pojo.*;
import com.template.model.result.CommonResult;
import com.template.model.result.PageUtils;
import com.template.model.vo.HouseNumberPageVo;
import com.template.services.*;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
*
* 前端控制器
*
*
* @author ceshi
* @since 2023-11-09
*/
@RestController
public class HouseNumberController implements HouseNumberControllerAPI {
@Autowired
HouseNumberService houseNumberService;
@Autowired
ElectricEquipmentService electricEquipmentService;
@Autowired
WaterEquipmentService waterEquipmentService;
@Autowired
PermissionSettingService permissionSettingService;
@Autowired
HouseService houseService;
@Override
public CommonResult pullDownList(String permissionSettingId, int page, int size, String keyWord) {
PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
if (ObjectUtils.isEmpty(permissionSetting)) {
return CommonResult.fail("非法进入");
}
// 判断该用户是否拥有权限
String hydropowerManagement = permissionSetting.getHydropowerManagement();
if (!"0".equals(hydropowerManagement) && !hydropowerManagement.contains("4")) {
return CommonResult.fail("此账号暂无该权限");
}
if (ObjectUtils.isEmpty(page) && page <= 0) {
page = 1;
}
if (ObjectUtils.isEmpty(size) && size <= 0) {
size = 10;
}
LambdaQueryWrapper wrapper=new LambdaQueryWrapper<>();
wrapper.like(ObjectUtils.isNotEmpty(keyWord),HouseNumber::getRoomNumber,keyWord)
.orderByDesc(HouseNumber::getRoomNumber);
IPage page1 = houseNumberService.page(new Page<>(page, size), wrapper);
return CommonResult.ok(page1);
}
@Override
public CommonResult binding(HouseNumberBindingDto houseNumberBindingDto) {
String permissionSettingId = houseNumberBindingDto.getPermissionSettingId();
PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
if (ObjectUtils.isEmpty(permissionSetting)) {
return CommonResult.fail("非法进入");
}
// 判断该用户是否拥有权限
String hydropowerManagement = permissionSetting.getHydropowerManagement();
if (!"0".equals(hydropowerManagement) && !hydropowerManagement.contains("1")) {
return CommonResult.fail("此账号暂无该权限");
}
int houseNumberId = houseNumberBindingDto.getHouseNumberId();
String meterNameElectric = houseNumberBindingDto.getMeterNameElectric();
HouseNumber houseNumber = houseNumberService.getById(houseNumberId);
if (ObjectUtils.isEmpty(houseNumber)) {
return CommonResult.fail("该房间不存在");
}
LambdaQueryWrapper wrapperEE=new LambdaQueryWrapper<>();
wrapperEE.eq(ElectricEquipment::getMeterName,meterNameElectric);
ElectricEquipment electricEquipment = electricEquipmentService.getOne(wrapperEE);
if (ObjectUtils.isEmpty(electricEquipment)) {
return CommonResult.fail("该电表设备不存在");
}
String meterNameWater = houseNumberBindingDto.getMeterNameWater();
LambdaQueryWrapper wrapperWE=new LambdaQueryWrapper<>();
wrapperWE.eq(WaterEquipment::getMeterName,meterNameWater);
WaterEquipment waterEquipment = waterEquipmentService.getOne(wrapperWE);
if (ObjectUtils.isEmpty(waterEquipment)) {
return CommonResult.fail("该水表设备不存在");
}
// 判断电表设备id是否已经被绑定了
LambdaQueryWrapper wrarpperHN=new LambdaQueryWrapper<>();
Integer electricEquipmentId = electricEquipment.getId();
wrarpperHN.eq(HouseNumber::getElectricEquipmentId,electricEquipmentId);
List list = houseNumberService.list(wrarpperHN);
if (ObjectUtils.isNotEmpty(list)) {
return CommonResult.fail("该电表设备已经被绑定");
}
// 绑定电表
houseNumber.setElectricEquipmentId(electricEquipmentId+"");
houseNumber.setElectricEquipmentMeterName(meterNameElectric);
// 判断水表设备id是否已经被绑定了
LambdaQueryWrapper wrarpperHN2=new LambdaQueryWrapper<>();
Integer waterEquipmentId = waterEquipment.getId();
wrarpperHN2.eq(HouseNumber::getWaterEquipmentId,waterEquipmentId);
List list2 = houseNumberService.list(wrarpperHN2);
if (ObjectUtils.isNotEmpty(list2)) {
return CommonResult.fail("该水表设备已经被绑定");
}
// 绑定水表
houseNumber.setWaterEquipmentId(electricEquipmentId+"");
houseNumber.setWaterEquipmentMeterName(meterNameWater);
houseNumberService.updateById(houseNumber);
return CommonResult.ok();
}
@Override
public CommonResult list(String permissionSettingId, int page, int size, String keyWord,String startTime,String endTime) {
PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
if (ObjectUtils.isEmpty(permissionSetting)) {
return CommonResult.fail("非法进入");
}
// 判断该用户是否拥有权限
String hydropowerManagement = permissionSetting.getHydropowerManagement();
if (!"0".equals(hydropowerManagement) && !hydropowerManagement.contains("4")) {
return CommonResult.fail("此账号暂无该权限");
}
if (ObjectUtils.isEmpty(page) && page <= 0) {
page = 1;
}
if (ObjectUtils.isEmpty(size) && size <= 0) {
size = 10;
}
PageUtils pageList =houseNumberService.pageList(page,size,keyWord,startTime,endTime);
return CommonResult.ok(pageList);
}
@Override
public CommonResult update(HouseNumberBindingDto houseNumberBindingDto) {
String permissionSettingId = houseNumberBindingDto.getPermissionSettingId();
PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
if (ObjectUtils.isEmpty(permissionSetting)) {
return CommonResult.fail("非法进入");
}
// 判断该用户是否拥有权限
String hydropowerManagement = permissionSetting.getHydropowerManagement();
if (!"0".equals(hydropowerManagement) && !hydropowerManagement.contains("2")) {
return CommonResult.fail("此账号暂无该权限");
}
int houseNumberId = houseNumberBindingDto.getHouseNumberId();
String meterNameElectric = houseNumberBindingDto.getMeterNameElectric();
HouseNumber houseNumber = houseNumberService.getById(houseNumberId);
if (ObjectUtils.isEmpty(houseNumber)) {
return CommonResult.fail("该房间不存在");
}
LambdaQueryWrapper wrapperEE=new LambdaQueryWrapper<>();
wrapperEE.eq(ElectricEquipment::getMeterName,meterNameElectric);
ElectricEquipment electricEquipment = electricEquipmentService.getOne(wrapperEE);
if (ObjectUtils.isEmpty(electricEquipment)) {
return CommonResult.fail("该电表设备不存在");
}
String meterNameWater = houseNumberBindingDto.getMeterNameWater();
LambdaQueryWrapper wrapperWE=new LambdaQueryWrapper<>();
wrapperWE.eq(WaterEquipment::getMeterName,meterNameWater);
WaterEquipment waterEquipment = waterEquipmentService.getOne(wrapperWE);
if (ObjectUtils.isEmpty(waterEquipment)) {
return CommonResult.fail("该水表设备不存在");
}
// 判断电表设备id是否已经被绑定了
LambdaQueryWrapper wrarpperHN=new LambdaQueryWrapper<>();
Integer electricEquipmentId = electricEquipment.getId();
wrarpperHN.eq(HouseNumber::getElectricEquipmentId,electricEquipmentId);
List list = houseNumberService.list(wrarpperHN);
if (ObjectUtils.isNotEmpty(list)) {
return CommonResult.fail("该电表设备已经被绑定");
}
// 绑定电表
houseNumber.setElectricEquipmentId(electricEquipmentId+"");
houseNumber.setElectricEquipmentMeterName(meterNameElectric);
// 判断水表设备id是否已经被绑定了
LambdaQueryWrapper wrarpperHN2=new LambdaQueryWrapper<>();
Integer waterEquipmentId = waterEquipment.getId();
wrarpperHN2.eq(HouseNumber::getWaterEquipmentId,waterEquipmentId);
List list2 = houseNumberService.list(wrarpperHN2);
if (ObjectUtils.isNotEmpty(list2)) {
return CommonResult.fail("该水表设备已经被绑定");
}
// 绑定水表
houseNumber.setWaterEquipmentId(electricEquipmentId+"");
houseNumber.setWaterEquipmentMeterName(meterNameWater);
houseNumberService.updateById(houseNumber);
return CommonResult.ok();
}
@Override
public CommonResult delete(HouseNumberDeleteBindingDto houseNumberDeleteBindingDto) {
String permissionSettingId = houseNumberDeleteBindingDto.getPermissionSettingId();
PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
if (ObjectUtils.isEmpty(permissionSetting)) {
return CommonResult.fail("非法进入");
}
// 判断该用户是否拥有权限
String hydropowerManagement = permissionSetting.getHydropowerManagement();
if (!"0".equals(hydropowerManagement) && !hydropowerManagement.contains("3")) {
return CommonResult.fail("此账号暂无该权限");
}
int houseNumberId = houseNumberDeleteBindingDto.getHouseNumberId();
HouseNumber houseNumber = houseNumberService.getById(houseNumberId);
if (ObjectUtils.isEmpty(houseNumber)) {
return CommonResult.fail("该房间不存在");
}
// 删除电表
houseNumber.setElectricEquipmentId("");
houseNumber.setElectricEquipmentMeterName("");
// 删除水表
houseNumber.setWaterEquipmentId("");
houseNumber.setWaterEquipmentMeterName("");
houseNumberService.updateById(houseNumber);
return CommonResult.ok();
}
@Override
public CommonResult listExport(HttpServletResponse response, String permissionSettingId, String keyWord, String startTime, String endTime) {
PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
if (ObjectUtils.isEmpty(permissionSetting)) {
return CommonResult.fail("非法进入");
}
// 判断该用户是否拥有权限
String hydropowerManagement = permissionSetting.getHydropowerManagement();
if (!"0".equals(hydropowerManagement) && !hydropowerManagement.contains("5")) {
return CommonResult.fail("此账号暂无该权限");
}
List vos =houseNumberService.listExport(keyWord,startTime,endTime);
// 导出
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("水电设备绑定表");
Row headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("序号");
headerRow.createCell(1).setCellValue("水表编码");
headerRow.createCell(2).setCellValue("电表编码");
headerRow.createCell(3).setCellValue("房型类型");
headerRow.createCell(4).setCellValue("房型名称");
headerRow.createCell(5).setCellValue("房间号");
if (ObjectUtils.isNotEmpty(vos) && vos.size() > 0) {
for (int i = 0; i < vos.size(); i++) {
Row dataRow1 = sheet.createRow(i + 1);
HouseNumberPageVo vo = vos.get(i);
dataRow1.createCell(0).setCellValue(i+1);
dataRow1.createCell(1).setCellValue(vo.getWaterEquipmentMeterName());
dataRow1.createCell(2).setCellValue(vo.getElectricEquipmentMeterName());
Integer roomType = vo.getRoomType();
String houseType="";
if (1==roomType) {
houseType="全日房";
}else {
houseType="钟点房";
}
dataRow1.createCell(3).setCellValue(houseType);
dataRow1.createCell(4).setCellValue(vo.getHouseName());
dataRow1.createCell(5).setCellValue(vo.getHouseName());
}
}
// 将工作簿写入文件
ExcelUtils2.excelDownload(workbook, "水电设备绑定表.xlsx", response);
return CommonResult.ok();
}
@Override
public CommonResult importList(MultipartFile file) throws Exception {
List dtos= ExcelUtils.readMultipartFile(file, HouseNumberImportDto.class);
ArrayList houseNumbers = new ArrayList<>();
for (int i = 0; i < dtos.size(); i++) {
HouseNumberImportDto dto = dtos.get(i);
Integer roomType = dto.getRoomType();
// 房间号
String roomNumber = dto.getRoomNumber();
// 房型
String houseName = dto.getHouseName();
// 判断当前房型是否存在当前房间号
House house=houseService.getHouseName(houseName,roomType);
if (ObjectUtils.isEmpty(house)) {
return CommonResult.fail("第"+(i+2)+"行,"+"不存在"+houseName+"该房型");
}
Integer houseId = house.getId();
HouseNumber houseNumber=houseNumberService.getRoomNumber(houseId,roomNumber);
if (ObjectUtils.isEmpty(houseNumber)) {
return CommonResult.fail("第"+(i+2)+"行,"+"不存在"+roomNumber+"该房间号");
}
String electricEquipmentMeterName = dto.getElectricEquipmentMeterName();
LambdaQueryWrapper 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 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());
houseNumbers.add(houseNumber);
}
boolean b = houseNumberService.saveOrUpdateBatch(houseNumbers);
if (b) {
return CommonResult.ok();
}
return CommonResult.fail();
}
}