package com.szwl.controller;
import cn.com.crbank.ommo.bean.ResultMessage;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.szwl.constant.ResponseCodesEnum;
import com.szwl.model.bo.R;
import com.szwl.model.bo.ResponseModel;
import com.szwl.model.entity.*;
import com.szwl.model.utils.PushUtils;
import com.szwl.service.TAdminService;
import com.szwl.service.TAlarmRecordService;
import com.szwl.service.TEquipmentService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
*
* 报警信息 前端控制器
*
*
* @author wuhs
* @since 2022-04-27
*/
@Api(value = "/tAlarmRecord", tags = {"报警信息"})
@RestController
@RequestMapping("/tAlarmRecord")
public class TAlarmRecordController {
@Autowired
TEquipmentService tEquipmentService;
@Autowired
TAlarmRecordService tAlarmRecordService;
@Autowired
TAdminService adminService;
@ApiOperation(value = "消除报警")
@PostMapping("/eliminate")
public ResponseEntity> eliminate(@RequestBody TAlarmRecord param){
TAlarmRecord tAlarmRecord = tAlarmRecordService.getById(param.getId());
TEquipment equipment = tEquipmentService.getById(tAlarmRecord.getEquipmentId());
JSONObject kindData = new JSONObject();
kindData.put("id" , param.getId());
kindData.put("content" , tAlarmRecord.getAlarmContent());
tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("eliminate", kindData.toString()).toString());
return ResponseEntity.status(HttpStatus.OK)
.body(new ResultMessage().setCode(true).setData("0").setMessage("已发送"));
}
@ApiOperation(value = "获取分销信息列表 分页")
@GetMapping("/pageAlarmRecord")
public ResponseModel> pageAlarmRecord(String adminId, String clientId, String name, Date startDate,Date endDate, long current, long size ) {
TAdmin admin = adminService.getById(adminId);
if(StringUtils.isEmpty(adminId)){
return R.fail(ResponseCodesEnum.A0100);
}
LambdaQueryWrapper query = Wrappers.lambdaQuery();
if(admin.getType()>1){
query.eq(TAlarmRecord::getAdminId,admin.getId());
}
// 申泽平台管理员
if (admin.getId() == 2738) {
LambdaQueryWrapper adminQuery = Wrappers.lambdaQuery();
adminQuery.isNull(TAdmin::getCompanyType).or()
.eq(TAdmin::getCompanyType, "0");
List adminIds = adminService.list(adminQuery).stream()
.map(TAdmin::getId).collect(Collectors.toList());
query.in(TAlarmRecord::getAdminId,adminIds);
}
// 七云平台管理员
if (admin.getId() == 2739) {
LambdaQueryWrapper adminQuery = Wrappers.lambdaQuery();
adminQuery.eq(TAdmin::getCompanyType, "1");
List adminIds = adminService.list(adminQuery).stream()
.map(TAdmin::getId).collect(Collectors.toList());
query.in(TAlarmRecord::getAdminId,adminIds);
}
if(StringUtils.isNotEmpty(clientId)){
LambdaQueryWrapper query1 = Wrappers.lambdaQuery();
query1.like(TEquipment::getClientId,clientId);
TEquipment equipment = tEquipmentService.getOnly(query1);
if(admin.getType()>1){
if(equipment.getAdminId().toString().equals(adminId)){
query.eq(TAlarmRecord::getClientId,equipment.getClientId());
}else {
return R.fail("设备编号出错");
}
}else {
query.like(TAlarmRecord::getClientId,clientId);
}
}
if(StringUtils.isNotEmpty(name)){
query.like(TAlarmRecord::getName,name);
}
if(startDate!=null){
query.gt(TAlarmRecord::getOccurrenceTime,startDate);
}
if(endDate!=null){
query.lt(TAlarmRecord::getOccurrenceTime,endDate);
}
query.orderByDesc(TAlarmRecord::getOccurrenceTime);
Page page = new Page<>(current, size, true);
IPage iPage = tAlarmRecordService.page(page, query);
return R.ok(iPage);
}
@ApiOperation(value = "查询今天是否有报警")
@GetMapping("/isAlarm")
public ResponseModel> isAlarm(Long adminId, String todayDate){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(todayDate);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar calendar = new GregorianCalendar();
Calendar calendarEnd = new GregorianCalendar();
calendar.setTime(date);
calendarEnd.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendarEnd.set(Calendar.HOUR_OF_DAY, 23);
calendarEnd.set(Calendar.MINUTE, 59);
calendarEnd.set(Calendar.SECOND, 59);
calendarEnd.set(Calendar.MILLISECOND, 999);
Date dateStart = calendar.getTime();
Date dateEnd = calendarEnd.getTime();
LambdaQueryWrapper tAlarmRecord = new LambdaQueryWrapper<>();
tAlarmRecord.eq(TAlarmRecord::getAdminId, adminId);
tAlarmRecord.eq(TAlarmRecord::getIsEliminate, 0);
tAlarmRecord.gt(TAlarmRecord::getOccurrenceTime, dateStart);
tAlarmRecord.le(TAlarmRecord::getOccurrenceTime, dateEnd);
tAlarmRecord.orderByAsc(TAlarmRecord::getOccurrenceTime);
List list = tAlarmRecordService.list(tAlarmRecord);
if (list.size() > 0) {
Map latestRecordsMap = new HashMap<>();
for (TAlarmRecord alarmRecord : list) {
latestRecordsMap.put(alarmRecord.getEquipmentId(), alarmRecord);
}
list = new ArrayList<>(latestRecordsMap.values());
return R.ok(list);
}
return R.ok();
}
}