package com.huimv.guowei.admin.controller;
import com.alibaba.druid.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.huimv.guowei.admin.common.utils.Result;
import com.huimv.guowei.admin.common.utils.ResultCode;
import com.huimv.guowei.admin.entity.EnvDevice;
import com.huimv.guowei.admin.entity.EnvDeviceEquipment;
import com.huimv.guowei.admin.service.IEnvDeviceEquipmentService;
import com.huimv.guowei.admin.service.IEnvDeviceService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* 前端控制器
*
*
* @author author
* @since 2023-06-01
*/
@RestController
@RequestMapping("/env-device")
@CrossOrigin
public class EnvDeviceController {
@Resource
private IEnvDeviceService envDeviceService;
@Resource
private IEnvDeviceEquipmentService envDeviceEquipmentService;
@PostMapping("/listDevice")
public Result listDevice(@RequestBody Map paramsMap){
String deviceType = paramsMap.get("deviceType");
String farmId = paramsMap.get("farmId");
String pageNo = paramsMap.get("pageNum");
String pageSize = paramsMap.get("pageSize");
Page page = new Page(Integer.parseInt(pageNo),Integer.parseInt(pageSize));
return new Result(ResultCode.SUCCESS,envDeviceService.page(page, new QueryWrapper()
.eq(!StringUtils.isEmpty(deviceType),"device_type",deviceType)
.eq("farm_id",farmId).orderByDesc("id")));
}
@PostMapping("/listH5Device")
public Result listH5Device(@RequestBody Map paramsMap){
String deviceType = paramsMap.get("deviceType");
String farmId = paramsMap.get("farmId");
String pageNo = paramsMap.get("pageNum");
String pageSize = paramsMap.get("pageSize");
Page page = new Page(Integer.parseInt(pageNo),Integer.parseInt(pageSize));
if (deviceType.equals("1")){
return new Result(ResultCode.SUCCESS,envDeviceService.page(page, new QueryWrapper()
.eq(!StringUtils.isEmpty(deviceType),"device_type",deviceType)
.eq("farm_id",farmId).orderByDesc("id")));
}else {
return new Result(ResultCode.SUCCESS, envDeviceService.page(page, new QueryWrapper()
.in("device_type", 2, 3)
.eq("farm_id", farmId).orderByDesc("id")));
}
}
@PostMapping("/listScale")
public Result listScale(@RequestBody Map paramsMap){
String farmId = paramsMap.get("farmId");
return new Result(ResultCode.SUCCESS,envDeviceService.list(new QueryWrapper().eq("farm_id",farmId).eq("device_type",2)));
}
@PostMapping("/addDevice")
@Transactional(rollbackFor = RuntimeException.class)
public Result addDevice(@RequestBody Map paramsMap){
String deviceCode = (String) paramsMap.get("deviceCode");
String unitId = (String) paramsMap.get("unitId");
String unitName = (String) paramsMap.get("unitName");
String buildLocation = (String) paramsMap.get("buildLocation");
String farmId = (String) paramsMap.get("farmId");
Integer deviceType = (Integer) paramsMap.get("deviceType");
// String deviceName = unitName;
String deviceName = (String) paramsMap.get("deviceName");
// switch (deviceType){
// case 1: deviceName += "环控";
// break;
// case 2: deviceName += "移动电子秤";
// break;
// case 3: deviceName += "固定电子秤";
// break;
// }
if (envDeviceService.count(new QueryWrapper().eq("device_code",deviceCode)) != 0){
return new Result(10001,"设备编码已存在!",false);
}
if (deviceType == 1){
if (envDeviceService.count(new QueryWrapper().eq("unit_Id",unitId).eq("device_type",1)) != 0){
return new Result(10001,"栋舍已存在环控设备!",false);
}
}
EnvDevice envDevice = new EnvDevice();
envDevice.setDeviceCode(deviceCode);
envDevice.setDeviceName(deviceName);
envDevice.setDeviceType(deviceType);
envDevice.setBuildLocation(buildLocation);
if (deviceType != 2){
envDevice.setUnitName(unitName);
envDevice.setUnitId(Integer.parseInt(unitId));
}
envDevice.setFarmId(Integer.parseInt(farmId));
envDeviceService.save(envDevice);
//环控设备
if (deviceType == 1){
List list = (List) paramsMap.get("device");
int fan = 1;
int tp = 1;
int spray = 1;
for (int i = 0; i paramsMap){
String deviceCode = paramsMap.get("deviceCode");
envDeviceService.remove(new QueryWrapper().eq("device_code",deviceCode));
envDeviceEquipmentService.remove(new QueryWrapper().eq("device_code",deviceCode));
return Result.SUCCESS();
}
@PostMapping("/getDeviceStatus")
public Result getDeviceStatus(@RequestBody Map paramsMap){
String farmId = paramsMap.get("farmId");
double rate = 0.0;
Map resultMap = new HashMap();
int total = envDeviceService.count(new QueryWrapper().eq("farm_id", farmId));
resultMap.put("totalDevice", total);
int deviceOn = envDeviceService.count(new QueryWrapper().eq("farm_id", farmId).eq("device_status", 1));
int deviceOff = envDeviceService.count(new QueryWrapper().eq("farm_id", farmId).eq("device_status", 0));
resultMap.put("deviceOn", deviceOn);
resultMap.put("deviceOff", deviceOff);
if (deviceOff == 0 && deviceOn != 0){
rate = 100;
}
if (deviceOff != 0){
rate = (deviceOn/total)*100;
}
resultMap.put("onlineRate",rate);
return new Result(ResultCode.SUCCESS,resultMap);
}
}