|  | @ -0,0 +1,408 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.base.endpoint.device;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.serializer.SerializerFeature;
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.databind.JavaType;
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.databind.ObjectMapper;
 | 
	
		
			
				|  |  | import com.yihu.jw.base.dao.device.DeviceDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.base.dao.device.DeviceDetailDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.base.service.device.DeviceManageService;
 | 
	
		
			
				|  |  | import com.yihu.jw.base.service.device.DmDeviceService;
 | 
	
		
			
				|  |  | import com.yihu.jw.base.service.device.WlyyPatientDeviceService;
 | 
	
		
			
				|  |  | import com.yihu.jw.base.service.device.YsDeviceService;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.device.Device;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.device.DeviceDetail;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.device.DevicePatientDevice;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.ResponseContant;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.iot.device.WlyyPatientDeviceVO;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.web.Envelop;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.web.ObjEnvelop;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.web.PageEnvelop;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
 | 
	
		
			
				|  |  | import io.swagger.annotations.Api;
 | 
	
		
			
				|  |  | import io.swagger.annotations.ApiOperation;
 | 
	
		
			
				|  |  | import io.swagger.annotations.ApiParam;
 | 
	
		
			
				|  |  | import jxl.Sheet;
 | 
	
		
			
				|  |  | import jxl.Workbook;
 | 
	
		
			
				|  |  | import jxl.write.Label;
 | 
	
		
			
				|  |  | import jxl.write.WritableSheet;
 | 
	
		
			
				|  |  | import jxl.write.WritableWorkbook;
 | 
	
		
			
				|  |  | import jxl.write.WriteException;
 | 
	
		
			
				|  |  | import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | import org.slf4j.Logger;
 | 
	
		
			
				|  |  | import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  | import org.springframework.beans.BeanUtils;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.http.HttpEntity;
 | 
	
		
			
				|  |  | import org.springframework.http.HttpMethod;
 | 
	
		
			
				|  |  | import org.springframework.http.MediaType;
 | 
	
		
			
				|  |  | import org.springframework.scheduling.annotation.Async;
 | 
	
		
			
				|  |  | import org.springframework.util.LinkedMultiValueMap;
 | 
	
		
			
				|  |  | import org.springframework.util.MultiValueMap;
 | 
	
		
			
				|  |  | import org.springframework.web.bind.annotation.*;
 | 
	
		
			
				|  |  | import org.springframework.web.multipart.MultipartFile;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import javax.servlet.http.HttpServletRequest;
 | 
	
		
			
				|  |  | import javax.servlet.http.HttpServletResponse;
 | 
	
		
			
				|  |  | import javax.swing.*;
 | 
	
		
			
				|  |  | import java.io.IOException;
 | 
	
		
			
				|  |  | import java.io.InputStream;
 | 
	
		
			
				|  |  | import java.io.OutputStream;
 | 
	
		
			
				|  |  | import java.text.SimpleDateFormat;
 | 
	
		
			
				|  |  | import java.util.*;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import static com.yihu.jw.util.common.BeanUtils.getNullPropertyNames;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * Created by Bing on 2021/9/22.
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | @RestController
 | 
	
		
			
				|  |  | @RequestMapping(value = "baseDevice",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
 | 
	
		
			
				|  |  | @Api(value = "设备管理", description = "设备管理", tags = {"设备管理"})
 | 
	
		
			
				|  |  | public class DeviceManageEndpoint extends EnvelopRestEndpoint {
 | 
	
		
			
				|  |  |     private static Logger logger = LoggerFactory.getLogger(DeviceManageEndpoint.class);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private DeviceDetailDao deviceDetailDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private DeviceDao deviceDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private DeviceManageService deviceManageService;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private WlyyPatientDeviceService patientDeviceService;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private DmDeviceService dmDeviceService;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private YsDeviceService ysDeviceService;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @GetMapping("findWlyyDevices")
 | 
	
		
			
				|  |  |     @ApiOperation("获取设备列表")
 | 
	
		
			
				|  |  |     public PageEnvelop<DeviceDetail> findDevices(
 | 
	
		
			
				|  |  |             @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
 | 
	
		
			
				|  |  |             @RequestParam(value = "fields", required = false) String fields,
 | 
	
		
			
				|  |  |             @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
 | 
	
		
			
				|  |  |             @RequestParam(value = "filters", required = false) String filters,
 | 
	
		
			
				|  |  |             @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
 | 
	
		
			
				|  |  |             @RequestParam(value = "sorts", required = false) String sorts,
 | 
	
		
			
				|  |  |             @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
 | 
	
		
			
				|  |  |             @RequestParam(value = "page") int page,
 | 
	
		
			
				|  |  |             @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
 | 
	
		
			
				|  |  |             @RequestParam(value = "size") int size){
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             List<DeviceDetail> list = deviceManageService.search(fields,filters,sorts,page,size);
 | 
	
		
			
				|  |  |             int count = (int) deviceManageService.getCount(filters);
 | 
	
		
			
				|  |  |             return success(list, count, page, size, DeviceDetail.class);
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |             return failedPageEnvelopException2(e);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @PostMapping("delWlyyDevice")
 | 
	
		
			
				|  |  |     @ApiOperation("删除设备")
 | 
	
		
			
				|  |  |     public Envelop delWlyyDevice(@ApiParam(name = "id")@RequestParam(value = "id")String id){
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             deviceDetailDao.delete(Long.parseLong(id));
 | 
	
		
			
				|  |  |             return success(id);
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |             return failedException2(e);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @PostMapping("saveWlyyDevice")
 | 
	
		
			
				|  |  |     @ApiOperation("保存/修改设备")
 | 
	
		
			
				|  |  |     public Envelop saveDevice(@ApiParam(name="json")@RequestParam(value = "json")String json){
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             JSONObject response = deviceManageService.saveWlyyDevice(json);
 | 
	
		
			
				|  |  |             if (1==response.getInteger(ResponseContant.resultFlag)){
 | 
	
		
			
				|  |  |                 return success("修改成功") ;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             else {
 | 
	
		
			
				|  |  |                 return Envelop.getError(response.getString(ResponseContant.resultMsg)) ;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |             return failedException2(e);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @GetMapping(value = "getUserDevice")
 | 
	
		
			
				|  |  |     @ApiOperation("居民设备查询")
 | 
	
		
			
				|  |  |     public PageEnvelop<WlyyPatientDeviceVO> getUserDevice(
 | 
	
		
			
				|  |  |             @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
 | 
	
		
			
				|  |  |             @RequestParam(value = "fields", required = false) String fields,
 | 
	
		
			
				|  |  |             @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
 | 
	
		
			
				|  |  |             @RequestParam(value = "filters", required = false) String filters,
 | 
	
		
			
				|  |  |             @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
 | 
	
		
			
				|  |  |             @RequestParam(value = "sorts", required = false) String sorts,
 | 
	
		
			
				|  |  |             @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
 | 
	
		
			
				|  |  |             @RequestParam(value = "page") int page,
 | 
	
		
			
				|  |  |             @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
 | 
	
		
			
				|  |  |             @RequestParam(value = "size") int size){
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |              if (StringUtils.isBlank(filters)){
 | 
	
		
			
				|  |  |                  filters="del=0";
 | 
	
		
			
				|  |  |              }else {
 | 
	
		
			
				|  |  |                  filters+=";del=0";
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              List<DevicePatientDevice> list = patientDeviceService.search(fields, filters, sorts,page,size);
 | 
	
		
			
				|  |  |              List<WlyyPatientDeviceVO> list2 = new ArrayList<>();
 | 
	
		
			
				|  |  |              for (DevicePatientDevice tmp:list){
 | 
	
		
			
				|  |  |                  WlyyPatientDeviceVO deviceVO= new WlyyPatientDeviceVO();
 | 
	
		
			
				|  |  |                  BeanUtils.copyProperties(tmp, deviceVO, getNullPropertyNames(tmp));
 | 
	
		
			
				|  |  |                  deviceVO.setId(tmp.getId().intValue());
 | 
	
		
			
				|  |  |                  List<DeviceDetail> deviceDetails = deviceDetailDao.findByDeviceCode(deviceVO.getDeviceSn());
 | 
	
		
			
				|  |  |                  if (deviceDetails.size()>0){
 | 
	
		
			
				|  |  |                      DeviceDetail deviceDetail = deviceDetails.get(0);
 | 
	
		
			
				|  |  |                      deviceVO.setSim(deviceDetail.getSim());
 | 
	
		
			
				|  |  |                      deviceVO.setIccid(deviceDetail.getIccid());
 | 
	
		
			
				|  |  |                      deviceVO.setImsi(deviceDetail.getImsi());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                  list2.add(deviceVO);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              int count = (int) patientDeviceService.getCount(filters);
 | 
	
		
			
				|  |  |              return success(list2, count, page, size);
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |             return failedPageEnvelopException2(e);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @PostMapping("delPatientDevice")
 | 
	
		
			
				|  |  |     @ApiOperation("删除患者设备-解绑")
 | 
	
		
			
				|  |  |     public Envelop delPatientDevice(@ApiParam(name = "id")
 | 
	
		
			
				|  |  |                                     @RequestParam(value = "id", required = false) String id){
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             patientDeviceService.delPatientDevice(id);
 | 
	
		
			
				|  |  |             return success();
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |             return failedException2(e);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @GetMapping("findDmDeviceDict")
 | 
	
		
			
				|  |  |     @ApiOperation("获取设备字典")
 | 
	
		
			
				|  |  |     public PageEnvelop<Device> findDmDeviceDict(@ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
 | 
	
		
			
				|  |  |                                     @RequestParam(value = "fields", required = false) String fields,
 | 
	
		
			
				|  |  |                                     @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
 | 
	
		
			
				|  |  |                                     @RequestParam(value = "filters", required = false) String filters,
 | 
	
		
			
				|  |  |                                     @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
 | 
	
		
			
				|  |  |                                     @RequestParam(value = "sorts", required = false) String sorts,
 | 
	
		
			
				|  |  |                                     @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
 | 
	
		
			
				|  |  |                                     @RequestParam(value = "page") int page,
 | 
	
		
			
				|  |  |                                     @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
 | 
	
		
			
				|  |  |                                     @RequestParam(value = "size") int size){
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             if (StringUtils.isBlank(filters)){
 | 
	
		
			
				|  |  |                 filters="del=0";
 | 
	
		
			
				|  |  |             }else {
 | 
	
		
			
				|  |  |                 filters+=";del=0";
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             List<Device> list = dmDeviceService.search(fields, filters, sorts,page,size);
 | 
	
		
			
				|  |  |             int count = (int) dmDeviceService.getCount(filters);
 | 
	
		
			
				|  |  |             return success(list, count, page, size);
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |             return failedPageEnvelopException2(e);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @PostMapping("delDmDevice")
 | 
	
		
			
				|  |  |     @ApiOperation("删除设备字典定义")
 | 
	
		
			
				|  |  |     public Envelop delDmDevice(@ApiParam(name = "id")
 | 
	
		
			
				|  |  |                              @RequestParam(value = "id", required = false) String id){
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             dmDeviceService.delete(Long.parseLong(id));
 | 
	
		
			
				|  |  |             return success();
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |             return failedException2(e);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @PostMapping("saveDmDevice")
 | 
	
		
			
				|  |  |     @ApiOperation("保存设备字典定义")
 | 
	
		
			
				|  |  |     public Envelop saveDmDevice(@ApiParam(name="json")@RequestParam(value = "json")String json){
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             JSONObject response = dmDeviceService.saveDmDevice(json);
 | 
	
		
			
				|  |  |             if (1==response.getInteger(ResponseContant.resultFlag)){
 | 
	
		
			
				|  |  |                 return success("修改成功") ;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             else {
 | 
	
		
			
				|  |  |                 return Envelop.getError(response.getString(ResponseContant.resultMsg)) ;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |             return failedException2(e);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @PostMapping(value = "/importDeviceFromExcel", produces = "application/json;charset=UTF-8")
 | 
	
		
			
				|  |  |     @ApiOperation("设备数据导入")
 | 
	
		
			
				|  |  |     public ObjEnvelop importFromExcel(HttpServletRequest request, @ApiParam(value = "文件", required = true)
 | 
	
		
			
				|  |  |     @RequestParam(value = "file", required = true) MultipartFile file,HttpServletResponse response) {
 | 
	
		
			
				|  |  |         List errorLs = new ArrayList<>();
 | 
	
		
			
				|  |  |         List correctLs = new ArrayList<>();
 | 
	
		
			
				|  |  |         Map<String, String> errorMsgMapTotal = 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 iccid;  //iccid卡号
 | 
	
		
			
				|  |  |             String imsi;  //imsi卡号
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             Sheet sheet = sheets[0];    //第一张表
 | 
	
		
			
				|  |  |             rows = sheet.getRows();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             for (int j = 1; j < rows; j++) {
 | 
	
		
			
				|  |  |                 if (sheet.getRow(j).length == 0) {
 | 
	
		
			
				|  |  |                     continue;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 String errorMsg = "";
 | 
	
		
			
				|  |  |                 DeviceDetail deviceDetail = new DeviceDetail();
 | 
	
		
			
				|  |  |                 Map<String, String> errorMsgMap = deviceDetail.getErrorMsgMap();
 | 
	
		
			
				|  |  |                 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卡号
 | 
	
		
			
				|  |  |                 iccid = sheet.getCell(5, row).getContents().trim();  //4 iccid卡号
 | 
	
		
			
				|  |  |                 imsi = sheet.getCell(6, row).getContents().trim();  //4 imsi卡号
 | 
	
		
			
				|  |  |                 if (org.apache.commons.lang.StringUtils.isBlank(deviceCode)){
 | 
	
		
			
				|  |  |                     continue;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if (deviceCodes.contains(deviceCode)){
 | 
	
		
			
				|  |  |                     errorMsgMapTotal.put(deviceCode,"设备SN码重复");
 | 
	
		
			
				|  |  |                     errorMsgMap.put("deviceCode", "设备SN码重复!;");
 | 
	
		
			
				|  |  |                     errorMsg += "设备SN码重复!;";
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 deviceCodes.add(deviceCode);
 | 
	
		
			
				|  |  |                 if (org.apache.commons.lang.StringUtils.isBlank(manufacturer)){
 | 
	
		
			
				|  |  |                     errorMsgMapTotal.put(deviceCode,"厂商名称不能为空");
 | 
	
		
			
				|  |  |                     errorMsgMap.put("manufacturer", "厂商名称不能为空!;");
 | 
	
		
			
				|  |  |                     errorMsg += "厂商名称不能为空!;";
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if (org.apache.commons.lang.StringUtils.isBlank(deviceName)){
 | 
	
		
			
				|  |  |                     errorMsgMapTotal.put(deviceCode,"设备名称不能为空");
 | 
	
		
			
				|  |  |                     errorMsgMap.put("deviceName", "设备名称不能为空!;");
 | 
	
		
			
				|  |  |                     errorMsg += "设备名称不能为空!;";
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if (org.apache.commons.lang.StringUtils.isBlank(deviceModel)){
 | 
	
		
			
				|  |  |                     errorMsgMapTotal.put(deviceCode,"设备型号不能为空");
 | 
	
		
			
				|  |  |                     errorMsgMap.put("deviceModel", "设备型号不能为空!;");
 | 
	
		
			
				|  |  |                     errorMsg += "设备型号不能为空!;";
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 //名称、设备类型、设备型号判断
 | 
	
		
			
				|  |  |                 if (0==deviceDao.findTotalByName(deviceName)){
 | 
	
		
			
				|  |  |                     errorMsgMapTotal.put(deviceCode,"设备名称不存在");
 | 
	
		
			
				|  |  |                     errorMsgMap.put("deviceName", "设备名称不存在!;");
 | 
	
		
			
				|  |  |                     errorMsg += "设备名称不存在!;";
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if (0==deviceDao.findTotalByModel(deviceModel)){
 | 
	
		
			
				|  |  |                     errorMsgMapTotal.put(deviceCode,"设备型号不存在");
 | 
	
		
			
				|  |  |                     errorMsgMap.put("deviceModel", "设备型号不存在!;");
 | 
	
		
			
				|  |  |                     errorMsg += "设备型号不存在!;";
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 if (deviceDetailDao.findByDeviceCode(deviceCode).size()>0){
 | 
	
		
			
				|  |  |                     errorMsgMapTotal.put(deviceCode,"该设备SN码已存在");
 | 
	
		
			
				|  |  |                     errorMsgMap.put("deviceCode", "该设备SN码已存在!;");
 | 
	
		
			
				|  |  |                     errorMsg += "该设备SN码已存在!;";
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if (org.apache.commons.lang.StringUtils.isNotBlank(sim) && deviceDetailDao.findBySim(sim).size()>0){
 | 
	
		
			
				|  |  |                     errorMsgMapTotal.put(deviceCode,"该sim卡号已存在");
 | 
	
		
			
				|  |  |                     errorMsgMap.put("sim", "该sim卡号已存在!;");
 | 
	
		
			
				|  |  |                     errorMsg += "该sim卡号已存在!;";
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if (org.apache.commons.lang.StringUtils.isNotBlank(iccid) && deviceDetailDao.findByIccid(iccid).size()>0){
 | 
	
		
			
				|  |  |                     errorMsgMapTotal.put(deviceCode,"该iccid卡号已存在");
 | 
	
		
			
				|  |  |                     errorMsgMap.put("iccid", "该iccid卡号已存在!;");
 | 
	
		
			
				|  |  |                     errorMsg += "该iccid卡号已存在!;";
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if (org.apache.commons.lang.StringUtils.isNotBlank(imsi) && deviceDetailDao.findByImsi(imsi).size()>0){
 | 
	
		
			
				|  |  |                     errorMsgMapTotal.put(deviceCode,"该imsi卡号已存在");
 | 
	
		
			
				|  |  |                     errorMsgMap.put("imsi", "该imsi卡号已存在!;");
 | 
	
		
			
				|  |  |                     errorMsg += "该imsi卡号已存在!;";
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if (!StringUtils.isEmpty(errorMsg.trim())) {
 | 
	
		
			
				|  |  |                     deviceDetail.setErrorMsg(errorMsg);
 | 
	
		
			
				|  |  |                     errorLs.add(deviceDetail);
 | 
	
		
			
				|  |  |                     continue;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if ("CS-C6Wi-3E4WFR".equals(deviceModel)){//监控器 直播地址开通->关闭视频加密 后续暂时先于APP操作
 | 
	
		
			
				|  |  |                     ysDeviceService.videoOpen(deviceCode,null);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 deviceDetail.setApplyDate(sdf.format(new Date()));
 | 
	
		
			
				|  |  |                 deviceDetail.setManufacturer(manufacturer);
 | 
	
		
			
				|  |  |                 deviceDetail.setDeviceName(deviceName);
 | 
	
		
			
				|  |  |                 deviceDetail.setDeviceModel(deviceModel);
 | 
	
		
			
				|  |  |                 deviceDetail.setDeviceCode(deviceCode);
 | 
	
		
			
				|  |  |                 deviceDetail.setSim(sim);
 | 
	
		
			
				|  |  |                 Device device = deviceDao.findByModel(deviceModel);
 | 
	
		
			
				|  |  |                 if (device!=null){
 | 
	
		
			
				|  |  |                     deviceDetail.setDeviceType(device.getDeviceType());
 | 
	
		
			
				|  |  |                     deviceDetail.setCategoryCode(device.getCategoryCode());//设备类型判断
 | 
	
		
			
				|  |  |                     if ("1".equals(device.getIsMultiUser())){
 | 
	
		
			
				|  |  |                         deviceDetail.setBindingCount("{\"1\":\"0\",\"2\":\"0\"}");
 | 
	
		
			
				|  |  |                     }else if ("0".equals(device.getIsMultiUser())){
 | 
	
		
			
				|  |  |                         deviceDetail.setBindingCount("{\"1\":\"0\"}");
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 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(errorMsgMapTotal, SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |             map.put("errorData", errorLs);
 | 
	
		
			
				|  |  |             //失败数据下载
 | 
	
		
			
				|  |  |             if (errorLs.size()>0){
 | 
	
		
			
				|  |  |                 response.setContentType("octets/stream");
 | 
	
		
			
				|  |  |                 response.setHeader("Content-Disposition", "attachment; filename=" + new String("deviceImport.xls"));
 | 
	
		
			
				|  |  |                 OutputStream os = response.getOutputStream();
 | 
	
		
			
				|  |  |                 deviceManageService.write(os, errorLs);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             return ObjEnvelop.getSuccess("success",JSON.toJSONString(map,SerializerFeature.WriteMapNullValue));
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             failedObjEnvelopException2(e);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return ObjEnvelop.getSuccess("success",correctLs.size());
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @GetMapping(value = "downLoadDeviceModelExcel", produces = "application/json;charset=UTF-8")
 | 
	
		
			
				|  |  |     @ApiOperation(("模板下载"))
 | 
	
		
			
				|  |  |     public void downLoadDeviceModelExcel(HttpServletResponse response) {
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             response.setContentType("octets/stream");
 | 
	
		
			
				|  |  |             response.setHeader("Content-Disposition", "attachment; filename=" + new String("deviceImport.xls"));
 | 
	
		
			
				|  |  |             OutputStream os = response.getOutputStream();
 | 
	
		
			
				|  |  |             deviceManageService.write(os, null);
 | 
	
		
			
				|  |  |         } catch (Exception ex) {
 | 
	
		
			
				|  |  |             ex.printStackTrace();
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /***初始化设备表 设备类型字段****/
 | 
	
		
			
				|  |  |     @PostMapping("initCategoryCode")
 | 
	
		
			
				|  |  |     @ApiOperation("设备库存表新增字段初始化")
 | 
	
		
			
				|  |  |     public Envelop initCategoryCode(){
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             deviceManageService.initCategoryCode();
 | 
	
		
			
				|  |  |             return success();
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |             return failedException2(e);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 |