add 导入
This commit is contained in:
@@ -22,7 +22,9 @@ import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
@@ -118,6 +120,18 @@ public class DeviceController {
|
||||
return new ResponseEntity<>(deviceService.selectList(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/excelImport")
|
||||
@Log("excel导入")
|
||||
@ApiOperation("excel导入")
|
||||
public ResponseEntity<Object> excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
|
||||
deviceService.excelImport(file, request);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@GetMapping("/region/{region}")
|
||||
@Log("根据区域查询设备")
|
||||
@ApiOperation("根据区域查询设备")
|
||||
|
||||
@@ -9,7 +9,9 @@ import org.nl.acs.device.service.dto.DeviceDto;
|
||||
import org.nl.acs.device.service.dto.StorageCellDto;
|
||||
import org.nl.acs.opc.Device;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
@@ -118,6 +120,13 @@ public interface DeviceService {
|
||||
*/
|
||||
JSONArray selectList();
|
||||
|
||||
/**
|
||||
* excel导入
|
||||
* @param file
|
||||
* @param request
|
||||
*/
|
||||
void excelImport(MultipartFile file, HttpServletRequest request);
|
||||
|
||||
/**
|
||||
* 前端输送设备下拉选列表
|
||||
*
|
||||
|
||||
@@ -7,6 +7,8 @@ import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.poi.excel.ExcelReader;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@@ -43,9 +45,12 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
@@ -335,6 +340,74 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void excelImport(MultipartFile file, HttpServletRequest request) {
|
||||
if (file.isEmpty()) {
|
||||
throw new BadRequestException("文件为空,请添加数据后重新导入");
|
||||
}
|
||||
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
// 1.获取上传文件输入流
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
inputStream = file.getInputStream();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
WQLObject wo = WQLObject.getWQLObject("acs_device");
|
||||
|
||||
// 调用用 hutool 方法读取数据 默认调用第一个sheet
|
||||
ExcelReader excelReader = ExcelUtil.getReader(inputStream);
|
||||
// 从第二行开始获取数据 excelReader.read的结果是一个2纬的list,外层是行,内层是行对应的所有列
|
||||
List<List<Object>> read = excelReader.read(1, excelReader.getRowCount());
|
||||
// 循环获取的数据
|
||||
for (int i = 0; i < read.size(); i++) {
|
||||
List list = read.get(i);
|
||||
JSONObject param = new JSONObject();
|
||||
String device_code = list.get(0).toString();
|
||||
String device_name = list.get(1).toString();
|
||||
String device_type = list.get(2).toString();
|
||||
String is_config = list.get(3).toString();
|
||||
String is_route = list.get(4).toString();
|
||||
String region = list.get(5).toString();
|
||||
if (StrUtil.isEmpty(device_code)) {
|
||||
throw new BadRequestException("设备编号为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(device_name)) {
|
||||
device_name = device_code;
|
||||
}
|
||||
if (StrUtil.isEmpty(device_type)) {
|
||||
device_type = "conveyor";
|
||||
}
|
||||
if (StrUtil.isEmpty(is_config)) {
|
||||
is_config = "FALSE";
|
||||
}
|
||||
if (StrUtil.isEmpty(is_route)) {
|
||||
is_route = "false";
|
||||
}
|
||||
DeviceDto dto = this.findByCode(device_code);
|
||||
if (ObjectUtil.isNotEmpty(dto)) {
|
||||
continue;
|
||||
}
|
||||
//按照列获取
|
||||
param.put("device_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
param.put("device_code", device_code);
|
||||
param.put("device_name", device_name);
|
||||
param.put("device_type", device_type);
|
||||
param.put("is_config", is_config);
|
||||
param.put("is_route", is_route);
|
||||
param.put("create_by", nickName);
|
||||
param.put("create_time", now);
|
||||
param.put("update_by", nickName);
|
||||
param.put("update_time", now);
|
||||
param.put("region", region);
|
||||
|
||||
wo.insert(param);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONArray selectConveyorList() {
|
||||
//设备基础信息表【acs_device】
|
||||
|
||||
Reference in New Issue
Block a user