Browse Source

1、添加区域管理,对应查询功能需要同步修改;

dev
25604 4 days ago
parent
commit
71824ddb8f
  1. 199
      user-service/src/main/java/com/mh/user/controller/AreaController.java
  2. 17
      user-service/src/main/java/com/mh/user/controller/BuildingController.java
  3. 5
      user-service/src/main/java/com/mh/user/controller/DeviceInstallController.java
  4. 220
      user-service/src/main/java/com/mh/user/controller/EnergyController.java
  5. 194
      user-service/src/main/java/com/mh/user/controller/NowDataController.java
  6. 23
      user-service/src/main/java/com/mh/user/controller/SummaryController.java
  7. 32
      user-service/src/main/java/com/mh/user/entity/AreaEntity.java
  8. 2
      user-service/src/main/java/com/mh/user/entity/BuildingEntity.java
  9. 1
      user-service/src/main/java/com/mh/user/mapper/AnalysisMapper.java
  10. 77
      user-service/src/main/java/com/mh/user/mapper/AreaMapper.java
  11. 32
      user-service/src/main/java/com/mh/user/mapper/BuildingMapper.java
  12. 6
      user-service/src/main/java/com/mh/user/mapper/DeviceInstallMapper.java
  13. 304
      user-service/src/main/java/com/mh/user/mapper/EnergyMapper.java
  14. 24
      user-service/src/main/java/com/mh/user/mapper/provider/BuildingProvider.java
  15. 24
      user-service/src/main/java/com/mh/user/mapper/provider/DeviceInstallProvider.java
  16. 2
      user-service/src/main/java/com/mh/user/mapper/provider/EnergyProvider.java
  17. 88
      user-service/src/main/java/com/mh/user/model/AreaBuildingTreeModel.java
  18. 10
      user-service/src/main/java/com/mh/user/model/AreaModel.java
  19. 19
      user-service/src/main/java/com/mh/user/service/AreaService.java
  20. 11
      user-service/src/main/java/com/mh/user/service/BuildingService.java
  21. 4
      user-service/src/main/java/com/mh/user/service/DeviceInstallService.java
  22. 8
      user-service/src/main/java/com/mh/user/service/EnergyService.java
  23. 6
      user-service/src/main/java/com/mh/user/service/NowDataService.java
  24. 2
      user-service/src/main/java/com/mh/user/service/SummaryService.java
  25. 56
      user-service/src/main/java/com/mh/user/service/impl/AreaServiceImpl.java
  26. 124
      user-service/src/main/java/com/mh/user/service/impl/BuildingServiceImpl.java
  27. 2
      user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java
  28. 71
      user-service/src/main/java/com/mh/user/service/impl/DeviceInstallServiceImpl.java
  29. 81
      user-service/src/main/java/com/mh/user/service/impl/EnergyServiceImpl.java
  30. 25
      user-service/src/main/java/com/mh/user/service/impl/NowDataServiceImpl.java
  31. 122
      user-service/src/main/java/com/mh/user/service/impl/SummaryServiceImpl.java
  32. 8
      user-service/src/main/java/com/mh/user/strategy/EleMeterStrategy.java
  33. 6
      user-service/src/main/java/com/mh/user/strategy/TimeControlStrategy.java
  34. 2
      user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java
  35. 42
      user-service/src/main/java/com/mh/user/utils/GetReadOrder485.java
  36. 16
      user-service/src/main/resources/application-prod.yml

199
user-service/src/main/java/com/mh/user/controller/AreaController.java

@ -1,16 +1,26 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.annotation.SysLogger;
import com.mh.user.entity.AreaEntity;
import com.mh.user.entity.ExceptionTableData;
import com.mh.user.entity.BuildingEntity;
import com.mh.user.model.AreaModel;
import com.mh.user.service.AreaService;
import lombok.extern.slf4j.Slf4j;
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.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
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.List;
/**
@ -20,6 +30,7 @@ import java.util.List;
* @updateTime 2022-06-09
* @throws
*/
@Slf4j
@RestController
@RequestMapping("area")
public class AreaController {
@ -30,9 +41,183 @@ public class AreaController {
@PreAuthorize("hasAuthority('sys:area:view')")
@PostMapping(value = "/findArea")
public HttpResult findArea() {
List<AreaEntity> list=areaService.findAll();
List<AreaEntity> list = areaService.findAll();
// System.out.println("test");
return HttpResult.ok("500",list);
return HttpResult.ok("500", list);
}
//保存
@SysLogger(title = "区域信息", optDesc = "保存区域信息")
@PostMapping(value = "/save")
public HttpResult saveArea(@RequestBody AreaEntity areaEntity) {
try {
int count = areaService.saveArea(areaEntity);
if (count > 0) {
return HttpResult.ok("保存成功");
} else {
return HttpResult.error(500, "区域id或者区域名称已存在");
}
} catch (Exception e) {
log.error("保存区域信息异常:{}", e);
return HttpResult.error();
}
}
//修改
@SysLogger(title = "区域信息", optDesc = "修改区域信息")
@PostMapping(value = "/update")
public HttpResult updateBuilding(@RequestBody AreaEntity areaEntity) {
return HttpResult.ok("success", areaService.updateArea(areaEntity));
}
//查询所有
@SysLogger(title = "区域信息", optDesc = "查询区域信息")
@PostMapping(value = "/query")
public HttpResult queryBuilding(@RequestParam(value = "areaId", required = false) String areaId,
@RequestParam(value = "page", required = true) Integer page,
@RequestParam(value = "limit", required = true) Integer limit) {
try {
int count = areaService.getCount(areaId, page, limit);
List<AreaEntity> records = areaService.queryArea(areaId, page, limit);
return HttpResult.ok(count, records);
} catch (Exception e) {
e.printStackTrace();
return HttpResult.error();
}
}
//查询区域名称
@PostMapping(value = "/name")
public HttpResult selectAreaName() {
try {
List<AreaModel> list = areaService.selectAreaName();
return HttpResult.ok(list);
} catch (Exception e) {
e.printStackTrace();
return HttpResult.error();
}
}
// 删除多
@PostMapping(value = "/deletes")
public HttpResult deleteDevices(@RequestBody List<AreaEntity> records) {
return HttpResult.ok(areaService.deleteArea(records));
}
// 删除单个
@SysLogger(title = "区域信息", optDesc = "删除区域信息")
@PostMapping(value = "/delete")
public HttpResult deleteDevice(@RequestParam String id) {
return HttpResult.ok(areaService.deleteAreaById(id));
}
// 资料批量上传
@SysLogger(title = "区域信息", optDesc = "批量导入区域信息")
@PostMapping("/import_area")
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<AreaEntity> 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 2:
rolName = "区域ID";
break;
case 1:
rolName = "区域名称";
break;
case 3:
rolName = "排序";
break;
}
if ((rol >= 1) && (rol <= 4) && (sCell.equals(""))) {
msg = rolName + "不能为空";
httpResult.setMsg(msg);
httpResult.setCode(500);
return httpResult;
}
}
// 创建实体类
AreaEntity uploadEntity = new AreaEntity();
uploadEntity.setAreaId(deviceList.get(1)); // 区域ID编号
uploadEntity.setAreaName(deviceList.get(0)); // 区域名称
uploadEntity.setSort(Integer.parseInt(deviceList.get(2))); // 排序
deviceList.clear();
uploadEntityList.add(uploadEntity);
is = areaService.selectByAreaName(uploadEntity.getAreaName());
if (is > 0) {
httpResult.setMsg("楼栋名称有重复!");
httpResult.setCode(500);
}
}
if (is == 0) {
for (AreaEntity val : uploadEntityList) {
areaService.saveArea(val);
}
httpResult.setMsg("success");
httpResult.setCode(200);
return httpResult;
}
} catch (IOException e) {
// TODO Auto-generated catch block
log.error("批量导入区域异常:{}", e);
}
return httpResult;
}
}

17
user-service/src/main/java/com/mh/user/controller/BuildingController.java

