| 
					
				 | 
			
			
				@ -1,99 +1,257 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.iot.controller.device; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.base.fastdfs.FastDFSHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.iot.dao.device.IotDeviceImportRecordDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.iot.service.device.IotDeviceService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.exception.ApiException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.iot.device.IotDeviceDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.iot.device.IotDeviceImportRecordDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.common.Envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.common.EnvelopRestController; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.iot.common.ExistVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.iot.common.UploadVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.iot.device.IotDeviceImportRecordVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.iot.device.IotDeviceVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.rm.iot.IotRequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import io.swagger.annotations.Api; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import io.swagger.annotations.ApiOperation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import io.swagger.annotations.ApiParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.poi.hssf.usermodel.HSSFCell; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.poi.hssf.usermodel.HSSFRow; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.poi.hssf.usermodel.HSSFSheet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.http.MediaType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.bind.annotation.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.multipart.MultipartFile; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.servlet.http.HttpServletRequest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Iterator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @author yeshijie on 2017/12/8. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@RestController 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@RequestMapping(IotRequestMapping.api_iot_common) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@RequestMapping(IotRequestMapping.Common.device) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Api(tags = "设备管理相关操作", description = "设备管理相关操作") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class IotDeviceController extends EnvelopRestController{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private Logger logger = LoggerFactory.getLogger(IotDeviceController.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private IotDeviceService iotDeviceService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private FastDFSHelper fastDFSHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${fastDFS.fastdfs_file_url}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String fastdfs_file_url; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private IotDeviceImportRecordDao iotDeviceImportRecordDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostMapping(value = IotRequestMapping.Device.api_create, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "创建设备", notes = "创建设备") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop create(@ApiParam(name = "json_data", value = "", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop<IotDeviceVO> create(@ApiParam(name = "json_data", value = "", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                          @RequestBody String jsonData) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            IotDeviceDO iotDevice = toEntity(jsonData, IotDeviceDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getSuccess(IotRequestMapping.Device.message_success_create, iotDeviceService.create(iotDevice)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (ApiException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getError(e.getMessage(), e.getErrorCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(StringUtils.isBlank(iotDevice.getDeviceSn())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return Envelop.getError("sn码不能为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(iotDeviceService.findByDeviceSn(iotDevice.getDeviceSn())!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return Envelop.getError("SN码重复,并不允许新增"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(StringUtils.isNotBlank(iotDevice.getSimNo())&&iotDeviceService.findByDeviceSn(iotDevice.getSimNo())!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return Envelop.getError("SIM卡号重复,并不允许新增"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            iotDeviceService.create(iotDevice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getSuccess(IotRequestMapping.Device.message_success_create); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getError(e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @GetMapping(value = IotRequestMapping.Device.api_getById) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "根据code查找设备", notes = "根据code查找设备") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop findByCode(@ApiParam(name = "id", value = "id") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop<IotDeviceVO> findByCode(@ApiParam(name = "id", value = "id") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                              @RequestParam(value = "id", required = true) String id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getSuccess(IotRequestMapping.Device.message_success_find, iotDeviceService.findById(id)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (ApiException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getError(e.getMessage(), e.getErrorCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            IotDeviceDO iotDeviceDO = iotDeviceService.findById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            IotDeviceVO iotDeviceVO = convertToModel(iotDeviceDO,IotDeviceVO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getSuccess(IotRequestMapping.Device.message_success_find, iotDeviceVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getError(e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @GetMapping(value = IotRequestMapping.Device.isSnExist) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "sn码是否存在", notes = "sn码是否存在") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop<ExistVO> isSnExist(@ApiParam(name = "sn", value = "sn") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                           @RequestParam(value = "sn", required = true) String sn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            IotDeviceDO iotDeviceDO = iotDeviceService.findByDeviceSn(sn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ExistVO existVO = new ExistVO(iotDeviceDO==null?0:1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getSuccess(IotRequestMapping.Device.message_success_find, existVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getError(e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @GetMapping(value = IotRequestMapping.Device.isSimExist) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "sim卡号是否存在", notes = "sim卡号是否存在") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop<ExistVO> isSimExist(@ApiParam(name = "sim", value = "sim") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                           @RequestParam(value = "sim", required = true) String sim 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            IotDeviceDO iotDeviceDO = iotDeviceService.findBySimNo(sim); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ExistVO existVO = new ExistVO(iotDeviceDO==null?0:1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getSuccess(IotRequestMapping.Device.message_success_find, existVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getError(e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @RequestMapping(value = IotRequestMapping.Device.api_queryPage, method = RequestMethod.GET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "分页获取设备") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop queryPage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段(id,supplierName,type,contactsName,contactsMobile)", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "fields", required = false) String fields, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件(supplierName?中 g1;contactsName?中 g1)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "filters", required = false,defaultValue = "") String filters, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "sorts", value = "排序,规则参见说明文档", defaultValue = "-createTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "sorts", required = false) String sorts, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "size", value = "分页大小", defaultValue = "15") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "size", required = false) Integer size, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "page", value = "页码", defaultValue = "1") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "page", required = false) Integer page, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            HttpServletRequest request, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            HttpServletResponse response) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //得到list数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<IotDeviceDO> list = iotDeviceService.search(fields, filters, sorts, page, size); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //获取总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        long count=iotDeviceService.getCount(filters); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //封装头信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        pagedResponse(request, response, count, page, size); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //封装返回格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<IotDeviceDO> iotDevices = convertToModels(list, new ArrayList<>(list.size()), IotDeviceDO.class, fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @GetMapping(value = IotRequestMapping.Device.api_queryPage) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "分页查找设备", notes = "分页查找设备") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop<IotDeviceVO> findProductPageByCompanyId(@ApiParam(name = "sn", value = "SN码或SIM卡号", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           @RequestParam(value = "sn", required = false) String sn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           @ApiParam(name = "hospital", value = "社区医院", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           @RequestParam(value = "hospital", required = false) String hospital, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           @ApiParam(name = "orderId", value = "订单id", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           @RequestParam(value = "orderId", required = false) String orderId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           @ApiParam(name = "purcharseId", value = "采购id", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           @RequestParam(value = "purcharseId", required = true) String purcharseId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           @ApiParam(name = "page", value = "第几页", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           @RequestParam(value = "page", required = false) Integer page, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           @ApiParam(name = "size", value = "每页记录数", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           @RequestParam(value = "size", required = false) Integer size){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(page == null|| page < 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                page = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(size == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                size = 10; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String filters = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String semicolon = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(StringUtils.isNotBlank(orderId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                filters += semicolon +"orderId="+orderId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                semicolon = ";"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(StringUtils.isNotBlank(purcharseId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                filters += semicolon +"purcharseId="+purcharseId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                semicolon = ";"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(StringUtils.isNotBlank(hospital)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                filters += semicolon +"hospital="+hospital; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                semicolon = ";"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(StringUtils.isNotBlank(sn)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                filters = "deviceSn?"+sn+" g1;simNo?"+sn+" g1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                semicolon = ";"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(StringUtils.isBlank(filters)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                filters+= semicolon + "del=1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String sorts = "-updateTime"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //得到list数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<IotDeviceDO> list = iotDeviceService.search(null, filters, sorts, page, size); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //获取总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            long count = iotDeviceService.getCount(filters); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //DO转VO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<IotDeviceVO> iotDeviceVOList = convertToModels(list,new ArrayList<>(list.size()),IotDeviceVO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return Envelop.getSuccessListWithPage(IotRequestMapping.Device.message_success_find_functions,iotDevices, page, size,count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getSuccessListWithPage(IotRequestMapping.Company.message_success_find_functions,iotDeviceVOList, page, size,count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getError(e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostMapping(value = IotRequestMapping.Device.importDevice) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "设备导入", notes = "设备导入") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop<UploadVO> uploadStream(@ApiParam(value = "文件", required = true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                          @RequestParam(value = "file", required = true) MultipartFile file, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                          @ApiParam(name = "purcharseId", value = "采购id", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                          @RequestParam(value = "purcharseId", required = true) String purcharseId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 得到文件的完整名称  xxx.txt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String fullName = file.getOriginalFilename(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //得到文件类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String fileType = fullName.substring(fullName.lastIndexOf(".") + 1).toLowerCase(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(!"xls".equals(fileType)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return Envelop.getError("文件格式不正确"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            IotDeviceImportRecordDO recordDO = iotDeviceImportRecordDao.findByPurchaseId(purcharseId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(recordDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return Envelop.getError("正在导入中,请耐心等待"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String fileName = fullName.substring(0, fullName.lastIndexOf(".")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            HSSFWorkbook wb = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                wb = new HSSFWorkbook(file.getInputStream()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                // logger.debug(wb.getNumberOfSheets()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                HSSFSheet sheet = wb.getSheetAt(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.debug("sheet name = "+wb.getSheetName(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                for(int i = sheet.getFirstRowNum();i<=sheet.getLastRowNum();i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    HSSFRow row = sheet.getRow(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Iterator cells = row.cellIterator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    while(cells.hasNext()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        HSSFCell cell = (HSSFCell) cells.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        logger.debug(cell.getStringCellValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.debug("last row = "+sheet.getLastRowNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @GetMapping(value = IotRequestMapping.Device.api_getList) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "获取设备列表(不分页)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop getList( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段(id,supplierName,type,contactsName,contactsMobile)", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "fields", required = false) String fields, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "filters", required = false) String filters, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "sorts", value = "排序,规则参见说明文档", defaultValue = "-createTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "sorts", required = false) String sorts) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //得到list数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<IotDeviceDO> list = iotDeviceService.search(fields,filters,sorts); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //封装返回格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<IotDeviceDO> iotDevices = convertToModels(list, new ArrayList<>(list.size()), IotDeviceDO.class, fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return Envelop.getSuccessList(IotRequestMapping.Device.message_success_find_functions,iotDevices); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                return wb.getNumberOfSheets(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            return sheet.getFirstRowNum(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.error(e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //上传到fastdfs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            ObjectNode objectNode = fastDFSHelper.upload(file.getInputStream(), fileType, ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //解析返回的objectNode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            UploadVO uploadVO = new UploadVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            uploadVO.setFileName(fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            uploadVO.setFileType(fileType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            uploadVO.setFullUri(objectNode.get("fid").toString().replaceAll("\"", "")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            uploadVO.setFullUrl(fastdfs_file_url + objectNode.get("fid").toString().replaceAll("\"", "")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getSuccess(IotRequestMapping.Common.message_success_create, uploadVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getError(IotRequestMapping.FileUpload.message_fail_upload, IotRequestMapping.api_iot_fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @GetMapping(value = IotRequestMapping.Device.queryImportRecordPage) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "分页查找导入记录", notes = "分页查找导入记录") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop<IotDeviceImportRecordVO> findProductPageByCompanyId(@ApiParam(name = "purcharseId", value = "采购id", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           @RequestParam(value = "purcharseId", required = true) String purcharseId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                                       @ApiParam(name = "page", value = "第几页", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           @RequestParam(value = "page", required = false) Integer page, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                                       @ApiParam(name = "size", value = "每页记录数", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                           @RequestParam(value = "size", required = false) Integer size){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(page == null|| page < 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                page = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(size == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                size = 10; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return iotDeviceService.queryImportRecordPage(page,size,purcharseId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getError(e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |