You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
239 lines
10 KiB
239 lines
10 KiB
package com.mh.user.controller; |
|
|
|
import com.mh.common.http.HttpResult; |
|
import com.mh.user.annotation.SysLogger; |
|
import com.mh.user.entity.BuildingEntity; |
|
import com.mh.user.model.BuildingModel; |
|
import com.mh.user.service.BuildingService; |
|
import org.apache.poi.hssf.usermodel.HSSFCell; |
|
import org.apache.poi.hssf.usermodel.HSSFSheet; |
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
|
import org.apache.poi.ss.usermodel.CellType; |
|
import org.springframework.beans.factory.annotation.Autowired; |
|
import org.springframework.web.bind.annotation.*; |
|
import org.springframework.web.multipart.MultipartFile; |
|
import javax.servlet.http.HttpServletRequest; |
|
import java.io.IOException; |
|
import java.io.InputStream; |
|
import java.text.SimpleDateFormat; |
|
import java.util.ArrayList; |
|
import java.util.HashMap; |
|
import java.util.List; |
|
import java.util.Map; |
|
|
|
@RestController |
|
@RequestMapping("building") |
|
public class BuildingController { |
|
|
|
@Autowired |
|
private BuildingService buildingService; |
|
|
|
//保存 |
|
@SysLogger(title="楼栋信息",optDesc = "保存楼栋信息") |
|
@PostMapping(value="/save") |
|
public HttpResult saveBuilding(@RequestBody BuildingEntity buildingEntity) { |
|
try{ |
|
return HttpResult.ok(buildingService.saveBuilding(buildingEntity)); |
|
}catch (Exception e){ |
|
e.printStackTrace(); |
|
return HttpResult.error(); |
|
} |
|
} |
|
|
|
//修改 |
|
@SysLogger(title="楼栋信息",optDesc = "修改楼栋信息") |
|
@PostMapping(value="/update") |
|
public HttpResult updateBuilding(@RequestBody BuildingEntity buildingEntity) { |
|
return HttpResult.ok("success",buildingService.updateBuilding(buildingEntity)); |
|
} |
|
|
|
//查询所有 |
|
@SysLogger(title="楼栋信息",optDesc = "查询楼栋信息") |
|
@PostMapping(value = "/query") |
|
public HttpResult queryBuilding(@RequestParam(value = "buildingId", required = false)String buildingId, |
|
@RequestParam(value= "page", required=true)Integer page, |
|
@RequestParam(value= "limit", required=true)Integer limit) { |
|
try{ |
|
int count=buildingService.getCount(buildingId, page,limit); |
|
List<BuildingEntity> records=buildingService.queryBuilding(buildingId, page,limit); |
|
return HttpResult.ok(count,records); |
|
}catch (Exception e){ |
|
e.printStackTrace(); |
|
return HttpResult.error(); |
|
} |
|
} |
|
|
|
//查询楼栋名称 |
|
@PostMapping(value="/name") |
|
public HttpResult selectBuildingName() { |
|
try{ |
|
List<BuildingModel> list=buildingService.selectBuildingName(); |
|
return HttpResult.ok(list); |
|
}catch (Exception e){ |
|
e.printStackTrace(); |
|
return HttpResult.error(); |
|
} |
|
|
|
} |
|
|
|
// 删除多 |
|
@PostMapping(value="/deletes") |
|
public HttpResult deleteDevices(@RequestBody List<BuildingEntity> records) { |
|
return HttpResult.ok(buildingService.deleteBuilding(records)); |
|
} |
|
|
|
// 删除单个 |
|
@SysLogger(title="楼栋信息",optDesc = "删除楼栋信息") |
|
@PostMapping(value="/delete") |
|
public HttpResult deleteDevice(@RequestParam String id ) { |
|
return HttpResult.ok(buildingService.deleteBuilding(id)); |
|
} |
|
|
|
// 查询编号 |
|
@PostMapping(value="/selectBuildingId") |
|
public HttpResult selectBuildingId(@RequestParam String buildingName ) { |
|
String id=buildingService.selectBuildingId(buildingName); |
|
return HttpResult.ok(id); |
|
} |
|
|
|
// 资料批量上传 |
|
@SysLogger(title="楼栋信息",optDesc = "批量导入楼栋信息") |
|
@PostMapping("/import_building") |
|
public HttpResult importExcel(@RequestParam(value = "file") MultipartFile file, HttpServletRequest req) { |
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
HttpResult httpResult=new HttpResult(); |
|
try { |
|
int is=0; //判断是否有重复 |
|
String msg=""; |
|
List<String> a = new ArrayList(); |
|
InputStream inputStream = file.getInputStream(); |
|
//创建工作簿 |
|
//如果是xls,使用HSSFWorkbook;如果是xlsx,使用XSSFWorkbook |
|
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(inputStream); |
|
System.out.println("xssfWorkbook对象:" + hssfWorkbook); |
|
//读取第一个工作表 |
|
HSSFSheet sheet = hssfWorkbook.getSheetAt(0); |
|
System.out.println("sheet对象:" + sheet); |
|
//获取最后一行的num,即总行数。此处从0开始计数 |
|
int maxRow = sheet.getLastRowNum(); |
|
System.out.println("总行数为:" + maxRow); |
|
if (maxRow >= 500){ |
|
msg = "总行数不能超出500行"; |
|
httpResult.setMsg(msg); |
|
httpResult.setCode(500); |
|
return httpResult; |
|
} |
|
if (maxRow == 0){ |
|
msg = "请先录入数据到excel文件"; |
|
httpResult.setMsg(msg); |
|
httpResult.setCode(500); |
|
return httpResult; |
|
} |
|
|
|
// 创建数组集合 |
|
List<BuildingEntity> uploadEntityList = new ArrayList<>(); |
|
List<String> deviceList = new ArrayList<>(); |
|
for (int row = 1; row <= maxRow; row++) { |
|
//获取最后单元格num,即总单元格数 ***注意:此处从1开始计数*** |
|
int maxRol = sheet.getRow(row).getLastCellNum(); |
|
System.out.println("总列数为:" + maxRol); |
|
System.out.println("--------第" + row + "行的数据如下--------"); |
|
for (int rol = 0; rol < maxRol; rol++){ |
|
String sCell; |
|
if (sheet.getRow(row).getCell(rol) == null){ |
|
sCell=""; |
|
}else{ |
|
HSSFCell cell = sheet.getRow(row).getCell(rol); |
|
cell.setCellType(CellType.STRING); |
|
sCell = cell.getStringCellValue(); |
|
} |
|
sCell = sCell.trim(); //去首尾空格 |
|
sCell = sCell.replaceAll(" ", ""); //去掉所有空格,包括首尾、中间 |
|
sCell = sCell.replaceAll("\\s*", ""); //可以替换大部分空白字符, 不限于空格,\s 可以匹配空格、制表符、换页符等空白字符的其中任意一个 |
|
System.out.print(sCell + " "); |
|
deviceList.add(sCell); |
|
String rolName = ""; |
|
switch (rol){ |
|
case 1 : |
|
rolName = "楼栋名称"; |
|
break; |
|
case 2 : |
|
rolName = "楼层数"; |
|
break; |
|
case 3 : |
|
rolName = "起始楼层"; |
|
break; |
|
case 4 : |
|
rolName = "每层宿舍数"; |
|
break; |
|
case 5 : |
|
rolName = "床位数"; |
|
break; |
|
case 6 : |
|
rolName = "实际入住数"; |
|
break; |
|
case 7 : |
|
rolName = "水箱高度"; |
|
break; |
|
case 8 : |
|
rolName = "水箱高度(低区)"; |
|
break; |
|
case 9 : |
|
rolName = "热泵个数"; |
|
break; |
|
} |
|
if ((rol >= 1)&&(rol <= 4)&&(sCell.equals(""))){ |
|
msg = rolName + "不能为空" ; |
|
httpResult.setMsg(msg); |
|
httpResult.setCode(500); |
|
return httpResult; |
|
} |
|
} |
|
|
|
// 创建实体类 |
|
BuildingEntity uploadEntity = new BuildingEntity(); |
|
uploadEntity.setBuildingName(deviceList.get(0));//楼栋名称 |
|
uploadEntity.setLevelsCount(Integer.parseInt(deviceList.get(1))); //楼层数 |
|
uploadEntity.setBeginLevel(Integer.parseInt(deviceList.get(2))); //起始楼层 |
|
uploadEntity.setHouseCount(Integer.parseInt(deviceList.get(3))); //每层宿舍数 |
|
uploadEntity.setBedCount(Integer.parseInt(deviceList.get(4))); //床位数 |
|
uploadEntity.setCheckInCount(Integer.parseInt(deviceList.get(5))); //实际入住数 |
|
uploadEntity.setTankHeight(Double.parseDouble(deviceList.get(6))); //默认(高区)水箱高度 |
|
uploadEntity.setLowTankHeight(Double.parseDouble(deviceList.get(7))); //低区水箱高度 |
|
uploadEntity.setPumpCount(Integer.parseInt(deviceList.get(8))); //热泵个数 |
|
|
|
deviceList.clear(); |
|
|
|
uploadEntityList.add(uploadEntity); |
|
is=buildingService.selectCount(uploadEntity.getBuildingName()); |
|
if (is>0){ |
|
httpResult.setMsg("楼栋名称有重复!"); |
|
httpResult.setCode(500); |
|
// return httpResult; |
|
} |
|
} |
|
|
|
if (is==0){ |
|
for (BuildingEntity buildingEntity:uploadEntityList){ |
|
buildingService.saveBuilding(buildingEntity); |
|
} |
|
httpResult.setMsg("success"); |
|
httpResult.setCode(200); |
|
return httpResult; |
|
} |
|
|
|
} catch (IOException e) { |
|
// TODO Auto-generated catch block |
|
e.printStackTrace(); |
|
} |
|
return httpResult; |
|
} |
|
|
|
// 查询楼栋热泵数目 |
|
@PostMapping(value="/pumpCount") |
|
public HttpResult selectPumpCount(@RequestParam String buildingId ) { |
|
int count=buildingService.selectPumpCount(buildingId); |
|
return HttpResult.ok("success",count); |
|
} |
|
|
|
}
|
|
|