@ -3,6 +3,7 @@ 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.AreaBuildingTreeModel;
import com.mh.user.model.BuildingModel;
import com.mh.user.service.BuildingService;
import org.apache.poi.hssf.usermodel.HSSFCell;
@ -52,10 +53,11 @@ public class BuildingController {
@PostMapping(value = "/query")
public HttpResult queryBuilding(@RequestParam(value = "buildingId", required = false)String buildingId,
@RequestParam(value= "page", required=true)Integer page,
@RequestParam(value = "level", required = false, defaultValue = "0")int level,
@RequestParam(value= "limit", required=true)Integer limit) {
try{
int count=buildingService.getCount(buildingId, page,limit);
List<BuildingEntity> records=buildingService.queryBuilding(buildingId, page,limit);
List<BuildingEntity> records=buildingService.queryBuilding(buildingId, page,limit, level);
int count=buildingService.getCount(buildingId, page,limit, level);
return HttpResult.ok(count,records);
}catch (Exception e){
e.printStackTrace();
@ -67,6 +69,8 @@ public class BuildingController {
@PostMapping(value="/name")
public HttpResult selectBuildingName() {
try{
// List<AreaBuildingTreeModel> list=buildingService.queryTree();
// return HttpResult.ok(list);
List<BuildingModel> list=buildingService.selectBuildingName();
return HttpResult.ok(list);
}catch (Exception e){
@ -236,4 +240,13 @@ public class BuildingController {
return HttpResult.ok("success",count);
}
/**
* 查询树形结构楼栋信息
*/
@PostMapping(value="/tree")
public HttpResult queryTree() {
List<AreaBuildingTreeModel> list=buildingService.queryTree();
return HttpResult.ok(list);
}
}

5
user-service/src/main/java/com/mh/user/controller/DeviceInstallController.java

@ -129,6 +129,7 @@ public class DeviceInstallController {
@RequestParam(value = "isOnline", required=false)String isOnline,
@RequestParam(value = "isUse", required=false)String isUse,
@RequestParam(value = "isFault", required=false)String isFault,
@RequestParam(value = "level", required=false, defaultValue = "0")int level,
@RequestParam(value = "page", required=true)Integer page,
@RequestParam(value = "limit", required=true)Integer limit) {
try{
@ -137,8 +138,8 @@ public class DeviceInstallController {
String curDate=sdf1.format(date);
dealDataService.proDeviceState(curDate); //刷新统计设备状态数据
int count=deviceInstallService.getCount(buildingId,deviceType, startDate, endDate,isOnline,isUse,isFault, page,limit);
List<DeviceInstallEntity> records=deviceInstallService.queryDevice(buildingId,deviceType, startDate, endDate,isOnline,isUse,isFault, page,limit);
int count=deviceInstallService.getCount(buildingId,deviceType, startDate, endDate,isOnline,isUse,isFault, page,limit, level);
List<DeviceInstallEntity> records=deviceInstallService.queryDevice(buildingId,deviceType, startDate, endDate,isOnline,isUse,isFault, page,limit, level);
return HttpResult.ok(count,records);
}catch (Exception e){
//e.printStackTrace();

220
user-service/src/main/java/com/mh/user/controller/EnergyController.java

@ -2,12 +2,14 @@ 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.entity.EnergyEntity;
import com.mh.user.model.SumModel;
import com.mh.user.service.BuildingService;
import com.mh.user.service.EnergyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -23,88 +25,89 @@ public class EnergyController {
@Autowired
BuildingService buildingService;
@SysLogger(title="用能分析",optDesc = "保存能耗信息")
@SysLogger(title = "用能分析", optDesc = "保存能耗信息")
@PostMapping("/save")
public HttpResult saveEnergy(@RequestBody EnergyEntity energyEntity, @RequestParam(value = "type") int type){
try{
energyService.saveEnergy(energyEntity,type);
public HttpResult saveEnergy(@RequestBody EnergyEntity energyEntity, @RequestParam(value = "type") int type) {
try {
energyService.saveEnergy(energyEntity, type);
return HttpResult.ok();
}catch (Exception e){
} catch (Exception e) {
return HttpResult.error("保存出错!");
}
}
@SysLogger(title="用能分析",optDesc = "修改能耗信息")
@SysLogger(title = "用能分析", optDesc = "修改能耗信息")
@PostMapping("/update")
public HttpResult updateEnergy(@RequestBody EnergyEntity energyEntity, @RequestParam(value = "type") int type){
try{
energyService.updateEnergy(energyEntity,type);
public HttpResult updateEnergy(@RequestBody EnergyEntity energyEntity, @RequestParam(value = "type") int type) {
try {
energyService.updateEnergy(energyEntity, type);
return HttpResult.ok();
}catch (Exception e){
} catch (Exception e) {
return HttpResult.error("修改出错!");
}
}
@PostMapping("/delete")
@SysLogger(title="用能分析",optDesc = "删除能耗信息")
@SysLogger(title = "用能分析", optDesc = "删除能耗信息")
public HttpResult deleteEnergy(@RequestParam(value = "curDate") String curDate,
@RequestParam(value = "buildingId") String buildingId,
@RequestParam(value = "type") int type){
try{
@RequestParam(value = "type") int type) {
try {
energyService.deleteEnergy(curDate,buildingId,type);
energyService.deleteEnergy(curDate, buildingId, type);
return HttpResult.ok();
}catch (Exception e){
} catch (Exception e) {
return HttpResult.error("删除出错!");
}
}
@SysLogger(title="用能分析",optDesc = "查询能耗信息")
@SysLogger(title = "用能分析", optDesc = "查询能耗信息")
@PostMapping("/query")
public HttpResult queryEnergy(@RequestParam(value = "buildingId",required = false) String buildingId,
@RequestParam(value = "startDate",required = false) String startDate,
@RequestParam(value = "endDate",required = false) String endDate,
public HttpResult queryEnergy(@RequestParam(value = "buildingId", required = false) String buildingId,
@RequestParam(value = "startDate", required = false) String startDate,
@RequestParam(value = "endDate", required = false) String endDate,
@RequestParam(value = "level", required = false, defaultValue = "0") int level,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit,
@RequestParam(value = "type") int type){
try{
String areaId="";
if (buildingId!=null && buildingId.length()>0){
if (!buildingId.equals("所有")){
areaId=buildingService.queryAreaId(Integer.parseInt(buildingId));
}
}
List<EnergyEntity> list=new ArrayList<>();
int count=0;
if (areaId!=null && areaId.length()>0){
list=energyService.queryEnergy(areaId,startDate,endDate,page,limit,type);
count=energyService.getEnergyCount(areaId,startDate,endDate,page,limit,type);
}else{
list=energyService.queryEnergy(buildingId,startDate,endDate,page,limit,type);
count=energyService.getEnergyCount(buildingId,startDate,endDate,page,limit,type);
}
@RequestParam(value = "type") int type) {
try {
// String areaId="";
// if (buildingId!=null && buildingId.length()>0){
// if (!buildingId.equals("所有")){
// areaId=buildingService.queryAreaId(Integer.parseInt(buildingId));
// }
// }
List<EnergyEntity> list = new ArrayList<>();
int count = 0;
// if (areaId!=null && areaId.length()>0){
list = energyService.queryEnergy(buildingId, startDate, endDate, page, limit, type, level);
count = energyService.getEnergyCount(buildingId, startDate, endDate, page, limit, type, level);
// }else{
// list=energyService.queryEnergy(buildingId,startDate,endDate,page,limit,type, level);
// count=energyService.getEnergyCount(buildingId,startDate,endDate,page,limit,type, level);
// }
// System.out.println("返回前端数据:"+list);
return HttpResult.ok(count,list);
}catch (Exception e){
// e.printStackTrace();
return HttpResult.ok(count, list);
} catch (Exception e) {
e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
//主界面水、电、单耗查询
@SysLogger(title="项目概况",optDesc = "查询能耗信息")
@SysLogger(title = "项目概况", optDesc = "查询能耗信息")
@PostMapping("/queryGroup")
public HttpResult queryEnergyGroup(@RequestParam(value = "curDate",required = true) String curDate,
@RequestParam(value = "type",required = true,defaultValue = "1") int type){
try{
List<EnergyEntity> list=new ArrayList<EnergyEntity>();
list=energyService.queryEnergyGroup(curDate,type);
public HttpResult queryEnergyGroup(@RequestParam(value = "curDate", required = true) String curDate,
@RequestParam(value = "type", required = true, defaultValue = "1") int type) {
try {
List<EnergyEntity> list = new ArrayList<EnergyEntity>();
list = energyService.queryEnergyGroup(curDate, type);
return HttpResult.ok(list);
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
return HttpResult.error("查询出错!");
}
@ -112,32 +115,32 @@ public class EnergyController {
}
//查询每天的用量
@SysLogger(title="用能分析",optDesc = "查询每天的用量")
@SysLogger(title = "用能分析", optDesc = "查询每天的用量")
@PostMapping("/queryDay")
public HttpResult queryDayEnergy(@RequestParam(value = "buildingId",required = false) String buildingId,
@RequestParam(value = "startDate",required = false) String startDate,
@RequestParam(value = "endDate",required = false) String endDate,
public HttpResult queryDayEnergy(@RequestParam(value = "buildingId", required = false) String buildingId,
@RequestParam(value = "startDate", required = false) String startDate,
@RequestParam(value = "endDate", required = false) String endDate,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
String areaId="";
if (buildingId!=null && buildingId.length()>0){
if (!buildingId.equals("所有")){
areaId=buildingService.queryAreaId(Integer.parseInt(buildingId));
@RequestParam(value = "limit") int limit) {
try {
String areaId = "";
if (buildingId != null && buildingId.length() > 0) {
if (!buildingId.equals("所有")) {
areaId = buildingService.queryAreaId(Integer.parseInt(buildingId));
}
}
List<EnergyEntity> list;
int count=0;
if (areaId!=null && areaId.length()>0){
list=energyService.queryDayEnergy(areaId,startDate,endDate,page,limit);
count=energyService.getDayEnergyCount(areaId,startDate,endDate,page,limit);
}else{
list=energyService.queryDayEnergy(buildingId,startDate,endDate,page,limit);
count=energyService.getDayEnergyCount(buildingId,startDate,endDate,page,limit);
int count = 0;
if (areaId != null && areaId.length() > 0) {
list = energyService.queryDayEnergy(areaId, startDate, endDate, page, limit);
count = energyService.getDayEnergyCount(areaId, startDate, endDate, page, limit);
} else {
list = energyService.queryDayEnergy(buildingId, startDate, endDate, page, limit);
count = energyService.getDayEnergyCount(buildingId, startDate, endDate, page, limit);
}
return HttpResult.ok(count,list);
}catch (Exception e){
return HttpResult.ok(count, list);
} catch (Exception e) {
e.printStackTrace();
return HttpResult.error("查询出错!");
}
@ -145,31 +148,34 @@ public class EnergyController {
}
//查询小时的用量
@SysLogger(title="用能分析",optDesc = "查询小时的用量")
@SysLogger(title = "用能分析", optDesc = "查询小时的用量")
@PostMapping("/queryHour")
public HttpResult queryHourEnergy(@RequestParam(value = "buildingId",required = false) String buildingId,
@RequestParam(value = "curDate",required = false) String curDate,
public HttpResult queryHourEnergy(@RequestParam(value = "buildingId", required = false) String buildingId,
@RequestParam(value = "curDate", required = false) String curDate,
@RequestParam(value = "level", required = false, defaultValue = "0") int level,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
String areaId="";
if (buildingId!=null && buildingId.length()>0){
if (!buildingId.equals("所有")){
areaId=buildingService.queryAreaId(Integer.parseInt(buildingId));
}
}
@RequestParam(value = "limit") int limit) {
try {
// String areaId = "";
// if (buildingId != null && buildingId.length() > 0) {
// if (!buildingId.equals("所有")) {
// areaId = buildingService.queryAreaId(Integer.parseInt(buildingId));
// }
// }
List<EnergyEntity> list;
int count=0;
if (areaId!=null && areaId.length()>0){
list=energyService.queryHourEnergy(areaId,curDate,page,limit);
count=energyService.getHourEnergyCount(areaId,curDate);
}else{
list=energyService.queryHourEnergy(buildingId,curDate,page,limit);
count=energyService.getHourEnergyCount(buildingId,curDate);
}
return HttpResult.ok(count,list);
}catch (Exception e){
int count = 0;
// if (areaId != null && areaId.length() > 0) {
// list = energyService.queryHourEnergy(areaId, curDate, page, limit, level);
//// count=energyService.getHourEnergyCount(areaId,curDate, level);
// count = list.size();
// } else {
list = energyService.queryHourEnergy(buildingId, curDate, page, limit, level);
// count=energyService.getHourEnergyCount(buildingId,curDate, level);
count = list.size();
// }
return HttpResult.ok(count, list);
} catch (Exception e) {
e.printStackTrace();
return HttpResult.error("查询出错!");
}
@ -177,36 +183,36 @@ public class EnergyController {
}
//查询楼栋时段用量对比
@SysLogger(title="用能分析",optDesc = "查询楼栋时段用量对比")
@SysLogger(title = "用能分析", optDesc = "查询楼栋时段用量对比")
@PostMapping("/queryBuild")
public HttpResult queryEnergyBuilding(@RequestParam(value = "curDate",required = false) String curDate,
@RequestParam(value = "endDate",required = false) String endDate,
@RequestParam(value = "type",required = false) int type,
public HttpResult queryEnergyBuilding(@RequestParam(value = "curDate", required = false) String curDate,
@RequestParam(value = "endDate", required = false) String endDate,
@RequestParam(value = "type", required = false) int type,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
energyService.proEnergyBuilding(curDate,endDate,type);
List<EnergyEntity> list=energyService.queryEnergyBuilding(page,limit);
SumModel list2=energyService.queryEnergySum();
Map map=new HashMap<>();
map.put("a",list);
map.put("b",list2);
int count=energyService.getEnergyBuildingCount();
return HttpResult.ok(count,map);
}catch (Exception e){
@RequestParam(value = "limit") int limit) {
try {
energyService.proEnergyBuilding(curDate, endDate, type);
List<EnergyEntity> list = energyService.queryEnergyBuilding(page, limit);
SumModel list2 = energyService.queryEnergySum();
Map map = new HashMap<>();
map.put("a", list);
map.put("b", list2);
int count = energyService.getEnergyBuildingCount();
return HttpResult.ok(count, map);
} catch (Exception e) {
e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
//查询合计
@SysLogger(title="用能分析",optDesc = "查询合计")
@SysLogger(title = "用能分析", optDesc = "查询合计")
@PostMapping("/querySum")
public HttpResult queryEnergySum(){
try{
SumModel list=energyService.queryEnergySum();
public HttpResult queryEnergySum() {
try {
SumModel list = energyService.queryEnergySum();
return HttpResult.ok(list);
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
return HttpResult.error("查询出错!");
}

194
user-service/src/main/java/com/mh/user/controller/NowDataController.java

@ -41,42 +41,42 @@ public class NowDataController {
@Autowired
DeviceFloorService deviceFloorService;
@SysLogger(title="实时监控",optDesc = "实时查看每楼栋热水运行情况")
@SysLogger(title = "实时监控", optDesc = "实时查看每楼栋热水运行情况")
@PostMapping("/queryNow")
public HttpResult queryNowData(@RequestParam(value = "buildingId") String buildingId){
try{
public HttpResult queryNowData(@RequestParam(value = "buildingId") String buildingId) {
try {
//把热泵的水温保存到公共信息中中的用水温度和回水温度
String avgWaterTemp=nowDataService.selectAve(buildingId);
String maxWaterTemp=nowDataService.selectMaxTemp(buildingId);
String buildingName=buildingService.queryBuildingName(buildingId);//获取楼栋名称
String avgWaterTemp = nowDataService.selectAve(buildingId);
String maxWaterTemp = nowDataService.selectMaxTemp(buildingId);
String buildingName = buildingService.queryBuildingName(buildingId);//获取楼栋名称
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=new Date();
String curDate=sdf1.format(date);
curDate=curDate.substring(0,13)+":00:00";
Date date = new Date();
String curDate = sdf1.format(date);
curDate = curDate.substring(0, 13) + ":00:00";
NowPublicDataEntity nowPublicData=new NowPublicDataEntity();
NowPublicDataEntity nowPublicData = new NowPublicDataEntity();
nowPublicData.setBuildingId(buildingId);
nowPublicData.setBuildingName(buildingName);
if (avgWaterTemp!=null){
if (avgWaterTemp != null) {
nowPublicData.setBackWaterTemp(avgWaterTemp);
}else{
} else {
nowPublicData.setBackWaterTemp("0");
}
if (maxWaterTemp!=null){
if (maxWaterTemp != null) {
nowPublicData.setUseWaterTemp(maxWaterTemp);
}else{
} else {
nowPublicData.setUseWaterTemp("0");
}
nowPublicDataService.saveNowHistoryPublicData(nowPublicData);
//监视表生成初始记录
List<NowDataEntity> list=nowDataService.queryNowData(buildingId);
if (list.size()==0){//实时表生成记录
List<DeviceModel> deviceList=deviceInstallService.selectDevices(buildingId,"热泵");
if (deviceList.size()>0){
for (DeviceModel list2:deviceList){
NowDataEntity nowData=new NowDataEntity();
List<NowDataEntity> list = nowDataService.queryNowData(buildingId);
if (list.size() == 0) {//实时表生成记录
List<DeviceModel> deviceList = deviceInstallService.selectDevices(buildingId, "热泵");
if (deviceList.size() > 0) {
for (DeviceModel list2 : deviceList) {
NowDataEntity nowData = new NowDataEntity();
nowData.setPumpId(list2.getDeviceAddr());
nowData.setPumpName(list2.getDeviceName());
nowData.setBuildingId(buildingId);
@ -85,10 +85,10 @@ public class NowDataController {
nowDataService.saveNowData(nowData); //当前状态表
nowDataService.saveHistoryData(nowData); //历史状态表
}
}else{
NowDataEntity nowData=new NowDataEntity();
PumpModel pump=deviceFloorService.selectDeviceId2("热泵",buildingId);
if (pump!=null){
} else {
NowDataEntity nowData = new NowDataEntity();
PumpModel pump = deviceFloorService.selectDeviceId2("热泵", buildingId);
if (pump != null) {
nowData.setPumpId(pump.getPumpId());
nowData.setPumpName(pump.getPumpName());
nowData.setBuildingId(buildingId);
@ -99,65 +99,66 @@ public class NowDataController {
}
}
}
list=nowDataService.queryNowData(buildingId);
list = nowDataService.queryNowData(buildingId);
return HttpResult.ok(list);
}catch (Exception e){
log.error("查询当前监控状态出错!",e);
} catch (Exception e) {
log.error("查询当前监控状态出错!", e);
return HttpResult.error("查询当前监控状态出错!");
}
}
@SysLogger(title="实时监控",optDesc = "分别查看热泵运行情况")
@SysLogger(title = "实时监控", optDesc = "分别查看热泵运行情况")
@PostMapping("/queryNowByPump")
public HttpResult queryNowByPump(@RequestParam(value = "buildingId") String buildingId,@RequestParam(value = "pumpId") String pumpId){
try{
NowDataEntity nowDataEntity=nowDataService.queryNowDataByPump(buildingId,pumpId);
public HttpResult queryNowByPump(@RequestParam(value = "buildingId") String buildingId, @RequestParam(value = "pumpId") String pumpId) {
try {
NowDataEntity nowDataEntity = nowDataService.queryNowDataByPump(buildingId, pumpId);
return HttpResult.ok(nowDataEntity);
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
return HttpResult.error("按热泵查询当前监控状态出错!");
}
}
@SysLogger(title="运行信息",optDesc = "热泵历史状态查询")
@SysLogger(title = "运行信息", optDesc = "热泵历史状态查询")
@PostMapping("/query")
public HttpResult queryHistoryData(@RequestParam(value = "curDate") String curDate,
@RequestParam(value = "buildingId") String buildingId,
@RequestParam(value = "pumpId",required = false) String pumpId,
@RequestParam(value = "tankId",required = false) String tankId,
@RequestParam(value = "pumpId", required = false) String pumpId,
@RequestParam(value = "tankId", required = false) String tankId,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
@RequestParam(value = "limit") int limit) {
try {
List<NowDataEntity> list;
list=nowDataService.queryHistoryData(curDate,buildingId,pumpId,tankId,page,limit);
int count=nowDataService.getHistoryDataCount(curDate,buildingId,pumpId,tankId,page,limit);
return HttpResult.ok(count,list);
}catch (Exception e){
list = nowDataService.queryHistoryData(curDate, buildingId, pumpId, tankId, page, limit);
int count = nowDataService.getHistoryDataCount(curDate, buildingId, pumpId, tankId, page, limit);
return HttpResult.ok(count, list);
} catch (Exception e) {
// e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
//查询水位开始
@SysLogger(title="水位变化表",optDesc = "水位变化查询")
@SysLogger(title = "水位变化表", optDesc = "水位变化查询")
@PostMapping("/waterLevel")
public HttpResult queryWaterLevel(@RequestParam(value = "curDate") String curDate,
@RequestParam(value = "buildingID") String buildingID,
@RequestParam(value = "level", defaultValue = "0") int level,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
if (buildingID==null || buildingID.equals("") || buildingID.equals("所有楼栋")){
List<WaterLevelEntity> list=nowDataService.queryBuildWaterLevel(curDate, page, limit);
int count=nowDataService.buildWaterLevelCount(curDate);
return HttpResult.ok(count,list);
}else{
List<WaterLevelEntity> list=nowDataService.queryWaterLevel(curDate,buildingID,page,limit);
int count=nowDataService.getWaterLevelCount(curDate,buildingID);
return HttpResult.ok(count,list);
}
}catch (Exception e){
@RequestParam(value = "limit") int limit) {
try {
if (buildingID == null || buildingID.equals("") || buildingID.equals("所有楼栋") || level == 0 || level == 1) {
List<WaterLevelEntity> list = nowDataService.queryBuildWaterLevel(curDate, page, limit, level, buildingID);
// int count = nowDataService.buildWaterLevelCount(curDate);
int count = list.size();
return HttpResult.ok(count, list);
} else {
List<WaterLevelEntity> list = nowDataService.queryWaterLevel(curDate, buildingID, page, limit);
int count = nowDataService.getWaterLevelCount(curDate, buildingID);
return HttpResult.ok(count, list);
}
} catch (Exception e) {
// e.printStackTrace();
return HttpResult.error("查询出错!");
}
@ -166,12 +167,12 @@ public class NowDataController {
@PostMapping("/levelByTime")
public HttpResult queryWaterLevelByTime(@RequestParam(value = "curDate") String curDate,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
int count=nowDataService.waterLevelByTimeCount(curDate);
List<WaterLevelModel> list=nowDataService.queryWaterLevelByTime(curDate,page,limit);
return HttpResult.ok(count,list);
}catch (Exception e){
@RequestParam(value = "limit") int limit) {
try {
int count = nowDataService.waterLevelByTimeCount(curDate);
List<WaterLevelModel> list = nowDataService.queryWaterLevelByTime(curDate, page, limit);
return HttpResult.ok(count, list);
} catch (Exception e) {
// e.printStackTrace();
return HttpResult.error("查询出错!");
}
@ -179,58 +180,61 @@ public class NowDataController {
//查询水位结束
//查询水温,每天24小时情况
@SysLogger(title="温度变化表",optDesc = "温度变化查询")
@SysLogger(title = "温度变化表", optDesc = "温度变化查询")
@PostMapping("/waterTemp")
public HttpResult queryWaterTemp(@RequestParam(value = "buildingID") String buildingID,
@RequestParam(value = "curDate") String curDate,
@RequestParam(value = "level", defaultValue = "0") int level,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
@RequestParam(value = "limit") int limit) {
try {
List<WaterTempEntity> list;
int count;
if (buildingID==null || buildingID.equals("") || buildingID.equals("所有楼栋")){
list=nowDataService.queryWaterTemp2(curDate,page,limit);
count=nowDataService.queryWaterTempCount2(curDate);
}else{
list=nowDataService.queryWaterTemp(buildingID,curDate,page,limit);
count=nowDataService.queryWaterTempCount(buildingID,curDate);
}
return HttpResult.ok(count,list);
}catch (Exception e){
// 校区或者区域
if (buildingID == null || buildingID.equals("") || buildingID.equals("所有楼栋") || level == 0 || level == 1) {
list = nowDataService.queryWaterTemp2(curDate, page, limit, level, buildingID);
// count = nowDataService.queryWaterTempCount2(curDate, level, buildingID);
count = list.size();
} else {
list = nowDataService.queryWaterTemp(buildingID, curDate, page, limit);
count = nowDataService.queryWaterTempCount(buildingID, curDate);
}
return HttpResult.ok(count, list);
} catch (Exception e) {
// e.printStackTrace();
return HttpResult.error("查询出错!");
}
}
//查询运行时长
@SysLogger(title="运行时长",optDesc = "热泵运行时长查询")
@SysLogger(title = "运行时长", optDesc = "热泵运行时长查询")
@PostMapping("/minutes")
public HttpResult pumpMinutes(@RequestParam(value = "startDate") String startDate,
@RequestParam(value = "endDate") String endDate,
@RequestParam(value = "buildingId",required = false) String buildingId,
@RequestParam(value = "pumpId",required = false) String pumpId,
@RequestParam(value = "buildingId", required = false) String buildingId,
@RequestParam(value = "pumpId", required = false) String pumpId,
@RequestParam(value = "type") int type,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit){
try{
int count=0;
@RequestParam(value = "limit") int limit) {
try {
int count = 0;
List<PumpMinutesEntity> list;
if(type==1){
list=nowDataService.pumpMinutes(startDate,endDate,buildingId,pumpId,page,limit);
count=nowDataService.pumpMinutesCount(startDate,endDate,buildingId,pumpId);
}else if(type==2){
list=nowDataService.pumpWeekMinutes(startDate,endDate,buildingId,pumpId,page,limit);
count=nowDataService.pumpWeekMinutesCount(startDate,endDate,buildingId,pumpId);
}else if(type==3){
list=nowDataService.pumpMonthMinutes(startDate,endDate,buildingId,pumpId,page,limit);
count=nowDataService.pumpMonthMinutesCount(startDate,endDate,buildingId,pumpId);
}else{
list=nowDataService.pumpMinutes(startDate,endDate,buildingId,pumpId,page,limit);
count=nowDataService.pumpMinutesCount(startDate,endDate,buildingId,pumpId);
}
return HttpResult.ok(count,list);
}catch (Exception e){
if (type == 1) {
list = nowDataService.pumpMinutes(startDate, endDate, buildingId, pumpId, page, limit);
count = nowDataService.pumpMinutesCount(startDate, endDate, buildingId, pumpId);
} else if (type == 2) {
list = nowDataService.pumpWeekMinutes(startDate, endDate, buildingId, pumpId, page, limit);
count = nowDataService.pumpWeekMinutesCount(startDate, endDate, buildingId, pumpId);
} else if (type == 3) {
list = nowDataService.pumpMonthMinutes(startDate, endDate, buildingId, pumpId, page, limit);
count = nowDataService.pumpMonthMinutesCount(startDate, endDate, buildingId, pumpId);
} else {
list = nowDataService.pumpMinutes(startDate, endDate, buildingId, pumpId, page, limit);
count = nowDataService.pumpMinutesCount(startDate, endDate, buildingId, pumpId);
}
return HttpResult.ok(count, list);
} catch (Exception e) {
// e.printStackTrace();
return HttpResult.error("查询出错!");
}

23
user-service/src/main/java/com/mh/user/controller/SummaryController.java

@ -40,20 +40,21 @@ public class SummaryController {
@PostMapping(value="/energySum")
public HttpResult queryEnergySum(@RequestParam(value= "buildingId", required=false)String buildingId,
@RequestParam(value= "curDate", required=false)String curDate,
@RequestParam(value= "level", required=false, defaultValue="0") int level,
@RequestParam(value= "type", required=true)Integer type) {
try{
String areaId="";
if (buildingId!=null && buildingId.length()>0){
if (!buildingId.equals("所有")){
areaId=buildingService.queryAreaId(Integer.parseInt(buildingId));
}
}
// String areaId="";
// if (buildingId!=null && buildingId.length()>0){
// if (!buildingId.equals("所有")){
// areaId=buildingService.queryAreaId(Integer.parseInt(buildingId));
// }
// }
EnergySumEntity record;
if (areaId!=null && areaId.length()>0){
record=summaryService.queryEnergySum(areaId,curDate,type);
}else{
record=summaryService.queryEnergySum(buildingId,curDate,type);
}
// if (areaId!=null && areaId.length()>0){
// record=summaryService.queryEnergySum(areaId,curDate,type);
// }else{
record=summaryService.queryEnergySum(buildingId,curDate,type, level);
// }
return HttpResult.ok(record);
}catch (Exception e){
//e.printStackTrace();

32
user-service/src/main/java/com/mh/user/entity/AreaEntity.java

@ -1,11 +1,33 @@
package com.mh.user.entity;
import java.util.StringJoiner;
public class AreaEntity {
private Long id;
private String areaId;
private String areaName;
private int sort;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public String getAreaId() {
return areaId;
}
@ -24,9 +46,11 @@ public class AreaEntity {
@Override
public String toString() {
return "AreaEntity{" +
"areaId='" + areaId + '\'' +
", areaName='" + areaName + '\'' +
'}';
return new StringJoiner(", ", AreaEntity.class.getSimpleName() + "[", "]")
.add("id=" + id)
.add("areaId='" + areaId + "'")
.add("areaName='" + areaName + "'")
.add("sort=" + sort)
.toString();
}
}

2
user-service/src/main/java/com/mh/user/entity/BuildingEntity.java

@ -14,9 +14,11 @@ public class BuildingEntity {
private int bedCount;
private int checkInCount;
private String areaId;
private String areaName;
private String remarks;
private Double tankHeight;
private Double lowTankHeight;
private int pumpCount;
private int sort;
}

1
user-service/src/main/java/com/mh/user/mapper/AnalysisMapper.java

@ -46,7 +46,6 @@ public interface AnalysisMapper {
@Result(column = "item_type", property = "itemType"),
@Result(column = "total_value", property = "totalValue")
})
@Select("select * from analysis_elect_month where cur_date=#{curDate} and building_id=#{buildingId}")
List<AnalysisMonthEntity> queryAnalysisElectMonth(@Param("curDate") String curDate, @Param("buildingId") String buildingId);

77
user-service/src/main/java/com/mh/user/mapper/AreaMapper.java

@ -1,18 +1,79 @@
package com.mh.user.mapper;
import com.mh.user.entity.AreaEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import com.mh.user.model.AreaModel;
import org.apache.ibatis.annotations.*;
import tk.mybatis.mapper.common.BaseMapper;
import java.util.List;
@Mapper
public interface AreaMapper {
public interface AreaMapper extends BaseMapper<AreaEntity> {
@Results({ @Result(property = "areaId", column = "area_id"),
@Result(property = "areaName", column = "area_name")})
@Select("select * from area ")
@Results({
@Result(property = "areaId", column = "area_id"),
@Result(property = "areaName", column = "area_name"),
@Result(property = "sort", column = "sort"),
})
@Select("select * from area order by sort ")
List<AreaEntity> findAll();
@Select("select count(*) from area where area_id=#{areaId} and area_name=#{areaName}")
int selectCountByAreaIdAndAreaName(String areaId, String areaName);
@Select("select count(*) from area where id= #{areaId}")
int getCount(String areaId, Integer page, Integer limit);
@Select({
"<script>",
"select * from (",
" select *, ROW_NUMBER() over(order by id) as rn from area ",
" where 1=1 ",
" <if test='areaId != null and areaId != \"\"'>",
" AND id = #{areaId}",
" </if>",
" ) T",
" <if test='page != 0 and limit != 0'>",
" where T.rn &gt; (#{page}-1)*#{limit} and T.rn &lt;= #{page}*#{limit} ",
" </if>",
" <if test='page == 0'>",
" </if>",
" order by sort ",
"</script>"
})
@Results(value = {
@Result(property="id",column="id"),
@Result(property="areaName",column="area_name"),
@Result(property="areaId",column="area_id")
})
List<AreaEntity> queryArea(String areaId, Integer page, Integer limit);
//查询所有楼栋编号和名称
@Select("select * from area order by sort ")
@Results(value = {
@Result(property="areaId",column="id"),
@Result(property="areaName",column="area_name")
})
List<AreaModel> selectAreaName();
@Delete("delete from area where id=#{id} ")
int deleteArea(String id);
@Select("select count(*) from area where area_name= #{areaName}")
int selectByAreaName(String areaName);
@Results({
@Result(property = "areaId", column = "area_id"),
@Result(property = "areaName", column = "area_name"),
@Result(property = "sort", column = "sort"),
@Result(property = "id", column = "id")
})
@Select("select * from area where id= #{id} ")
AreaEntity selectById(String buildingId);
@Insert("insert into area(area_id,area_name,sort) values(#{areaId},#{areaName},#{sort})")
int insertArea(AreaEntity areaEntity);
@Update("update area set area_id=#{areaId},area_name=#{areaName},sort=#{sort} where id=#{id}")
int updateArea(AreaEntity areaEntity);
}

32
user-service/src/main/java/com/mh/user/mapper/BuildingMapper.java

@ -60,11 +60,11 @@ public interface BuildingMapper {
@Result(property="pumpCount",column="pump_count"),
@Result(property="remarks",column="remarks"),
@Result(property="tankHeight",column="tankHeight"),
@Result(property="lowTankHeight",column="low_tank_height")
@Result(property="lowTankHeight",column="low_tank_height"),
@Result(property="areaName",column="area_name")
})
@SelectProvider(type = BuildingProvider.class,method = "queryBuilding")
List<BuildingEntity> queryBuilding(@Param("buildingId") String buildingId,@Param("page") int page, @Param("limit") int limit);
List<BuildingEntity> queryBuilding(@Param("buildingId") String buildingId,@Param("page") int page, @Param("limit") int limit, @Param("level") int level);
/**
* 楼栋管理模块
@ -72,7 +72,7 @@ public interface BuildingMapper {
* @return
*/
@SelectProvider(type = BuildingProvider.class,method = "getCount")
int getCount(@Param("buildingId") String buildingId,@Param("page") int page, @Param("limit") int limit);
int getCount(@Param("buildingId") String buildingId,@Param("page") int page, @Param("limit") int limit, @Param("level") int level);
//查询所有楼栋编号和名称
@Results(value = {
@ -122,4 +122,28 @@ public interface BuildingMapper {
@Select("select low_tank_height from building where id=#{id}" )
Double queryLowTankHeight(@Param("id") String buildingId);
@Results(value = {
@Result(property="id",column="id"),
@Result(property="buildingName",column="building_name"),
@Result(property="levelsCount",column="levels_count"),
@Result(property="beginLevel",column="begin_level"),
@Result(property ="houseCount",column ="house_count"),
@Result(property ="bedCount",column ="bed_count"),
@Result(property="checkInCount",column="check_in_count"),
@Result(property="areaId",column="area_id"),
@Result(property="pumpCount",column="pump_count"),
@Result(property="remarks",column="remarks"),
@Result(property="tankHeight",column="tankHeight"),
@Result(property="lowTankHeight",column="low_tank_height"),
@Result(property="sort",column="sort"),
})
@Select("select * from building ")
List<BuildingEntity> selectAll();
@Select("select id from building where area_id = #{areaId} order by sort ")
List<String> queryBuildingIdListByAreaId(String areaId);
@Select("select sum(check_in_count) from building where area_id = #{areaId} ")
int queryCheckInCount(@Param("areaId") String areaId);
}

6
user-service/src/main/java/com/mh/user/mapper/DeviceInstallMapper.java

@ -118,7 +118,8 @@ public interface DeviceInstallMapper extends BaseMapper<DeviceInstallEntity> {
@Param("isUse")String isUse,
@Param("isFault")String isFault,
@Param("page") int page,
@Param("limit") int limit);
@Param("limit") int limit,
@Param("level") int level);
/**
* 设备管理模块
* 根据条件获取设备查询的总条数
@ -133,7 +134,8 @@ public interface DeviceInstallMapper extends BaseMapper<DeviceInstallEntity> {
@Param("isUse")String isUse,
@Param("isFault")String isFault,
@Param("page") int page,
@Param("limit") int limit);
@Param("limit") int limit,
@Param("level") int level);
//查询设备故障情况
@SelectProvider(type = DeviceInstallProvider.class,method = "getIsFaultCount")

304
user-service/src/main/java/com/mh/user/mapper/EnergyMapper.java

@ -230,4 +230,308 @@ public interface EnergyMapper {
SumModel queryEnergySum();
@Select({
"<script>",
"SELECT count(1) FROM (",
" SELECT " +
" cur_date, " +
" sum(use_hot_water) as use_hot_water, " +
" sum(elect_value) as elect_value, " +
" CASE WHEN sum(use_hot_water) = 0 THEN 0 ELSE sum(elect_value)/ sum(use_hot_water) END as elect_water, " +
" sum(check_in_count) as check_in_count, " +
" CASE WHEN sum(check_in_count) = 0 THEN 0 ELSE sum(use_hot_water) / sum(check_in_count) END as per_water, " +
" CASE WHEN sum(check_in_count) = 0 THEN 0 ELSE sum(elect_value)/ sum(check_in_count) END as per_elect , " +
" ROW_NUMBER() OVER(ORDER BY cur_date DESC) AS rn " +
" FROM energy_day",
" WHERE 1=1",
" <if test='buildingIds != null and !buildingIds.isEmpty()'>",
" AND building_id IN",
" <foreach collection='buildingIds' item='id' open='(' separator=',' close=')'>",
" #{id}",
" </foreach>",
" </if>",
" <if test='startDate != null and startDate != \"\"'>",
" AND LEFT(cur_date,10) &gt;= #{startDate}",
" </if>",
" <if test='endDate != null and endDate != \"\"'>",
" AND LEFT(cur_date,10) &lt;= #{endDate}",
" </if>",
" group by cur_date ) T",
"</script>"
})
int getAreaEnergyDayCount(@Param("buildingIds") List<String> buildingIds,
@Param("startDate") String startDate,
@Param("endDate") String endDate,
@Param("page") int page,
@Param("limit") int limit);
@Select({
"<script>",
"SELECT T.cur_date, " +
" T.use_hot_water , " +
" T.elect_value, " +
" T.elect_water, " +
" t.check_in_count , " +
" t.per_water , " +
" t.per_elect , " +
" t.rn, " +
" #{areaName} as building_name FROM (",
" SELECT " +
" cur_date, " +
" sum(use_hot_water) as use_hot_water, " +
" sum(elect_value) as elect_value, " +
" CASE WHEN sum(use_hot_water) = 0 THEN 0 ELSE sum(elect_value)/ sum(use_hot_water) END as elect_water, " +
" sum(check_in_count) as check_in_count, " +
" CASE WHEN sum(check_in_count) = 0 THEN 0 ELSE sum(use_hot_water) / sum(check_in_count) END as per_water, " +
" CASE WHEN sum(check_in_count) = 0 THEN 0 ELSE sum(elect_value)/ sum(check_in_count) END as per_elect , " +
" ROW_NUMBER() OVER(ORDER BY cur_date DESC) AS rn " +
" FROM energy_day",
" WHERE 1=1",
" <if test='buildingIds != null and !buildingIds.isEmpty()'>",
" AND building_id IN",
" <foreach collection='buildingIds' item='id' open='(' separator=',' close=')'>",
" #{id}",
" </foreach>",
" </if>",
" <if test='startDate != null and startDate != \"\"'>",
" AND LEFT(cur_date,10) &gt;= #{startDate}",
" </if>",
" <if test='endDate != null and endDate != \"\"'>",
" AND LEFT(cur_date,10) &lt;= #{endDate}",
" </if>",
" group by cur_date ) T",
"<where>",
" <if test='page != 0 and limit != 0'>",
" T.rn &gt; (#{page}-1)*#{limit} AND T.rn &lt;= #{page}*#{limit}",
" </if>",
"</where>",
"ORDER BY T.cur_date DESC",
"</script>"
})
@ResultMap("rs")
List<EnergyEntity> getAreaEnergyDay(@Param("buildingIds") List<String> buildingIds,
@Param("startDate") String startDate,
@Param("endDate") String endDate,
@Param("page") int page,
@Param("limit") int limit,
@Param("areaName") String areaName);
@Select({
"<script>",
"SELECT count(1) FROM (",
" SELECT " +
" cur_date, " +
" sum(use_hot_water) as use_hot_water, " +
" sum(elect_value) as elect_value, " +
" CASE WHEN sum(use_hot_water) = 0 THEN 0 ELSE sum(elect_value)/ sum(use_hot_water) END as elect_water, " +
" sum(check_in_count) as check_in_count, " +
" CASE WHEN sum(check_in_count) = 0 THEN 0 ELSE sum(use_hot_water) / sum(check_in_count) END as per_water, " +
" CASE WHEN sum(check_in_count) = 0 THEN 0 ELSE sum(elect_value)/ sum(check_in_count) END as per_elect , " +
" ROW_NUMBER() OVER(ORDER BY cur_date DESC) AS rn " +
" FROM energy_month",
" WHERE 1=1",
" <if test='buildingIds != null and !buildingIds.isEmpty()'>",
" AND building_id IN",
" <foreach collection='buildingIds' item='id' open='(' separator=',' close=')'>",
" #{id}",
" </foreach>",
" </if>",
" <if test='startDate != null and startDate != \"\"'>",
" AND LEFT(cur_date,7) &gt;= #{startDate}",
" </if>",
" <if test='endDate != null and endDate != \"\"'>",
" AND LEFT(cur_date,7) &lt;= #{endDate}",
" </if>",
" group by cur_date ) T",
"</script>"
})
int getAreaEnergyMonthCount(@Param("buildingIds") List<String> buildingIds,
@Param("startDate") String startDate,
@Param("endDate") String endDate,
@Param("page") int page,
@Param("limit") int limit);
@Select({
"<script>",
"SELECT T.cur_date, " +
" T.use_hot_water , " +
" T.elect_value, " +
" T.elect_water, " +
" t.check_in_count , " +
" t.per_water , " +
" t.per_elect , " +
" t.rn, " +
" #{areaName} as building_name FROM (",
" SELECT " +
" cur_date, " +
" sum(use_hot_water) as use_hot_water, " +
" sum(elect_value) as elect_value, " +
" CASE WHEN sum(use_hot_water) = 0 THEN 0 ELSE sum(elect_value)/ sum(use_hot_water) END as elect_water, " +
" sum(check_in_count) as check_in_count, " +
" CASE WHEN sum(check_in_count) = 0 THEN 0 ELSE sum(use_hot_water) / sum(check_in_count) END as per_water, " +
" CASE WHEN sum(check_in_count) = 0 THEN 0 ELSE sum(elect_value)/ sum(check_in_count) END as per_elect , " +
" ROW_NUMBER() OVER(ORDER BY cur_date DESC) AS rn " +
" FROM energy_month ",
" WHERE 1=1",
" <if test='buildingIds != null and !buildingIds.isEmpty()'>",
" AND building_id IN",
" <foreach collection='buildingIds' item='id' open='(' separator=',' close=')'>",
" #{id}",
" </foreach>",
" </if>",
" <if test='startDate != null and startDate != \"\"'>",
" AND LEFT(cur_date,7) &gt;= #{startDate}",
" </if>",
" <if test='endDate != null and endDate != \"\"'>",
" AND LEFT(cur_date,7) &lt;= #{endDate}",
" </if>",
" group by cur_date ) T",
"<where>",
" <if test='page != 0 and limit != 0'>",
" T.rn &gt; (#{page}-1)*#{limit} AND T.rn &lt;= #{page}*#{limit}",
" </if>",
"</where>",
"ORDER BY T.cur_date DESC",
"</script>"
})
@ResultMap("rs")
List<EnergyEntity> getAreaEnergyMonth(@Param("buildingIds") List<String> buildingIds,
@Param("startDate") String startDate,
@Param("endDate") String endDate,
@Param("page") int page,
@Param("limit") int limit,
@Param("areaName") String areaName);
@Select({
"<script>",
"SELECT count(1) FROM (",
" SELECT " +
" cur_date, " +
" sum(use_hot_water) as use_hot_water, " +
" sum(elect_value) as elect_value, " +
" CASE WHEN sum(use_hot_water) = 0 THEN 0 ELSE sum(elect_value)/ sum(use_hot_water) END as elect_water, " +
" sum(check_in_count) as check_in_count, " +
" CASE WHEN sum(check_in_count) = 0 THEN 0 ELSE sum(use_hot_water) / sum(check_in_count) END as per_water, " +
" CASE WHEN sum(check_in_count) = 0 THEN 0 ELSE sum(elect_value)/ sum(check_in_count) END as per_elect , " +
" ROW_NUMBER() OVER(ORDER BY cur_date DESC) AS rn " +
" FROM energy_year",
" WHERE 1=1",
" <if test='buildingIds != null and !buildingIds.isEmpty()'>",
" AND building_id IN",
" <foreach collection='buildingIds' item='id' open='(' separator=',' close=')'>",
" #{id}",
" </foreach>",
" </if>",
" <if test='startDate != null and startDate != \"\"'>",
" AND LEFT(cur_date,4) &gt;= #{startDate}",
" </if>",
" <if test='endDate != null and endDate != \"\"'>",
" AND LEFT(cur_date,4) &lt;= #{endDate}",
" </if>",
" group by cur_date ) T",
"</script>"
})
int getAreaEnergyYearCount(@Param("buildingIds") List<String> buildingIds,
@Param("startDate") String startDate,
@Param("endDate") String endDate,
@Param("page") int page,
@Param("limit") int limit);
@Select({
"<script>",
"SELECT T.cur_date, " +
" T.use_hot_water , " +
" T.elect_value, " +
" T.elect_water, " +
" t.check_in_count , " +
" t.per_water , " +
" t.per_elect , " +
" t.rn, " +
" #{areaName} as building_name FROM (",
" SELECT " +
" cur_date, " +
" sum(use_hot_water) as use_hot_water, " +
" sum(elect_value) as elect_value, " +
" CASE WHEN sum(use_hot_water) = 0 THEN 0 ELSE sum(elect_value)/ sum(use_hot_water) END as elect_water, " +
" sum(check_in_count) as check_in_count, " +
" CASE WHEN sum(check_in_count) = 0 THEN 0 ELSE sum(use_hot_water) / sum(check_in_count) END as per_water, " +
" CASE WHEN sum(check_in_count) = 0 THEN 0 ELSE sum(elect_value)/ sum(check_in_count) END as per_elect , " +
" ROW_NUMBER() OVER(ORDER BY cur_date DESC) AS rn " +
" FROM energy_year ",
" WHERE 1=1",
" <if test='buildingIds != null and !buildingIds.isEmpty()'>",
" AND building_id IN",
" <foreach collection='buildingIds' item='id' open='(' separator=',' close=')'>",
" #{id}",
" </foreach>",
" </if>",
" <if test='startDate != null and startDate != \"\"'>",
" AND LEFT(cur_date,4) &gt;= #{startDate}",
" </if>",
" <if test='endDate != null and endDate != \"\"'>",
" AND LEFT(cur_date,4) &lt;= #{endDate}",
" </if>",
" group by cur_date ) T",
"<where>",
" <if test='page != 0 and limit != 0'>",
" T.rn &gt; (#{page}-1)*#{limit} AND T.rn &lt;= #{page}*#{limit}",
" </if>",
"</where>",
"ORDER BY T.cur_date DESC",
"</script>"
})
@ResultMap("rs")
List<EnergyEntity> getAreaEnergyYear(@Param("buildingIds") List<String> buildingIds,
@Param("startDate") String startDate,
@Param("endDate") String endDate,
@Param("page") int page,
@Param("limit") int limit,
@Param("areaName") String areaName);
@Select({
"<script>",
"SELECT T.cur_date, " +
" T.use_hot_water , " +
" T.elect_value, " +
" T.elect_water, " +
" t.check_in_count , " +
" t.per_water , " +
" t.per_elect , " +
" t.rn, " +
" #{areaName} as building_name FROM (",
" SELECT " +
" cur_date, " +
" sum(use_hot_water) as use_hot_water, " +
" sum(elect_value) as elect_value, " +
" CASE WHEN sum(use_hot_water) = 0 THEN 0 ELSE sum(elect_value)/ sum(use_hot_water) END as elect_water, " +
" sum(check_in_count) as check_in_count, " +
" CASE WHEN sum(check_in_count) = 0 THEN 0 ELSE sum(use_hot_water) / sum(check_in_count) END as per_water, " +
" CASE WHEN sum(check_in_count) = 0 THEN 0 ELSE sum(elect_value)/ sum(check_in_count) END as per_elect , " +
" ROW_NUMBER() OVER(ORDER BY cur_date DESC) AS rn " +
" FROM energy_hour ",
" WHERE 1=1",
" <if test='buildingIds != null and !buildingIds.isEmpty()'>",
" AND building_id IN",
" <foreach collection='buildingIds' item='id' open='(' separator=',' close=')'>",
" #{id}",
" </foreach>",
" </if>",
" <if test='curDate != null and curDate != \"\"'>",
" AND LEFT(cur_date,10) = #{curDate}",
" </if>",
" group by cur_date ) T",
"<where>",
" <if test='page != 0 and limit != 0'>",
" T.rn &gt; (#{page}-1)*#{limit} AND T.rn &lt;= #{page}*#{limit}",
" </if>",
"</where>",
"ORDER BY T.cur_date DESC",
"</script>"
})
@ResultMap("rs")
List<EnergyEntity> getAreaEnergyHour(@Param("buildingIds") List<String> buildingIds,
@Param("curDate") String curDate,
@Param("page") int page,
@Param("limit") int limit,
@Param("areaName") String areaName);
}

24
user-service/src/main/java/com/mh/user/mapper/provider/BuildingProvider.java

@ -2,14 +2,20 @@ package com.mh.user.mapper.provider;
public class BuildingProvider {
public String queryBuilding(String buildingId, int page, int limit){
public String queryBuilding(String buildingId, int page, int limit, int level){
StringBuffer sql = new StringBuffer("");
sql.append("select * from (" +
" select *,ROW_NUMBER() over(order by id) as rn from building " +
" select bd.*,ar.area_name,ROW_NUMBER() over(order by bd.id) as rn from building bd left join area ar on bd.area_id = ar.id " +
" where 1=1 ");
if (buildingId != null && !buildingId.equals("")){
sql.append(" AND id = #{buildingId} ");
if (level == 2) {
if (buildingId != null && !buildingId.equals("")) {
sql.append(" AND bd.id = #{buildingId} ");
}
} else if (level == 1) {
if (buildingId != null && !buildingId.equals("")) {
sql.append(" AND ar.id = #{buildingId} ");
}
}
if ((page != 0) && (limit != 0)){
sql.append(" ) T where T.rn>(#{page}-1)*#{limit} and T.rn<=#{page}*#{limit}");
@ -20,15 +26,21 @@ public class BuildingProvider {
return sql.toString();
}
public String getCount(String buildingId, int page, int limit){
public String getCount(String buildingId, int page, int limit, int level){
StringBuffer sql = new StringBuffer("");
sql.append("select count(*) from (" +
" select *,ROW_NUMBER() over(order by id) as rn from building " +
" where 1=1 ");
if (buildingId != null && !buildingId.equals("")){
if (level == 2) {
if (buildingId != null && !buildingId.equals("")) {
sql.append(" AND id = #{buildingId} ");
}
} else if (level == 1) {
if (buildingId != null && !buildingId.equals("")) {
sql.append(" AND area_id = #{buildingId} ");
}
}
sql.append(" ) T ");
// System.out.println(sql.toString());

24
user-service/src/main/java/com/mh/user/mapper/provider/DeviceInstallProvider.java

@ -2,14 +2,20 @@ package com.mh.user.mapper.provider;
public class DeviceInstallProvider {
public String queryDevice(String buildingId,String deviceType,String startDate,String endDate,String isOnline,String isUse,String isFault, int page, int limit){
public String queryDevice(String buildingId,String deviceType,String startDate,String endDate,String isOnline,String isUse,String isFault, int page, int limit, int level){
StringBuffer sql = new StringBuffer("");
sql.append("select * from (" +
" select top 1000 *,ROW_NUMBER() over(order by T.sort) as rn from (select top 1000 t1.*,t2.sort from device_install t1 " +
" join building t2 on t1.building_id=t2.id where 1=1 ");
if (buildingId != null && !buildingId.equals("")){
" join building t2 on t1.building_id=t2.id left join area ar on ar.id = t2.area_id where 1=1 ");
if (level == 2) {
if (buildingId != null && !buildingId.equals("")) {
sql.append(" AND t1.building_id = #{buildingId} ");
}
} else if (level == 1) {
if (buildingId != null && !buildingId.equals("")) {
sql.append(" AND ar.id = #{buildingId} ");
}
}
if (deviceType != null && !deviceType.equals("")){
sql.append(" AND t1.device_type = #{deviceType} ");
}
@ -34,14 +40,20 @@ public class DeviceInstallProvider {
return sql.toString();
}
public String getCount(String buildingId,String deviceType,String startDate,String endDate,String isOnline,String isUse,String isFault, int page, int limit){
public String getCount(String buildingId,String deviceType,String startDate,String endDate,String isOnline,String isUse,String isFault, int page, int limit, int level){
StringBuffer sql = new StringBuffer("");
sql.append("select count(*) from (" +
" select top 1000 *,ROW_NUMBER() over(order by T.sort) as rn from (select top 1000 t1.*,t2.sort from device_install t1 " +
" join building t2 on t1.building_id=t2.id where 1=1 ");
if (buildingId != null && !buildingId.equals("")){
" join building t2 on t1.building_id=t2.id left join area ar on ar.id = t2.area_id where 1=1 ");
if (level == 2) {
if (buildingId != null && !buildingId.equals("")) {
sql.append(" AND t1.building_id = #{buildingId} ");
}
} else if (level == 1) {
if (buildingId != null && !buildingId.equals("")) {
sql.append(" AND ar.id = #{buildingId} ");
}
}
if (deviceType != null && !deviceType.equals("")){
sql.append(" AND t1.device_type = #{deviceType} ");
}

2
user-service/src/main/java/com/mh/user/mapper/provider/EnergyProvider.java

@ -23,7 +23,7 @@ public class EnergyProvider {
if(buildingId.equals("所有")){
if ((page != 0) && (limit != 0)){
sql.append(" )T where T.rn>(#{page}-1)*#{limit} and T.rn<=#{page}*#{limit} order by T.cur_date desc");
} else if (page == 0){
} else if (page == 0 || limit == 0){
sql.append(" )T order by T.cur_date desc");
}
}else{

88
user-service/src/main/java/com/mh/user/model/AreaBuildingTreeModel.java

@ -0,0 +1,88 @@
package com.mh.user.model;
import java.util.List;
import java.util.StringJoiner;
/**
* @author LJF
* @version 1.0
* @project CHWS
* @description 区域楼栋树形结构数据
* @date 2025-09-08 17:28:47
*/
public class AreaBuildingTreeModel {
private Long id;
private String name;
private Long parentId;
private int sort;
/**
* 层级0学校1区域2楼栋
*/
private int level;
private List<AreaBuildingTreeModel> children;
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public List<AreaBuildingTreeModel> getChildren() {
return children;
}
public void setChildren(List<AreaBuildingTreeModel> children) {
this.children = children;
}
@Override
public String toString() {
return new StringJoiner(", ", AreaBuildingTreeModel.class.getSimpleName() + "[", "]")
.add("id=" + id)
.add("name='" + name + "'")
.add("parentId='" + parentId + "'")
.add("children=" + children)
.toString();
}
}

10
user-service/src/main/java/com/mh/user/model/AreaModel.java

@ -0,0 +1,10 @@
package com.mh.user.model;
import lombok.Data;
@Data
public class AreaModel {
private Long areaId;
private String areaName;
}

19
user-service/src/main/java/com/mh/user/service/AreaService.java

@ -1,10 +1,29 @@
package com.mh.user.service;
import com.mh.user.entity.AreaEntity;
import com.mh.user.model.AreaModel;
import java.util.List;
public interface AreaService {
List<AreaEntity> findAll();
int saveArea(AreaEntity areaEntity);
int updateArea(AreaEntity areaEntity);
int getCount(String areaId, Integer page, Integer limit);
List<AreaEntity> queryArea(String areaId, Integer page, Integer limit);
List<AreaModel> selectAreaName();
int deleteArea(List<AreaEntity> records);
int deleteAreaById(String id);
int selectByAreaName(String areaName);
AreaEntity selectById(String buildingId);
}

11
user-service/src/main/java/com/mh/user/service/BuildingService.java

@ -1,6 +1,7 @@
package com.mh.user.service;
import com.mh.user.entity.BuildingEntity;
import com.mh.user.model.AreaBuildingTreeModel;
import com.mh.user.model.BuildingModel;
import org.apache.ibatis.annotations.Param;
@ -29,14 +30,14 @@ public interface BuildingService {
* @param limit
* @return
*/
List<BuildingEntity> queryBuilding(String buildingId,int page, int limit);
List<BuildingEntity> queryBuilding(String buildingId,int page, int limit, int level);
/**
* 楼栋管理模块
* 获取楼栋信息查询的总条数
* @return
*/
int getCount(String buildingId,int page, int limit);
int getCount(String buildingId,int page, int limit, int level);
//查询楼栋名称
List<BuildingModel> selectBuildingName();
@ -74,4 +75,10 @@ public interface BuildingService {
String selectBuildingNameById(String buildingId);
Double queryLowTankHeight(String buildingId);
List<AreaBuildingTreeModel> queryTree();
List<String> queryBuildingIdListByAreaId(String areaId);
int queryCheckInCount(String areaId);
}

4
user-service/src/main/java/com/mh/user/service/DeviceInstallService.java

@ -67,7 +67,7 @@ public interface DeviceInstallService {
* @param limit
* @return
*/
List<DeviceInstallEntity> queryDevice(String buildingId,String deviceType, String startDate, String endDate,String isOnline, String isUse, String isFault, int page, int limit);
List<DeviceInstallEntity> queryDevice(String buildingId,String deviceType, String startDate, String endDate,String isOnline, String isUse, String isFault, int page, int limit, int level);
/**
* 设备管理模块
@ -75,7 +75,7 @@ public interface DeviceInstallService {
*
* @return
*/
int getCount(String buildingId,String deviceType, String startDate, String endDate,String isOnline, String isUse, String isFault, int page, int limit);
int getCount(String buildingId,String deviceType, String startDate, String endDate,String isOnline, String isUse, String isFault, int page, int limit, int level);
//查询设备故障情况
int getIsFaultCount(String isFault,String deviceType);

8
user-service/src/main/java/com/mh/user/service/EnergyService.java

@ -41,7 +41,7 @@ public interface EnergyService {
* @return
*/
List<EnergyEntity> queryEnergy(String buildingId, String startDate,String endDate,
int page, int limit,int type);
int page, int limit,int type, int level);
/**
* 生产信息
@ -49,7 +49,7 @@ public interface EnergyService {
* @return
*/
int getEnergyCount( String buildingId, String startDate,String endDate,
int page, int limit,int type);
int page, int limit,int type, int level);
/**
* 生产信息
@ -66,9 +66,9 @@ public interface EnergyService {
int getDayEnergyCount(String buildingId, String startDate, String endDate, int page, int limit);
//查询小时的用量
List<EnergyEntity> queryHourEnergy(String buildingId,String curDate, int page, int limit);
List<EnergyEntity> queryHourEnergy(String buildingId,String curDate, int page, int limit, int level);
int getHourEnergyCount(String buildingId, String curDate);
int getHourEnergyCount(String buildingId, String curDate, int level);
//查询记录
List<EnergyEntity> queryEnergyBuilding(int page,int limit);

6
user-service/src/main/java/com/mh/user/service/NowDataService.java

@ -57,7 +57,7 @@ public interface NowDataService {
int waterLevelByTimeCount(String curDate);
//查询每天楼栋水位变化
List<WaterLevelEntity> queryBuildWaterLevel(String curDate, int page, int limit);
List<WaterLevelEntity> queryBuildWaterLevel(String curDate, int page, int limit, int level, String buildingID);
//查询每天楼栋水位变化记录数
int buildWaterLevelCount(String curDate);
@ -97,9 +97,9 @@ public interface NowDataService {
int queryWaterTempCount(String buildingID,String curDate);
//查询每天24小时每个热泵温度变化情况2
List<WaterTempEntity> queryWaterTemp2(String curDate,int page,int limit);
List<WaterTempEntity> queryWaterTemp2(String curDate,int page,int limit, int level, String buildingID);
int queryWaterTempCount2(String curDate);
int queryWaterTempCount2(String curDate, int level, String buildingID);
//生成楼栋温度
void proWaterTemp(String curDate,String buildingID,String pumpID);

2
user-service/src/main/java/com/mh/user/service/SummaryService.java

@ -11,7 +11,7 @@ public interface SummaryService {
DeviceStateEntity queryDeviceState();
//查询用量汇总比较
EnergySumEntity queryEnergySum(String buildingId,String curDate,int type);
EnergySumEntity queryEnergySum(String buildingId,String curDate,int type, int level);
//查询维修量汇总
MaintainSumEntity queryMaintainSum(String buildingId, String curDate);

56
user-service/src/main/java/com/mh/user/service/impl/AreaServiceImpl.java

@ -2,6 +2,7 @@ package com.mh.user.service.impl;
import com.mh.user.entity.AreaEntity;
import com.mh.user.mapper.AreaMapper;
import com.mh.user.model.AreaModel;
import com.mh.user.service.AreaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -14,8 +15,61 @@ public class AreaServiceImpl implements AreaService {
@Autowired
AreaMapper areaMapper;
public List<AreaEntity> findAll(){
public List<AreaEntity> findAll() {
return areaMapper.findAll();
}
@Override
public int saveArea(AreaEntity areaEntity) {
// 判断区域id和区域名称是否存在
int count = areaMapper.selectCountByAreaIdAndAreaName(areaEntity.getAreaId(), areaEntity.getAreaName());
if (count > 0) {
return 0;
}
return areaMapper.insertArea(areaEntity);
}
@Override
public int updateArea(AreaEntity areaEntity) {
return areaMapper.updateArea(areaEntity);
}
@Override
public int getCount(String areaId, Integer page, Integer limit) {
return areaMapper.getCount(areaId, page, limit);
}
@Override
public List<AreaEntity> queryArea(String areaId, Integer page, Integer limit) {
return areaMapper.queryArea(areaId, page, limit);
}
@Override
public List<AreaModel> selectAreaName() {
return areaMapper.selectAreaName();
}
@Override
public int deleteArea(List<AreaEntity> records) {
for(AreaEntity record:records) {
areaMapper.deleteArea(record.getId().toString());
}
return 0;
}
@Override
public int deleteAreaById(String id) {
return areaMapper.deleteArea(String.valueOf(id));
}
@Override
public int selectByAreaName(String areaName) {
return areaMapper.selectByAreaName(areaName);
}
@Override
public AreaEntity selectById(String buildingId) {
return areaMapper.selectById(buildingId);
}
}

124
user-service/src/main/java/com/mh/user/service/impl/BuildingServiceImpl.java

@ -2,14 +2,25 @@ package com.mh.user.service.impl;
import com.mh.common.http.HttpResult;
import com.mh.user.constants.SysConstants;
import com.mh.user.entity.AreaEntity;
import com.mh.user.entity.BuildingEntity;
import com.mh.user.entity.SysParamEntity;
import com.mh.user.mapper.AreaMapper;
import com.mh.user.mapper.BuildingMapper;
import com.mh.user.model.AreaBuildingTreeModel;
import com.mh.user.model.BuildingModel;
import com.mh.user.service.BuildingService;
import com.mh.user.service.SysParamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import static java.util.Comparator.*;
@Service
public class BuildingServiceImpl implements BuildingService {
@ -17,6 +28,12 @@ public class BuildingServiceImpl implements BuildingService {
@Autowired
private BuildingMapper buildingMapper;
@Autowired
private AreaMapper areaMapper;
@Autowired
private SysParamService sysParamService;
@Override
public int saveBuilding(BuildingEntity buildingEntity) {
return buildingMapper.saveBuilding(buildingEntity);
@ -28,13 +45,13 @@ public class BuildingServiceImpl implements BuildingService {
}
@Override
public List<BuildingEntity> queryBuilding(String buildingId,int page, int limit) {
return buildingMapper.queryBuilding(buildingId,page,limit);
public List<BuildingEntity> queryBuilding(String buildingId,int page, int limit, int level) {
return buildingMapper.queryBuilding(buildingId,page,limit, level);
}
@Override
public int getCount(String buildingId,int page, int limit) {
return buildingMapper.getCount(buildingId,page,limit);
public int getCount(String buildingId,int page, int limit, int level) {
return buildingMapper.getCount(buildingId,page,limit, level);
}
@Override
@ -98,4 +115,103 @@ public class BuildingServiceImpl implements BuildingService {
public Double queryLowTankHeight(String buildingId) {
return buildingMapper.queryLowTankHeight(buildingId);
}
@Override
public List<AreaBuildingTreeModel> queryTree() {
// 查询项目名称和id
SysParamEntity sysParamEntity = sysParamService.selectSysParam();
// 获取区域并按sort排序
List<AreaEntity> areaList = areaMapper.findAll().stream()
.sorted(comparing(AreaEntity::getSort))
.collect(Collectors.toList());
// 获取楼栋并按sort排序
List<BuildingEntity> buildingList = buildingMapper.selectAll().stream()
.sorted(comparing(BuildingEntity::getSort))
.collect(Collectors.toList());
// 创建结果列表
List<AreaBuildingTreeModel> treeList = new ArrayList<>();
// 项目名称
AreaBuildingTreeModel projectNode = new AreaBuildingTreeModel();
projectNode.setId(0L);
projectNode.setName(sysParamEntity.getCustomName());
projectNode.setSort(0);
projectNode.setParentId(-1L);
projectNode.setLevel(0);
projectNode.setChildren(new ArrayList<>());
// 判断区域是否有数据
if (areaList.isEmpty()) {
// 没有数据只能遍历楼栋
// 为该区域添加对应的楼栋
List<AreaBuildingTreeModel> buildingNodes = buildingList.stream()
.map(building -> {
AreaBuildingTreeModel buildingNode = new AreaBuildingTreeModel();
buildingNode.setId(building.getId());
buildingNode.setName(building.getBuildingName());
buildingNode.setParentId(0L);
buildingNode.setSort(building.getSort());
buildingNode.setLevel(2);
buildingNode.setChildren(null);
return buildingNode;
})
.collect(Collectors.toList());
projectNode.setChildren(buildingNodes);
treeList.add(projectNode);
} else {
List<AreaBuildingTreeModel> areaTreeList = new ArrayList<>();
// 将区域转换为树节点
for (AreaEntity area : areaList) {
AreaBuildingTreeModel areaNode = new AreaBuildingTreeModel();
areaNode.setId(area.getId());
areaNode.setName(area.getAreaName());
areaNode.setSort(area.getSort());
areaNode.setLevel(1);
areaNode.setParentId(projectNode.getId()); // 修改为projectNode的ID
areaNode.setChildren(new ArrayList<>());
// 为该区域添加对应的楼栋
List<AreaBuildingTreeModel> buildingNodes = buildingList.stream()
.filter(building -> building.getAreaId() != null &&
building.getAreaId().equals(area.getId().toString()))
.map(building -> {
AreaBuildingTreeModel buildingNode = new AreaBuildingTreeModel();
buildingNode.setId(building.getId());
buildingNode.setName(building.getBuildingName());
buildingNode.setParentId(area.getId());
buildingNode.setSort(building.getSort());
buildingNode.setLevel(2);
buildingNode.setChildren(null);
return buildingNode;
})
.collect(Collectors.toList());
areaNode.setChildren(buildingNodes);
areaTreeList.add(areaNode);
}
// 将projectNode添加到树的根节点
projectNode.setChildren(areaTreeList.stream()
.filter(node -> !node.getId().equals(0L)) // 过滤掉projectNode自身
.collect(Collectors.toList()));
}
treeList.add(projectNode);
return treeList;
}
@Override
public List<String> queryBuildingIdListByAreaId(String areaId) {
return buildingMapper.queryBuildingIdListByAreaId(areaId);
}
@Override
public int queryCheckInCount(String areaId) {
return buildingMapper.queryCheckInCount(areaId);
}
}

2
user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java

@ -375,11 +375,13 @@ public class DeviceControlServiceImpl implements DeviceControlService {
case "weekSet":
// 星期设置
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(67 + (scene - 1) * 6)), 4);
if (Constant.WRITE.equals(type)) {
String dataValue = ExchangeStringUtil.addZeroForNum(deviceCodeParam.getDataValue(), 8);
dataValue = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.parseByte2HexStr(dataValue), 4);
dataValue = ExchangeStringUtil.hexToDec(dataValue);
deviceCodeParam.setDataValue(dataValue);
serialPortModel.setDataValue(dataValue);
}
deviceCodeParam.setRegisterSize(1);
break;
case "dateCalibrationSet":

71
user-service/src/main/java/com/mh/user/service/impl/DeviceInstallServiceImpl.java

@ -56,14 +56,15 @@ public class DeviceInstallServiceImpl implements DeviceInstallService {
/**
* 生成采集信息内容
*
* @param deviceInstallEntity
*/
@Override
public void createParamCode(DeviceInstallEntity deviceInstallEntity) {
DeviceCodeParamEntity deviceCodeParamEntity = new DeviceCodeParamEntity();
BeanUtils.copyProperties(deviceInstallEntity,deviceCodeParamEntity);
BeanUtils.copyProperties(deviceInstallEntity, deviceCodeParamEntity);
deviceCodeParamEntity.setBaudrate(deviceInstallEntity.getBaudRate());
deviceCodeParamEntity.setThread(deviceInstallEntity.getDataCom().toLowerCase().replace("com",""));
deviceCodeParamEntity.setThread(deviceInstallEntity.getDataCom().toLowerCase().replace("com", ""));
// 顺便生成采集信息
switch (deviceInstallEntity.getDeviceType()) {
case "压变":
@ -203,12 +204,12 @@ public class DeviceInstallServiceImpl implements DeviceInstallService {
@Override
public void updateLastValue(Long id, String lastValue, Date lastDate) {
deviceInstallMapper.updateLastValue(id,lastValue,lastDate);
deviceInstallMapper.updateLastValue(id, lastValue, lastDate);
}
@Override
public List<DeviceInstallEntity> getAllDevice(int page, int limit) {
return deviceInstallMapper.getAllDevice(page,limit);
return deviceInstallMapper.getAllDevice(page, limit);
}
@Override
@ -228,56 +229,56 @@ public class DeviceInstallServiceImpl implements DeviceInstallService {
// 查询所有启用的设备
@Override
public int getAllCount(){
public int getAllCount() {
return deviceInstallMapper.getAllCount();
}
@Override
public List<DeviceInstallEntity> queryDevice(String buildingId,String deviceType, String startDate, String endDate,String isOnline, String isUse,String isFault,int page, int limit) {
return deviceInstallMapper.queryDevice(buildingId,deviceType,startDate, endDate,isOnline,isUse, isFault,page, limit);
public List<DeviceInstallEntity> queryDevice(String buildingId, String deviceType, String startDate, String endDate, String isOnline, String isUse, String isFault, int page, int limit, int level) {
return deviceInstallMapper.queryDevice(buildingId, deviceType, startDate, endDate, isOnline, isUse, isFault, page, limit, level);
}
@Override
public int getCount(String buildingId,String deviceType, String startDate, String endDate,String isOnline, String isUse, String isFault, int page, int limit) {
return deviceInstallMapper.getCount(buildingId,deviceType, startDate, endDate,isOnline,isUse, isFault, page, limit);
public int getCount(String buildingId, String deviceType, String startDate, String endDate, String isOnline, String isUse, String isFault, int page, int limit, int level) {
return deviceInstallMapper.getCount(buildingId, deviceType, startDate, endDate, isOnline, isUse, isFault, page, limit, level);
}
//查询设备故障情况
@Override
public int getIsFaultCount(String isFault,String deviceType){
return deviceInstallMapper.getIsFaultCount(isFault,deviceType);
public int getIsFaultCount(String isFault, String deviceType) {
return deviceInstallMapper.getIsFaultCount(isFault, deviceType);
}
//查询设备在线情况
@Override
public int getIsOnlineCount(String isOnline,String deviceType){
return deviceInstallMapper.getIsOnlineCount(isOnline,deviceType);
public int getIsOnlineCount(String isOnline, String deviceType) {
return deviceInstallMapper.getIsOnlineCount(isOnline, deviceType);
}
@Override
public void updateOnline(String deviceAddr, String deviceType,String buildingId,String isOnline) {
deviceInstallMapper.updateOnline(deviceAddr,deviceType,buildingId,isOnline);
public void updateOnline(String deviceAddr, String deviceType, String buildingId, String isOnline) {
deviceInstallMapper.updateOnline(deviceAddr, deviceType, buildingId, isOnline);
}
@Override
public void updateNotOnline(String deviceAddr, String deviceType,String buildingId,String isOnline) {
deviceInstallMapper.updateNotOnline(deviceAddr,deviceType,buildingId,isOnline);
public void updateNotOnline(String deviceAddr, String deviceType, String buildingId, String isOnline) {
deviceInstallMapper.updateNotOnline(deviceAddr, deviceType, buildingId, isOnline);
}
//根据通讯地址和设备类型查询对应的设备信息
@Override
public DeviceInstallEntity selectDevice(String deviceAddr, String deviceType,String buildingId) {
return deviceInstallMapper.selectDevice(deviceAddr,deviceType,buildingId);
public DeviceInstallEntity selectDevice(String deviceAddr, String deviceType, String buildingId) {
return deviceInstallMapper.selectDevice(deviceAddr, deviceType, buildingId);
}
@Override
public int selectDeviceCount(String deviceAddr, String deviceType) {
return deviceInstallMapper.selectDeviceCount(deviceAddr,deviceType);
return deviceInstallMapper.selectDeviceCount(deviceAddr, deviceType);
}
@Override
public int deleteDevice(List<DeviceInstallEntity> records) {
for(DeviceInstallEntity record:records) {
for (DeviceInstallEntity record : records) {
// deviceInstallMapper.deleteDevice(record.getId().toString());
}
return 0;
@ -317,15 +318,19 @@ public class DeviceInstallServiceImpl implements DeviceInstallService {
// 查询Excel导入的数据
@Override
public List<DeviceInstallTempEntity> queryExcelDevices(){
public List<DeviceInstallTempEntity> queryExcelDevices() {
return deviceInstallMapper.queryExcelDevices();
};
}
;
// 查询Excel导入的数据的记录数
@Override
public int queryExcelDevicesCount(){
public int queryExcelDevicesCount() {
return deviceInstallMapper.queryExcelDevicesCount();
};
}
;
// 在导入中的数据有重复
@Override
@ -334,13 +339,13 @@ public class DeviceInstallServiceImpl implements DeviceInstallService {
}
/**
* @throws
* @author nxr
* @title
* @description 判断导入资料数据的合法性
* @updateTime 2022-06-19
* @throws
*/
public void updateDevice_install_temp(){
public void updateDevice_install_temp() {
//判断通讯地址,在导入中的数据有重复
deviceInstallMapper.updateDevice_install_temp__multiple();
}
@ -355,7 +360,7 @@ public class DeviceInstallServiceImpl implements DeviceInstallService {
//修改设备启用状态
@Override
public void updateDeviceIsUse(String isUse, String deviceAddr) {
deviceInstallMapper.updateDeviceIsUse(isUse,deviceAddr);
deviceInstallMapper.updateDeviceIsUse(isUse, deviceAddr);
}
@Override
@ -370,13 +375,13 @@ public class DeviceInstallServiceImpl implements DeviceInstallService {
@Override
public void updateDeviceFault(String isFault, String deviceAddr, String deviceType) {
deviceInstallMapper.updateDeviceFault(isFault,deviceAddr,deviceType);
deviceInstallMapper.updateDeviceFault(isFault, deviceAddr, deviceType);
}
//查询设备品牌
@Override
public String selectBrand(String buildingId,String deviceAddr) {
return deviceInstallMapper.selectBrand(buildingId,deviceAddr);
public String selectBrand(String buildingId, String deviceAddr) {
return deviceInstallMapper.selectBrand(buildingId, deviceAddr);
}
@Override
@ -405,8 +410,8 @@ public class DeviceInstallServiceImpl implements DeviceInstallService {
}
@Override
public String selectLastDate(String deviceType, String deviceAddr,String buildingId) {
return deviceInstallMapper.selectLastDate(deviceType,deviceAddr,buildingId);
public String selectLastDate(String deviceType, String deviceAddr, String buildingId) {
return deviceInstallMapper.selectLastDate(deviceType, deviceAddr, buildingId);
}
@Override

81
user-service/src/main/java/com/mh/user/service/impl/EnergyServiceImpl.java

@ -1,8 +1,12 @@
package com.mh.user.service.impl;
import com.alibaba.druid.util.StringUtils;
import com.mh.user.entity.AreaEntity;
import com.mh.user.entity.EnergyEntity;
import com.mh.user.mapper.EnergyMapper;
import com.mh.user.model.SumModel;
import com.mh.user.service.AreaService;
import com.mh.user.service.BuildingService;
import com.mh.user.service.EnergyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -16,6 +20,12 @@ public class EnergyServiceImpl implements EnergyService {
@Autowired
EnergyMapper energyMapper;
@Autowired
private BuildingService buildingService;
@Autowired
private AreaService areaService;
@Override
public void saveEnergy(EnergyEntity energyEntity,int type) {
@ -53,22 +63,58 @@ public class EnergyServiceImpl implements EnergyService {
}
@Override
public List<EnergyEntity> queryEnergy(String buildingId, String startDate,String endDate, int page, int limit,int type) {
public List<EnergyEntity> queryEnergy(String buildingId, String startDate,String endDate, int page, int limit,int type, int level) {
List<EnergyEntity> list=new ArrayList<EnergyEntity>();
// 判断级别类型
if (level == 1) {
// 根据区域id查询区域名称
AreaEntity areaEntity = areaService.selectById(buildingId);
if (null == areaEntity) {
return list;
}
// 根据区域id获取所有楼栋 id
List<String> buildingIds = buildingService.queryBuildingIdListByAreaId(buildingId);
if(type==1) {
list=energyMapper.queryEnergyDay(buildingId,startDate,endDate,page,limit);
} else if (type==2){
list=energyMapper.queryEnergyMonth(buildingId,startDate,endDate,page,limit);
System.out.println(list);
list=energyMapper.getAreaEnergyDay(buildingIds,startDate,endDate, page, limit, areaEntity.getAreaName());
}else if (type==2){
list=energyMapper.getAreaEnergyMonth(buildingIds,startDate,endDate, page, limit, areaEntity.getAreaName());
} else if (type==3){
list=energyMapper.queryEnergyYear(buildingId,startDate,endDate,page,limit);
list=energyMapper.getAreaEnergyYear(buildingIds,startDate,endDate, page, limit, areaEntity.getAreaName());
}
} else {
if (StringUtils.isEmpty(buildingId)) {
buildingId = "所有";
}
// 楼栋
if (type == 1) {
list = energyMapper.queryEnergyDay(buildingId, startDate, endDate, page, limit);
} else if (type == 2) {
list = energyMapper.queryEnergyMonth(buildingId, startDate, endDate, page, limit);
System.out.println(list);
} else if (type == 3) {
list = energyMapper.queryEnergyYear(buildingId, startDate, endDate, page, limit);
}
}
return list;
}
@Override
public int getEnergyCount(String buildingId, String startDate,String endDate, int page, int limit,int type) {
public int getEnergyCount(String buildingId, String startDate,String endDate, int page, int limit,int type, int level) {
int r=0; // 记录数
// 判断级别类型
if (level == 0) {
buildingId = "所有";
} else if (level == 1) {
// 根据区域id获取所有楼栋 id
List<String> buildingIds = buildingService.queryBuildingIdListByAreaId(buildingId);
if(type==1) {
r=energyMapper.getAreaEnergyDayCount(buildingIds,startDate,endDate, page, limit);
}else if (type==2){
r=energyMapper.getAreaEnergyMonthCount(buildingIds,startDate,endDate, page, limit);
} else if (type==3){
r=energyMapper.getAreaEnergyYearCount(buildingIds,startDate,endDate, page, limit);
}
}
if(type==1) {
r=energyMapper.getEnergyDayCount(buildingId,startDate,endDate, page, limit);
}else if (type==2){
@ -101,12 +147,29 @@ public class EnergyServiceImpl implements EnergyService {
}
@Override
public List<EnergyEntity> queryHourEnergy(String buildingId, String curDate, int page, int limit) {
public List<EnergyEntity> queryHourEnergy(String buildingId, String curDate, int page, int limit, int level) {
List<EnergyEntity> list=new ArrayList<EnergyEntity>();
// 判断级别类型
if (level == 0 || null == buildingId) {
buildingId = "所有";
level = 0;
}
if (level == 1) {
// 根据区域id查询区域名称
AreaEntity areaEntity = areaService.selectById(buildingId);
if (null == areaEntity) {
return list;
}
// 根据区域id获取所有楼栋 id
List<String> buildingIds = buildingService.queryBuildingIdListByAreaId(buildingId);
list=energyMapper.getAreaEnergyHour(buildingIds,curDate, page, limit, areaEntity.getAreaName());
return list;
}
return energyMapper.queryHourEnergy(buildingId,curDate,page,limit);
}
@Override
public int getHourEnergyCount(String buildingId, String curDate) {
public int getHourEnergyCount(String buildingId, String curDate, int level) {
return energyMapper.getHourEnergyCount(buildingId,curDate);
}

25
user-service/src/main/java/com/mh/user/service/impl/NowDataServiceImpl.java

@ -457,12 +457,20 @@ public class NowDataServiceImpl implements NowDataService {
//查询所有楼栋每栋楼的平均温度
@Override
public List<WaterTempEntity> queryWaterTemp2(String curDate,int page,int limit) {
return nowDataMapper.queryWaterTemp2(curDate,page,limit);
public List<WaterTempEntity> queryWaterTemp2(String curDate,int page,int limit, int level, String buildingID) {
List<WaterTempEntity> waterTempEntityList = nowDataMapper.queryWaterTemp2(curDate, page, limit);
// 根据level层级查询
if (level == 1) {
// 根据区域id获取对应的楼栋id
List<String> buildingIdList = buildingService.queryBuildingIdListByAreaId(buildingID);
// waterTempEntityList过滤掉非该区域的楼栋
waterTempEntityList.removeIf(waterTempEntity -> !buildingIdList.contains(waterTempEntity.getBuildingID()));
}
return waterTempEntityList;
}
//查询所有楼栋每栋楼的平均温度记录数
@Override
public int queryWaterTempCount2(String curDate) {
public int queryWaterTempCount2(String curDate, int level, String buildingID) {
return nowDataMapper.queryWaterTempCount2(curDate);
}
@ -483,8 +491,15 @@ public class NowDataServiceImpl implements NowDataService {
}
@Override
public List<WaterLevelEntity> queryBuildWaterLevel(String curDate, int page, int limit) {
return nowDataMapper.queryBuildWaterLevel(curDate, page, limit);
public List<WaterLevelEntity> queryBuildWaterLevel(String curDate, int page, int limit, int level, String buildingID) {
List<WaterLevelEntity> waterLevelEntities = nowDataMapper.queryBuildWaterLevel(curDate, page, limit);
if (level == 1) {
// 根据区域id获取对应的楼栋id
List<String> buildingIdList = buildingService.queryBuildingIdListByAreaId(buildingID);
// waterLevelEntities过滤掉非该区域的楼栋
waterLevelEntities.removeIf(waterLevelEntity -> !buildingIdList.contains(waterLevelEntity.getBuildingID()));
}
return waterLevelEntities;
}
@Override

122
user-service/src/main/java/com/mh/user/service/impl/SummaryServiceImpl.java

@ -5,31 +5,139 @@ import com.mh.user.entity.DeviceStateEntity;
import com.mh.user.entity.EnergySumEntity;
import com.mh.user.entity.MaintainSumEntity;
import com.mh.user.mapper.SummaryMapper;
import com.mh.user.service.BuildingService;
import com.mh.user.service.SummaryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.Year;
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import static java.lang.Double.parseDouble;
@Service
public class SummaryServiceImpl implements SummaryService {
@Autowired
SummaryMapper summaryMapper;
@Autowired
private BuildingService buildingService;
@Override
public DeviceStateEntity queryDeviceState() {
return summaryMapper.queryDeviceState();
}
@Override
public EnergySumEntity queryEnergySum(String buildingId, String curDate, int type) {
if (type==1){
return summaryMapper.queryEnergyDaySum(buildingId,curDate); //日
}else if (type==2){
return summaryMapper.queryEnergyMonthSum(buildingId,curDate); //月
}else {
return summaryMapper.queryEnergyYearSum(buildingId,curDate); //年
public EnergySumEntity queryEnergySum(String buildingId, String curDate, int type, int level) {
// 判断层级属于校区
if (level == 1) {
// 根据buildingId查询对应的所有楼栋id
List<String> strings = buildingService.queryBuildingIdListByAreaId(buildingId);
// 查询所有楼栋人数
int count = buildingService.queryCheckInCount(buildingId);
// 遍历楼栋id,查询所有楼栋的energySum
List<EnergySumEntity> curList = new ArrayList<>();
List<EnergySumEntity> lastList = new ArrayList<>();
for (String id : strings) {
if (type == 1) {
// 日统计
curList.add(summaryMapper.queryEnergyDaySum(id, curDate));
// 日期yyyy-MM-dd格式的字符串减去一天
LocalDate date = LocalDate.parse(curDate, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDate previousDate = date.minusDays(1);
String previousDateString = previousDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
lastList.add(summaryMapper.queryEnergyDaySum(id, previousDateString));
} else if (type == 2) {
// 月统计
curList.add(summaryMapper.queryEnergyMonthSum(id, curDate));
// 日期yyyy-MM格式的字符串减去一个月
YearMonth yearMonth = YearMonth.parse(curDate, DateTimeFormatter.ofPattern("yyyy-MM"));
YearMonth previousMonth = yearMonth.minusMonths(1);
String previousMonthString = previousMonth.format(DateTimeFormatter.ofPattern("yyyy-MM"));
lastList.add(summaryMapper.queryEnergyMonthSum(id, previousMonthString));
} else {
// 年统计
curList.add(summaryMapper.queryEnergyYearSum(id, curDate));
// 日期yyyy格式的字符串减去一年
Year year = Year.parse(curDate);
Year previousYear = year.minusYears(1);
String previousYearString = previousYear.toString();
lastList.add(summaryMapper.queryEnergyYearSum(id, previousYearString));
}
}
// curList每一个参数求和,得出 EnergySumEntity
EnergySumEntity curSum = new EnergySumEntity();
curSum.setFillWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getFillWater())).sum()));
curSum.setWaterValue(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getWaterValue())).sum()));
curSum.setElectValue(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectValue())).sum()));
curSum.setElectWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectWater())).sum()));
// lastList每一个参数求和,得出 EnergySumEntity
EnergySumEntity lastSum = new EnergySumEntity();
lastSum.setFillWater(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getFillWater())).sum()));
lastSum.setWaterValue(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getWaterValue())).sum()));
lastSum.setElectValue(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getElectValue())).sum()));
lastSum.setElectWater(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getElectWater())).sum()));
// 昨日的EnergySumEntity和今日的EnergySumEntity,对比计算出补水昨日比、用水与昨日比、用电与昨日比、单耗与昨日比
EnergySumEntity result = new EnergySumEntity();
result.setFillWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getFillWater())).sum()));
result.setWaterValue(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getWaterValue())).sum()));
result.setElectValue(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectValue())).sum()));
result.setElectWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectWater())).sum()));
// 计算与昨日的比较百分比
result.setFillWaterP(calculateRatio(curSum.getFillWater(), lastSum.getFillWater()));
result.setWaterP(calculateRatio(curSum.getWaterValue(), lastSum.getWaterValue()));
result.setElectP(calculateRatio(curSum.getElectValue(), lastSum.getElectValue()));
// 计算单耗比较
String curPerElect = count != 0 ? new BigDecimal(curSum.getElectValue()).divide(new BigDecimal(count)).toString() : "0";
String lastPerElect = count != 0 ? new BigDecimal(lastSum.getElectValue()).divide(new BigDecimal(count)).toString() : "0";
result.setElectWaterP(calculateRatio(curPerElect, lastPerElect));
return result;
}
if (type == 1) {
return summaryMapper.queryEnergyDaySum(buildingId, curDate); //日
} else if (type == 2) {
return summaryMapper.queryEnergyMonthSum(buildingId, curDate); //月
} else {
return summaryMapper.queryEnergyYearSum(buildingId, curDate); //年
}
}
/**
* 计算比率的方法
*
* @param current 当前值
* @param previous 前一个值
* @return 比率百分比形式
*/
private String calculateRatio(String current, String previous) {
if (parseDouble(previous) == 0) {
return parseDouble(current) > 0 ? "100" : "0"; // 避免除零错误
}
return String.valueOf(((parseDouble(current) - parseDouble(previous)) / parseDouble(previous)) * 100);
}
@Override
public MaintainSumEntity queryMaintainSum(String buildingId, String curDate) {

8
user-service/src/main/java/com/mh/user/strategy/EleMeterStrategy.java

@ -53,10 +53,10 @@ public class EleMeterStrategy implements DeviceStrategy {
// }else if(registerAddr.equals("")){
// str=str+"0300000002";
// }
String funCode = ExchangeStringUtil.addZeroForNum(deviceCodeParamEntity.getFunCode(), 2);
if ("04".equals(funCode)) {
str = str + funCode + "00010002";
}
// String funCode = ExchangeStringUtil.addZeroForNum(deviceCodeParamEntity.getFunCode(), 2);
// if ("04".equals(funCode)) {
str = str + "04" + "00010002";
// }
String checkWord = ExchangeStringUtil.getStrCRC16(str); //CRC16校验
str = str + checkWord;
} else {

6
user-service/src/main/java/com/mh/user/strategy/TimeControlStrategy.java

@ -175,9 +175,9 @@ public class TimeControlStrategy implements DeviceStrategy {
data = checkStr.substring(8, 10)
+ checkStr.substring(12, 14)
+ checkStr.substring(16, 18)
+ checkStr.substring(22, 24)
+ checkStr.substring(26, 28)
+ checkStr.substring(30, 32);
+ checkStr.substring(24, 26)
+ checkStr.substring(28, 30)
+ checkStr.substring(32, 34);
}
} else {
if (rec == 26) { //读时间设置值

2
user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java

@ -45,7 +45,7 @@ public class WtMeterStrategy implements DeviceStrategy {
String str = "";
if (deviceAddr != null && deviceAddr.length() > 0) {
try {
if (StringUtils.isBlank(brand) || brand.equals("美柯")) {
if (StringUtils.isBlank(brand) || brand.equals("美柯")) {
// 0 代表前面补充0,14 代表长度为14,d 代表参数为正数型
str = String.format("%014d", Long.parseLong(deviceAddr));//基表通讯号
// 转换位置

42
user-service/src/main/java/com/mh/user/utils/GetReadOrder485.java

@ -651,6 +651,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity3.setDataCom(devices.getDataCom());
deviceCodeParamEntity3.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity3.setParity(devices.getParity());
// 只获取字符串数字
deviceCodeParamEntity3.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntityList.add(deviceCodeParamEntity3);
break;
case "美的2":
@ -665,6 +667,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity3.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity3.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity3);
// 只获取字符串数字
deviceCodeParamEntity3.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
break;
case "瑞星":
deviceCodeParamEntity3.setRegisterAddr("0046");//实际水温
@ -678,6 +682,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity3.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity3.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity3);
// 只获取字符串数字
deviceCodeParamEntity3.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
break;
case "海尔":
// 多联机模式
@ -693,6 +699,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity3.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity3.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity3);
// 只获取字符串数字
deviceCodeParamEntity3.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
break;
default:
break;
@ -752,6 +760,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity1.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity1.setBrand(devices.getBrand());
deviceCodeParamEntity1.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity1.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity1.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity1.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity1);//添加到列表
@ -765,6 +775,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity1.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity1.setBrand(devices.getBrand());
deviceCodeParamEntity1.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity1.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity1.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity1.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity1);//添加到列表
@ -778,6 +790,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity1.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity1.setBrand(devices.getBrand());
deviceCodeParamEntity1.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity1.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity1.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity1.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity1);//添加到列表
@ -793,6 +807,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity1.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity1.setBrand(devices.getBrand());
deviceCodeParamEntity1.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity1.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity1.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity1.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity1);//添加到列表
@ -855,6 +871,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity2.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity2.setBrand(devices.getBrand());
deviceCodeParamEntity2.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity2.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity2.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity2.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity2);
@ -867,6 +885,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity4.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity4.setBrand(devices.getBrand());
deviceCodeParamEntity4.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity4.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity4.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity4.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity4);
@ -880,6 +900,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity2.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity2.setBrand(devices.getBrand());
deviceCodeParamEntity2.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity2.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity2.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity2.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity2);
@ -892,6 +914,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity4.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity4.setBrand(devices.getBrand());
deviceCodeParamEntity4.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity4.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity4.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity4.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity4);
@ -905,6 +929,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity2.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity2.setBrand(devices.getBrand());
deviceCodeParamEntity2.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity2.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity2.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity2.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity2);
@ -917,6 +943,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity4.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity4.setBrand(devices.getBrand());
deviceCodeParamEntity4.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity4.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity4.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity4.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity4);
@ -932,12 +960,14 @@ public class GetReadOrder485 {
deviceCodeParamEntity2.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity2.setBrand(devices.getBrand());
deviceCodeParamEntity2.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity2.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity2.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity2.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity2);
registerAddr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex("20041"), 4);
deviceCodeParamEntity2.setRegisterAddr(registerAddr);//故障状态
deviceCodeParamEntity4.setRegisterAddr(registerAddr);//故障状态
deviceCodeParamEntity4.setFunCode("03");
deviceCodeParamEntity4.setDeviceAddr(devices.getDeviceAddr());
deviceCodeParamEntity4.setDeviceName(devices.getDeviceName());
@ -945,6 +975,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity4.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity4.setBrand(devices.getBrand());
deviceCodeParamEntity4.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity4.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity4.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity4.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity4);
@ -1017,6 +1049,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity2.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity2.setBrand(devices.getBrand());
deviceCodeParamEntity2.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity2.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity2.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity2.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity2);
@ -1030,6 +1064,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity4.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity4.setBrand(devices.getBrand());
deviceCodeParamEntity4.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity4.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity4.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity4.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity4);
@ -1043,6 +1079,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity2.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity2.setBrand(devices.getBrand());
deviceCodeParamEntity2.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity2.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity2.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity2.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity2);
@ -1056,6 +1094,8 @@ public class GetReadOrder485 {
deviceCodeParamEntity2.setBaudrate(devices.getBaudRate());
deviceCodeParamEntity2.setBrand(devices.getBrand());
deviceCodeParamEntity2.setDataCom(devices.getDataCom());
// 只获取字符串数字
deviceCodeParamEntity2.setThread(ExchangeStringUtil.getNumFromString(devices.getDataCom()));
deviceCodeParamEntity2.setBuildingId(devices.getBuildingId());
deviceCodeParamEntity2.setParity(devices.getParity());
deviceCodeParamEntityList.add(deviceCodeParamEntity2);

16
user-service/src/main/resources/application-prod.yml

@ -53,16 +53,16 @@ spring:
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
# username: chws_gw
# password: chws_gw@803
url: jdbc:sqlserver://111.230.50.186:32012;DatabaseName=chws_gw;allowMultiQueries=true
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: chws_gw
password: chws_gw@803
# url: jdbc:sqlserver://111.230.50.186:32012;DatabaseName=chws_gw;allowMultiQueries=true
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
# username: chws_gw
# password: chws_gw@803
# 华软江门
# url: jdbc:sqlserver://127.0.0.1:57238;DatabaseName=chws_jm;allowMultiQueries=true
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
# username: chws_jm
# password: Mhtech@803
url: jdbc:sqlserver://127.0.0.1:57238;DatabaseName=chws_jm;allowMultiQueries=true
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: chws_jm
password: Mhtech@803
filters: stat,wall,config
max-active: 100

Loading…
Cancel
Save