| 
					
				 | 
			
			
				@ -2,16 +2,13 @@ package com.yihu.iot.service.device; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.base.fastdfs.FastDFSHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.base.mysql.query.BaseJpaService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.iot.dao.device.IotDeviceDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.iot.dao.device.IotDeviceImportRecordDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.iot.dao.device.IotOrderPurchaseDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.iot.device.IotDeviceDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.iot.device.IotDeviceImportRecordDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.iot.device.IotOrderPurchaseDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.iot.dao.device.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.iot.device.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.common.Envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.common.base.BaseEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.iot.device.IotDeviceImportRecordVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.iot.device.IotDeviceImportVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.iot.device.IotDeviceVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.rm.iot.IotRequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -45,6 +42,10 @@ public class IotDeviceService extends BaseJpaService<IotDeviceDO,IotDeviceDao> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private IotOrderPurchaseDao iotOrderPurchaseDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private IotDeviceImportRecordService importRecordService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private IotPatientDeviceDao iotPatientDeviceDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private IotDeviceQualityInspectionPlanDao iotDeviceQualityInspectionPlanDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 新增 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -53,6 +54,25 @@ public class IotDeviceService extends BaseJpaService<IotDeviceDO,IotDeviceDao> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public IotDeviceDO create(IotDeviceDO iotDevice) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(iotDevice.getPurchaseId()!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            IotOrderPurchaseDO purchaseDO = iotOrderPurchaseDao.findById(iotDevice.getPurchaseId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            iotDevice.setName(purchaseDO.getDeviceName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            iotDevice.setOrderNo(purchaseDO.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            iotDevice.setProductId(purchaseDO.getProductId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            iotDevice.setSupplierId(purchaseDO.getSupplierId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            iotDevice.setSupplierName(purchaseDO.getSupplierName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            iotDevice.setManufacturerId(purchaseDO.getManufacturerId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            iotDevice.setManufacturerName(purchaseDO.getManufacturerName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            iotDevice.setStatus(IotDeviceDO.DeviceStatus.normal.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            iotDevice.setDeviceSource(IotDeviceDO.DeviceSource.purchaese.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //获取质检信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            IotDeviceQualityInspectionPlanDO planDO = iotDeviceQualityInspectionPlanDao.findLastByPurchaseId(iotDevice.getPurchaseId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(planDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                iotDevice.setNextQualityTime(planDO.getPlanTime());//下次质检时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        iotDevice.setSaasId(getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        iotDevice.setDel(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return iotDeviceDao.save(iotDevice); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -101,6 +121,114 @@ public class IotDeviceService extends BaseJpaService<IotDeviceDO,IotDeviceDao> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        this.batchInsert(iotDeviceDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 查询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param sn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param hospital 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param orderId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param purcharseId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop<IotDeviceVO> queryPage(String sn,String hospital,String orderId,String purcharseId,Integer page,Integer size) throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String filters = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String semicolon = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(orderId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            filters += semicolon +"orderId="+orderId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            semicolon = ";"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(purcharseId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            filters += semicolon +"purchaseId="+purcharseId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            semicolon = ";"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(hospital)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            filters += semicolon +"hospital="+hospital; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            semicolon = ";"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(sn)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            filters = "deviceSn?"+sn+" g1;name?"+sn+" g1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            semicolon = ";"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isBlank(filters)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            filters+= semicolon + "del=1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sorts = "-updateTime"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //得到list数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<IotDeviceDO> list = search(null, filters, sorts, page, size); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //获取总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        long count = getCount(filters); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //DO转VO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<IotDeviceVO> iotDeviceVOList = convertToModels(list,new ArrayList<>(list.size()),IotDeviceVO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        iotDeviceVOList.forEach(one->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String deviceSn = one.getDeviceSn(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<IotPatientDeviceDO>  deviceDOList = iotPatientDeviceDao.findByDeviceSn(deviceSn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(deviceDOList!=null&&deviceDOList.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                one.setIsBinding(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                one.setIsBinding(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return Envelop.getSuccessListWithPage(IotRequestMapping.Company.message_success_find_functions,iotDeviceVOList, page, size,count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 是否绑定查询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param sn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param hospital 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param orderId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param purcharseId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param isBinding 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop<IotDeviceVO> queryPage(String sn,String hospital,String orderId,String purcharseId,Integer isBinding,Integer page,Integer size){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringBuffer sql = new StringBuffer("SELECT DISTINCT c.* from iot_device c ,iot_patient_device t WHERE c.del=1 and t.del=1 "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringBuffer sqlCount = new StringBuffer("SELECT COUNT(DISTINCT c.id) count from iot_device c ,iot_patient_device t WHERE c.del=1 and t.del=1 "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Object> args = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(orderId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql.append(" and c.order_id = ? "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCount.append(" and c.order_id = '").append(orderId).append("'"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            args.add(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(purcharseId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql.append(" and c.purcharse_id = ? "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCount.append(" and c.purcharse_id = '").append(purcharseId).append("'"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            args.add(purcharseId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(hospital)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql.append(" and c.hospital = ? "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCount.append(" and c.hospital = '").append(hospital).append("'"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            args.add(hospital); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(sn)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql.append(" and (c.device_sn like ? or c.name like ?)"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlCount.append(" and (c.device_sn like '").append(sn).append("' or c.name like '").append(sn).append("')"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            args.add(sn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            args.add(sn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql.append(" and c.device_sn = t.device_sn "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sqlCount.append("  and c.device_sn = t.device_sn '"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql.append("order by c.update_time desc limit ").append((page-1)*size).append(",").append(size); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<IotDeviceDO> list = jdbcTempalte.query(sql.toString(),args.toArray(),new BeanPropertyRowMapper(IotDeviceDO.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> countList = jdbcTempalte.queryForList(sqlCount.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        long count = Long.valueOf(countList.get(0).get("count").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //DO转VO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<IotDeviceVO> iotDeviceVOList = convertToModels(list,new ArrayList<>(list.size()),IotDeviceVO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        iotDeviceVOList.forEach(one->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            one.setIsBinding(isBinding); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return Envelop.getSuccessListWithPage(IotRequestMapping.Common.message_success_find_functions,iotDeviceVOList, page, size,count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 根据设备序列号判断设备是否存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param deviceSn 
			 |