package com.moral.api.service.impl;
|
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.ObjectUtils;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.LinkedHashMap;
|
import java.util.List;
|
import java.util.Map;
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.moral.api.config.Interceptor.UserHelper;
|
import com.moral.api.entity.Device;
|
import com.moral.api.entity.HandDevice;
|
import com.moral.api.entity.HistoryFiveMinutely;
|
import com.moral.api.entity.HistoryHourly;
|
import com.moral.api.mapper.DeviceMapper;
|
import com.moral.api.mapper.HandDeviceMapper;
|
import com.moral.api.pojo.query.handdevice.HandDevicePageCond;
|
import com.moral.api.pojo.vo.user.QxUser;
|
import com.moral.api.service.DeviceService;
|
import com.moral.api.service.HandDeviceService;
|
import com.moral.api.service.HistoryFiveMinutelyService;
|
import com.moral.api.service.HistoryHourlyService;
|
import com.moral.constant.Constants;
|
import com.moral.util.DateUtils;
|
|
|
|
/**
|
* Description //todo
|
*
|
* @author swb
|
* @ClassName HandDeviceServiceImpl
|
* @date 2024.02.27 10:25
|
*/
|
@Service
|
public class HandDeviceServiceImpl extends ServiceImpl<HandDeviceMapper, HandDevice> implements HandDeviceService {
|
|
|
@Autowired
|
private HandDeviceMapper handDeviceMapper;
|
|
@Autowired
|
private DeviceService deviceService;
|
@Autowired
|
private DeviceMapper deviceMapper;
|
@Autowired
|
private HistoryHourlyService historyHourlyService;
|
|
|
@Autowired
|
private HistoryFiveMinutelyService historyFiveMinutelyService;
|
|
/**
|
* 分页
|
*
|
* @param handDevicePageCond
|
* @return
|
*/
|
@Override
|
public Page<HandDevice> page(HandDevicePageCond handDevicePageCond) {
|
Page<HandDevice> page = handDeviceMapper.Page(handDevicePageCond.getPage().convertPage(),
|
handDevicePageCond.getMac(),
|
handDevicePageCond.getName(),
|
handDevicePageCond.getStartTime(),
|
handDevicePageCond.getEndTime());
|
return page;
|
}
|
|
/**
|
* 查询手持设备
|
* @return
|
*/
|
@Override
|
public List<Device> check() {
|
List<Device> organizationDevice = deviceService.getOrganizationDevice(123);
|
return organizationDevice;
|
}
|
|
/**
|
* 修改手持设备
|
*
|
* @param device
|
* @return
|
*/
|
@Override
|
@Transactional
|
public void update(Device device) {
|
QxUser currentUser = UserHelper.getCurrentUser();
|
deviceMapper.updateById(device);
|
QueryWrapper<HandDevice> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("mac",device.getMac());
|
queryWrapper.orderByDesc("create_time");
|
List<HandDevice> handDevices = handDeviceMapper.selectList(queryWrapper);
|
HandDevice handDevice = new HandDevice();
|
handDevice.setAddress(device.getAddress());
|
handDevice.setName(device.getName());
|
handDevice.setMac(device.getMac());
|
handDevice.setLongitude(device.getLongitude());
|
handDevice.setLatitude(device.getLatitude());
|
handDevice.setIsDelete(Constants.NOT_DELETE);
|
handDevice.setUpdateName(currentUser.getUserName());
|
handDevice.setStartTime(new Date());
|
handDevice.setUpdateTime(new Date());
|
handDevice.setCreateTime(new Date());
|
handDevice.setState("1");
|
if (!ObjectUtils.isEmpty(handDevices)){
|
HandDevice handDevice1 = handDevices.get(0);
|
String state = handDevice1.getState();
|
if (state.equals("1")){
|
handDevice1.setState("0");
|
handDevice1.setEndTime(new Date());
|
handDeviceMapper.updateById(handDevice1);
|
}else {
|
handDeviceMapper.insert(handDevice);
|
}
|
}else {
|
handDeviceMapper.insert(handDevice);
|
}
|
|
}
|
|
@Override
|
public HandDevice query(String mac) {
|
QueryWrapper<HandDevice> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("mac",mac);
|
queryWrapper.orderByDesc("create_time");
|
List<HandDevice> handDevices = handDeviceMapper.selectList(queryWrapper);
|
HandDevice handDevice;
|
if (ObjectUtils.isEmpty(handDevices)){
|
handDevice = new HandDevice();
|
Device deviceByMac = deviceService.getDeviceByMac(mac);
|
BeanUtils.copyProperties(deviceByMac,handDevice);
|
handDevice.setState("0");
|
}else {
|
handDevice = handDevices.get(0);
|
}
|
return handDevice;
|
}
|
|
/**
|
* 详情
|
*
|
* @param mac
|
* @param startTime
|
* @param endTime
|
* @return
|
*/
|
@Override
|
public List<Map<String, Object>> details(String mac, String startTime, String endTime,String type) {
|
Date startDate = DateUtils.getDate(startTime,DateUtils.yyyy_MM_dd_HH_mm_EN);
|
Date endDate = DateUtils.getDate(endTime,DateUtils.yyyy_MM_dd_HH_mm_EN);
|
// Date startDate = DateUtils.getDate("2024-01-02 00:00:00",DateUtils.yyyy_MM_dd_HH_mm_EN);
|
// Date endDate = DateUtils.getDate("2024-01-03 05:00:00",DateUtils.yyyy_MM_dd_HH_mm_EN);
|
List<Map<String, Object>> rsMap = new ArrayList<>();
|
|
if (type.equals("hour")){
|
List<HistoryHourly> valueByMacAndTime = historyHourlyService.getValueByMacAndTime(mac, startDate, endDate);
|
for (HistoryHourly historyHourly : valueByMacAndTime) {
|
String value = historyHourly.getValue();
|
Map map = JSON.parseObject(value, Map.class);
|
map.put("time",DateUtils.dateToDateString(historyHourly.getTime()));
|
map.put("a21001",ObjectUtils.isEmpty(map.get("a21001"))?0:map.get("a21001"));
|
map.put("a21028",ObjectUtils.isEmpty(map.get("a21028"))?0:map.get("a21028"));
|
rsMap.add(map);
|
}
|
}else {
|
List<HistoryFiveMinutely> historyFiveMinutelies = historyFiveMinutelyService.queryFiveMinutely(mac, startDate, endDate);
|
for (HistoryFiveMinutely historyFiveMinutely : historyFiveMinutelies) {
|
String value = historyFiveMinutely.getValue();
|
Map map = JSON.parseObject(value, Map.class);
|
map.put("time",DateUtils.dateToDateString(historyFiveMinutely.getTime()));
|
map.put("a21001",ObjectUtils.isEmpty(map.get("a21001"))?0:map.get("a21001"));
|
map.put("a21028",ObjectUtils.isEmpty(map.get("a21028"))?0:map.get("a21028"));
|
map.put("a31001",ObjectUtils.isEmpty(map.get("a31001"))?0:map.get("a31001"));
|
rsMap.add(map);
|
}
|
}
|
return rsMap;
|
}
|
|
/**
|
* 导出
|
* @param params
|
* @return
|
*/
|
@Override
|
public List<Map<String, Object>> detailsExecl(Map<String, Object> params) {
|
String type = params.get("type").toString();
|
String mac = params.get("mac").toString();
|
Date startDate = DateUtils.getDate(params.get("startTime").toString(),DateUtils.yyyy_MM_dd_HH_mm_EN);
|
Date endDate = DateUtils.getDate(params.get("endTime").toString(),DateUtils.yyyy_MM_dd_HH_mm_EN);
|
// Date startDate = DateUtils.getDate("2024-01-02 00:00:00",DateUtils.yyyy_MM_dd_HH_mm_EN);
|
// Date endDate = DateUtils.getDate("2024-01-03 05:00:00",DateUtils.yyyy_MM_dd_HH_mm_EN);
|
List<Map<String, Object>> rsMap = new ArrayList<>();
|
if (type.equals("hour")){
|
List<HistoryHourly> valueByMacAndTime = historyHourlyService.getValueByMacAndTime(mac, startDate, endDate);
|
for (HistoryHourly historyHourly : valueByMacAndTime) {
|
LinkedHashMap<String, Object> map1 = new LinkedHashMap<>();
|
String value = historyHourly.getValue();
|
Map map = JSON.parseObject(value, Map.class);
|
map1.put("时间",DateUtils.dateToDateString(historyHourly.getTime()));
|
map1.put("pm25",ObjectUtils.isEmpty(map.get("a34004"))?0:map.get("a34004"));
|
map1.put("pm10",ObjectUtils.isEmpty(map.get("a34002"))?0:map.get("a34002"));
|
map1.put("二氧化氮",ObjectUtils.isEmpty(map.get("a21004"))?0:map.get("a21004"));
|
map1.put("二氧化硫",ObjectUtils.isEmpty(map.get("a21026"))?0:map.get("a21026"));
|
map1.put("一氧化碳",ObjectUtils.isEmpty(map.get("a21005"))?0:map.get("a21005"));
|
map1.put("气压",ObjectUtils.isEmpty(map.get("a01006"))?0:map.get("a01006"));
|
map1.put("温度",ObjectUtils.isEmpty(map.get("a01001"))?0:map.get("a01001"));
|
map1.put("湿度",ObjectUtils.isEmpty(map.get("a01002"))?0:map.get("a01002"));
|
map1.put("tvoc",ObjectUtils.isEmpty(map.get("a99054"))?0:map.get("a99054"));
|
map1.put("甲醛",ObjectUtils.isEmpty(map.get("a31001"))?0:map.get("a31001"));
|
map1.put("硫化氢",ObjectUtils.isEmpty(map.get("a21028"))?0:map.get("a21028"));
|
map1.put("氨气",ObjectUtils.isEmpty(map.get("a21001"))?0:map.get("a21001"));
|
rsMap.add(map1);
|
}
|
}else {
|
List<HistoryFiveMinutely> historyFiveMinutelies = historyFiveMinutelyService.queryFiveMinutely(mac, startDate, endDate);
|
for (HistoryFiveMinutely historyFiveMinutely : historyFiveMinutelies) {
|
LinkedHashMap<String, Object> map1 = new LinkedHashMap<>();
|
String value = historyFiveMinutely.getValue();
|
Map map = JSON.parseObject(value, Map.class);
|
map1.put("时间",DateUtils.dateToDateString(historyFiveMinutely.getTime()));
|
map1.put("pm25",ObjectUtils.isEmpty(map.get("a34004"))?0:map.get("a34004"));
|
map1.put("pm10",ObjectUtils.isEmpty(map.get("a34002"))?0:map.get("a34002"));
|
map1.put("二氧化氮",ObjectUtils.isEmpty(map.get("a21004"))?0:map.get("a21004"));
|
map1.put("二氧化硫",ObjectUtils.isEmpty(map.get("a21026"))?0:map.get("a21026"));
|
map1.put("一氧化碳",ObjectUtils.isEmpty(map.get("a21005"))?0:map.get("a21005"));
|
map1.put("气压",ObjectUtils.isEmpty(map.get("a01006"))?0:map.get("a01006"));
|
map1.put("温度",ObjectUtils.isEmpty(map.get("a01001"))?0:map.get("a01001"));
|
map1.put("湿度",ObjectUtils.isEmpty(map.get("a01002"))?0:map.get("a01002"));
|
map1.put("tvoc",ObjectUtils.isEmpty(map.get("a99054"))?0:map.get("a99054"));
|
map1.put("甲醛",ObjectUtils.isEmpty(map.get("a31001"))?0:map.get("a31001"));
|
map1.put("硫化氢",ObjectUtils.isEmpty(map.get("a21028"))?0:map.get("a21028"));
|
map1.put("氨气",ObjectUtils.isEmpty(map.get("a21001"))?0:map.get("a21001"));
|
rsMap.add(map1);
|
}
|
}
|
return rsMap;
|
}
|
|
|
}
|