|
@@ -17,20 +17,30 @@ import cn.hutool.core.collection.CollStreamUtil;
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import jakarta.annotation.Resource;
|
|
|
+import jakarta.servlet.http.HttpServletResponse;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
|
|
|
import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
|
|
|
+import vip.xiaonuo.coldchain.core.alarm.bean.SensorAlarmUser;
|
|
|
import vip.xiaonuo.coldchain.core.config.JfcloudRedisCacheService;
|
|
|
+import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDeviceTemplate;
|
|
|
+import vip.xiaonuo.coldchain.modular.monitordevice.handler.CustomCellWriteHandler;
|
|
|
+import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDeviceAddParam;
|
|
|
import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
|
|
|
+import vip.xiaonuo.coldchain.modular.monitordevicetype.entity.MonitorDeviceType;
|
|
|
import vip.xiaonuo.coldchain.modular.monitortarget.entity.MonitorTarget;
|
|
|
+import vip.xiaonuo.coldchain.modular.monitortarget.entity.MonitorTargetTemplate;
|
|
|
import vip.xiaonuo.coldchain.modular.monitortarget.entity.StatusCount;
|
|
|
import vip.xiaonuo.coldchain.modular.monitortarget.enums.MonitorStatusEnum;
|
|
|
import vip.xiaonuo.coldchain.modular.monitortarget.mapper.MonitorTargetMapper;
|
|
@@ -45,6 +55,11 @@ 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.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -132,7 +147,18 @@ public class MonitorTargetServiceImpl extends ServiceImpl<MonitorTargetMapper, M
|
|
|
MonitorTarget monitorTarget = this.queryEntity(monitorTargetEditParam.getId());
|
|
|
BeanUtil.copyProperties(monitorTargetEditParam, monitorTarget);
|
|
|
this.updateById(monitorTarget);
|
|
|
-
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void batchEditAlarmUsers(MonitorTargetBatchEditWithRoomParam batchEditWithRoomParam) {
|
|
|
+ List<MonitorTarget> monitorTargetList = new ArrayList<>();
|
|
|
+ batchEditWithRoomParam.getIdList().forEach(id -> {
|
|
|
+ MonitorTarget monitorTarget = this.queryEntity(id);
|
|
|
+ BeanUtil.copyProperties(batchEditWithRoomParam, monitorTarget);
|
|
|
+ monitorTargetList.add(monitorTarget);
|
|
|
+ });
|
|
|
+ this.updateBatchById(monitorTargetList);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -388,4 +414,68 @@ public class MonitorTargetServiceImpl extends ServiceImpl<MonitorTargetMapper, M
|
|
|
return list(queryWrapper);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void downloadTemplate(HttpServletResponse response) {
|
|
|
+ String fileName = "冰箱导入模板";
|
|
|
+ String sheetName = "冰箱设备导入模板";
|
|
|
+ response.setContentType("application/vnd.ms-excel");
|
|
|
+ response.setCharacterEncoding("utf-8");
|
|
|
+
|
|
|
+ response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + URLEncoder.encode(fileName, StandardCharsets.UTF_8) + ".xls");
|
|
|
+ //模板实体类
|
|
|
+ List<MonitorDeviceTemplate> secondInspProbExcelDTOS = new ArrayList<>();
|
|
|
+ //普通下拉数据
|
|
|
+ Map<Integer, String[]> map = ordinarySelect();
|
|
|
+ try (OutputStream outputStream = response.getOutputStream()) {
|
|
|
+ EasyExcel.write(outputStream, MonitorTargetTemplate.class)
|
|
|
+ .registerWriteHandler(new CustomCellWriteHandler(map))
|
|
|
+ .excelType(ExcelTypeEnum.XLS)
|
|
|
+ .sheet(sheetName)
|
|
|
+ .doWrite(secondInspProbExcelDTOS);
|
|
|
+ } catch (IOException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 普通下拉数据
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private Map<Integer, String[]> ordinarySelect() {
|
|
|
+ Map<Integer, String[]> map = new HashMap<>();
|
|
|
+
|
|
|
+ List<TargetRoom> list = targetRoomService.myList();
|
|
|
+ List<String> billingNameList = list.stream().map(TargetRoom::getName).toList();
|
|
|
+ map.put(0, billingNameList.toArray(new String[0]));
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void importMonitorDevice(MultipartFile file) {
|
|
|
+ List<MonitorTargetTemplate> monitorTargetTemplates = null;
|
|
|
+ // excel同步读取数据
|
|
|
+ try {
|
|
|
+ monitorTargetTemplates = EasyExcel.read(new BufferedInputStream(file.getInputStream())).head(MonitorTargetTemplate.class).sheet().doReadSync();
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ // 检查是否大于1000条
|
|
|
+ if (monitorTargetTemplates.size() > 1000) {
|
|
|
+ throw new RuntimeException("超过最多处理条数");
|
|
|
+ }
|
|
|
+ List<MonitorTargetAddWithRoomParam> monitorTargetAddParamList = new ArrayList<>();
|
|
|
+ for (MonitorTargetTemplate monitorTargetTemplate : monitorTargetTemplates) {
|
|
|
+ if (StrUtil.isBlank(monitorTargetTemplate.getName()) && StrUtil.isBlank(monitorTargetTemplate.getRoomName())) {
|
|
|
+ throw new CommonException("冰箱:*" + monitorTargetTemplate.getName() + "*包含未填的必填项");
|
|
|
+ }
|
|
|
+ MonitorTargetAddWithRoomParam monitorTargetAddParam = BeanUtil.copyProperties(monitorTargetTemplate, MonitorTargetAddWithRoomParam.class);
|
|
|
+ TargetRoom roomByName = targetRoomService.getRoomByName(monitorTargetTemplate.getRoomName());
|
|
|
+ monitorTargetAddParam.setRoomId(roomByName.getId());
|
|
|
+ monitorTargetAddParamList.add(monitorTargetAddParam);
|
|
|
+ }
|
|
|
+ // 入库操作
|
|
|
+ monitorTargetAddParamList.forEach(this::addWithRoom);
|
|
|
+ }
|
|
|
}
|