|
@ -1,19 +1,27 @@
|
|
|
package com.yihu.jw.care.endpoint;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.yihu.jw.care.dao.device.DeviceDetailDao;
|
|
|
import com.yihu.jw.care.service.DeviceService;
|
|
|
import com.yihu.jw.entity.care.device.DeviceDetail;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
import jxl.Sheet;
|
|
|
import jxl.Workbook;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
import java.io.InputStream;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* Created with IntelliJ IDEA.
|
|
@ -31,6 +39,121 @@ public class DeviceController {
|
|
|
|
|
|
@Autowired
|
|
|
private DeviceService deviceService;
|
|
|
@Autowired
|
|
|
private DeviceDetailDao deviceDetailDao;
|
|
|
|
|
|
@RequestMapping(value = "/importDeviceFromExcel", produces = "application/json;charset=UTF-8",method = RequestMethod.POST)
|
|
|
@ResponseBody
|
|
|
public String importFromExcel(HttpServletRequest request,@ApiParam(value = "文件", required = true)
|
|
|
@RequestParam(value = "file", required = true) MultipartFile file) {
|
|
|
List errorLs = new ArrayList<>();
|
|
|
List correctLs = new ArrayList<>();
|
|
|
Map<String, String> errorMsgMap = new HashMap<>();
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
List<String> deviceCodes = new ArrayList<>();
|
|
|
try {
|
|
|
request.setCharacterEncoding("UTF-8");
|
|
|
InputStream inputStream = file.getInputStream();
|
|
|
Workbook rwb = Workbook.getWorkbook(inputStream);
|
|
|
Sheet[] sheets = rwb.getSheets();
|
|
|
int rows;
|
|
|
int row;
|
|
|
String manufacturer=null;//厂商名称
|
|
|
String deviceName; //设备名称
|
|
|
String deviceModel; //设备型号
|
|
|
String deviceCode; //设备SN
|
|
|
String sim; //sim卡号
|
|
|
String bindingCount; //单人{"1":"0"} 多人{"1":"0", "2":"0"}
|
|
|
String deviceType; //设备种类 0健康设备 1安防设备
|
|
|
|
|
|
Sheet sheet = sheets[0]; //第一张表
|
|
|
rows = sheet.getRows();
|
|
|
|
|
|
for (int j = 1; j < rows; j++) {
|
|
|
if (sheet.getRow(j).length == 0) {
|
|
|
continue;
|
|
|
}
|
|
|
DeviceDetail deviceDetail = new DeviceDetail();
|
|
|
row = j;
|
|
|
manufacturer = sheet.getCell(0, row).getContents().trim(); //0 厂商名称
|
|
|
deviceName = sheet.getCell(1, row).getContents().trim(); //1 设备名称
|
|
|
deviceModel = sheet.getCell(2, row).getContents().trim(); //2 设备型号
|
|
|
deviceCode = sheet.getCell(3, row).getContents().trim(); //3 设备SN
|
|
|
sim = sheet.getCell(4, row).getContents().trim(); //4 sim卡号
|
|
|
bindingCount = sheet.getCell(5, row).getContents().trim(); //5
|
|
|
deviceType = sheet.getCell(6, row).getContents().trim(); //6 设备种类
|
|
|
if (StringUtils.isBlank(deviceCode)){
|
|
|
continue;
|
|
|
}
|
|
|
if (deviceCodes.contains(deviceCode)){
|
|
|
errorMsgMap.put(deviceCode,"设备SN码重复");
|
|
|
continue;
|
|
|
}
|
|
|
deviceCodes.add(deviceCode);
|
|
|
if (StringUtils.isBlank(manufacturer)){
|
|
|
errorMsgMap.put(deviceCode,"厂商名称不能为空");
|
|
|
continue;
|
|
|
}
|
|
|
if (StringUtils.isBlank(deviceName)){
|
|
|
errorMsgMap.put(deviceCode,"设备名称不能为空");
|
|
|
continue;
|
|
|
}
|
|
|
if (StringUtils.isBlank(deviceModel)){
|
|
|
errorMsgMap.put(deviceCode,"设备型号不能为空");
|
|
|
continue;
|
|
|
}
|
|
|
if (StringUtils.isBlank(bindingCount)){
|
|
|
errorMsgMap.put(deviceCode,"设备类型不能为空");
|
|
|
continue;
|
|
|
}
|
|
|
if (StringUtils.isBlank(deviceType)){
|
|
|
errorMsgMap.put(deviceCode,"设备种类不能为空");
|
|
|
continue;
|
|
|
}else {
|
|
|
if ("健康设备".equals(deviceType)){
|
|
|
deviceType = "1";
|
|
|
}
|
|
|
else if ("安防设备".equals(deviceType)){
|
|
|
deviceType= "0";
|
|
|
}
|
|
|
else {
|
|
|
errorMsgMap.put(deviceCode,"不支持该设备种类");
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (deviceDetailDao.findByDeviceCode(deviceCode).size()>0){
|
|
|
errorMsgMap.put(deviceCode,"该设备SN码已存在");
|
|
|
continue;
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(sim) && deviceDetailDao.findBySim(sim).size()>0){
|
|
|
errorMsgMap.put(deviceCode,"该sim卡号已存在");
|
|
|
continue;
|
|
|
}
|
|
|
deviceDetail.setApplyDate(sdf.format(new Date()));
|
|
|
deviceDetail.setManufacturer(manufacturer);
|
|
|
deviceDetail.setDeviceName(deviceName);
|
|
|
deviceDetail.setDeviceModel(deviceModel);
|
|
|
deviceDetail.setDeviceCode(deviceCode);
|
|
|
deviceDetail.setSim(sim);
|
|
|
deviceDetail.setBindingCount("");
|
|
|
deviceDetail.setDeviceType(Integer.parseInt(deviceType));
|
|
|
correctLs.add(deviceDetail);
|
|
|
}
|
|
|
|
|
|
deviceDetailDao.save(correctLs);
|
|
|
//包装导入结果(导入成功数量、错误对象集合)
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
map.put("successNum", correctLs.size());
|
|
|
map.put("failedNum", rows-1 - correctLs.size() );
|
|
|
map.put("errorData", JSON.toJSONString(errorMsgMap, SerializerFeature.WriteMapNullValue));
|
|
|
System.out.println(map);
|
|
|
return success();
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return error(-1, "操作失败!");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@GetMapping("test")
|
|
|
public String test(){
|