|
@@ -16,6 +16,10 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollStreamUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
+import com.alibaba.excel.support.ExcelTypeEnum;
|
|
|
+import com.alibaba.excel.write.metadata.style.WriteCellStyle;
|
|
|
+import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -23,10 +27,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.github.jfcloud.influxdb.flux.AggregationWindow;
|
|
|
import com.github.jfcloud.influxdb.flux.QueryCondition;
|
|
|
import jakarta.annotation.Resource;
|
|
|
+import jakarta.servlet.http.HttpServletResponse;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
import rk.netDevice.sdk.p2.ParamData;
|
|
|
import rk.netDevice.sdk.p2.ParamIdsData;
|
|
|
import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
|
|
@@ -37,6 +44,7 @@ import vip.xiaonuo.coldchain.core.renke.RenKeService;
|
|
|
import vip.xiaonuo.coldchain.core.service.JfcloudSensorDataService;
|
|
|
import vip.xiaonuo.coldchain.modular.monitordevice.dto.MonitorDevicePageDto;
|
|
|
import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDevice;
|
|
|
+import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDeviceTemplate;
|
|
|
import vip.xiaonuo.coldchain.modular.monitordevice.enums.MonitorDeviceStatusEnum;
|
|
|
import vip.xiaonuo.coldchain.modular.monitordevice.mapper.MonitorDeviceMapper;
|
|
|
import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDeviceAddParam;
|
|
@@ -56,6 +64,12 @@ import vip.xiaonuo.common.enums.CommonSortOrderEnum;
|
|
|
import vip.xiaonuo.common.exception.CommonException;
|
|
|
import vip.xiaonuo.common.page.CommonPageRequest;
|
|
|
|
|
|
+import java.io.BufferedInputStream;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.net.URLEncoder;
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
+import java.text.ParseException;
|
|
|
import java.time.Instant;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -81,7 +95,6 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
|
|
|
@Resource
|
|
|
private MonitorTargetService monitorTargetService;
|
|
|
|
|
|
-
|
|
|
private String bucketName;
|
|
|
|
|
|
@Override
|
|
@@ -101,7 +114,6 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
|
|
|
queryWrapper.lambda().orderByAsc(MonitorDevice::getSortCode);
|
|
|
}
|
|
|
queryWrapper.lambda().eq(MonitorDevice::getCreateOrg,loginUser.getOrgId()).eq(MonitorDevice::getDeleteFlag,CommonDeleteFlagEnum.NOT_DELETE);
|
|
|
- //分页查询
|
|
|
Page<MonitorDevice> page = this.page(CommonPageRequest.defaultPage(), queryWrapper);
|
|
|
if (page.getTotal() < 1) {
|
|
|
return page;
|
|
@@ -193,7 +205,7 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
|
|
|
|
|
|
public List<MonitorDevice> getDeviceByDeviceCode(String deviceCode) {
|
|
|
return this.list(new QueryWrapper<MonitorDevice>().eq("device_code", deviceCode)
|
|
|
- .lambda().eq(MonitorDevice::getDeleteFlag,CommonDeleteFlagEnum.NOT_DELETE));
|
|
|
+ .lambda().eq(MonitorDevice::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE));
|
|
|
}
|
|
|
|
|
|
|
|
@@ -298,7 +310,7 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
|
|
|
|
|
|
|
|
|
@Override
|
|
|
- public List<MonitorDevice> myList(Boolean isAll,String sensorType) {
|
|
|
+ public List<MonitorDevice> myList(Boolean isAll, String sensorType) {
|
|
|
SaBaseLoginUser loginUser = StpLoginUserUtil.getLoginUser();
|
|
|
|
|
|
//查询设备类型
|
|
@@ -348,7 +360,7 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
|
|
|
|
|
|
@Override
|
|
|
public List<SensorData> queryDataByDeviceIdAndRoads(String deviceId, Integer roads, String startTime, String endTime, String field, AggregationWindow aggregationWindow) {
|
|
|
- return sensorDataService.queryDataByDeviceIdAndRoads(deviceId, roads, startTime, endTime,field,aggregationWindow);
|
|
|
+ return sensorDataService.queryDataByDeviceIdAndRoads(deviceId, roads, startTime, endTime, field, aggregationWindow);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -376,7 +388,7 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
|
|
|
Integer sensorCount = 0;
|
|
|
SaBaseLoginUser loginUser = StpLoginUserUtil.getLoginUser();
|
|
|
LambdaQueryWrapper<MonitorDevice> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(MonitorDevice::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE).eq(MonitorDevice::getCreateOrg,loginUser.getOrgId());
|
|
|
+ queryWrapper.eq(MonitorDevice::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE).eq(MonitorDevice::getCreateOrg, loginUser.getOrgId());
|
|
|
List<MonitorDevice> monitorDeviceList = list(queryWrapper);
|
|
|
for (MonitorDevice monitorDevice : monitorDeviceList) {
|
|
|
sensorCount += monitorDevice.getSensorCount();
|
|
@@ -390,7 +402,66 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
|
|
|
@Override
|
|
|
public MonitorDevice queryByDeviceCode(Integer deviceId) {
|
|
|
LambdaQueryWrapper<MonitorDevice> onlineDeviceQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- onlineDeviceQueryWrapper.eq(MonitorDevice::getDeviceCode, deviceId).eq(MonitorDevice::getDeleteFlag,CommonDeleteFlagEnum.NOT_DELETE);
|
|
|
+ onlineDeviceQueryWrapper.eq(MonitorDevice::getDeviceCode, deviceId).eq(MonitorDevice::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE);
|
|
|
return this.getOne(onlineDeviceQueryWrapper);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void downloadTemplate(HttpServletResponse response) {
|
|
|
+ String fileName = "冷链设备导入模板";
|
|
|
+ String sheetName = "冷链设备导入模板";
|
|
|
+ try {
|
|
|
+// ExcelUtil.writeExcel(response, null, fileName, sheetName, MonitorDeviceTemplate.class);
|
|
|
+ //表头样式
|
|
|
+ WriteCellStyle headWriteCellStyle = new WriteCellStyle();
|
|
|
+ //设置表头居中对齐
|
|
|
+ headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
|
|
|
+ //内容样式
|
|
|
+ WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
|
|
|
+ //设置内容靠左对齐
|
|
|
+ contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
|
|
|
+
|
|
|
+ response.setContentType("application/vnd.ms-excel");
|
|
|
+ response.setCharacterEncoding("utf8");
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8) + ".xlsx");
|
|
|
+
|
|
|
+ HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
|
|
|
+ EasyExcel.write(response.getOutputStream(), MonitorDeviceTemplate.class)
|
|
|
+ .excelType(ExcelTypeEnum.XLSX).sheet(sheetName)
|
|
|
+ .registerWriteHandler(horizontalCellStyleStrategy)
|
|
|
+ .doWrite(new ArrayList<MonitorDeviceTemplate>());
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void importMonitorDevice(MultipartFile file) {
|
|
|
+ List<MonitorDeviceTemplate> monitorDeviceTemplateList = null;
|
|
|
+ // excel同步读取数据
|
|
|
+ try {
|
|
|
+ monitorDeviceTemplateList = EasyExcel.read(new BufferedInputStream(file.getInputStream())).head(MonitorDeviceTemplate.class).sheet().doReadSync();
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ // 检查是否大于1000条
|
|
|
+ if (monitorDeviceTemplateList.size() > 2) {
|
|
|
+ throw new RuntimeException("超过最多处理条数");
|
|
|
+ }
|
|
|
+ // 将 userExcelList 转成 userList
|
|
|
+ List<MonitorDevice> monitorDeviceList = new ArrayList<>();
|
|
|
+ for (MonitorDeviceTemplate monitorDeviceTemplate : monitorDeviceTemplateList) {
|
|
|
+ // 判断上下限输入是否合法
|
|
|
+ if (monitorDeviceTemplate.getCo2Down() >= monitorDeviceTemplate.getCo2Up() ||
|
|
|
+ monitorDeviceTemplate.getHumidityDown() >= monitorDeviceTemplate.getHumidityUp() ||
|
|
|
+ monitorDeviceTemplate.getTemperatureDown() >= monitorDeviceTemplate.getTemperatureUp()) {
|
|
|
+ throw new CommonException("设备:*" + monitorDeviceTemplate.getDeviceName() + "*的上下限填写有误");
|
|
|
+ }
|
|
|
+ MonitorDevice monitorDevice = BeanUtil.copyProperties(monitorDeviceTemplate, MonitorDevice.class);
|
|
|
+ monitorDeviceList.add(monitorDevice);
|
|
|
+ }
|
|
|
+ // 入库操作
|
|
|
+ this.saveBatch(monitorDeviceList);
|
|
|
+ }
|
|
|
+
|
|
|
}
|