| 
					
				 | 
			
			
				@ -6,6 +6,8 @@ import com.yihu.jw.base.dao.word.BaseSensitiveDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.service.doctor.excelImport.BaseDoctorExcelDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.service.word.excelImport.BaseSensitiveExcelDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.useragent.UserAgent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.util.SensitiveWordInit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.util.SensitivewordFilter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.doctor.dao.BaseDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.doctor.BaseDoctorDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.sync.BaseSyncDataDO; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -18,6 +20,8 @@ import com.yihu.jw.rm.health.house.HealthyHouseMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.rm.iot.IotRequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.date.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.mysql.query.BaseJpaService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import jxl.Workbook; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import jxl.write.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.poi.hssf.usermodel.HSSFSheet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -98,9 +102,11 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param ids 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void delSensitiveWords(String ids) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<String> list = JSONObject.parseObject(ids, List.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String[] list = ids.split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (String id : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseSensitiveDao.delete(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNotEmpty(id)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseSensitiveDao.delete(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -110,14 +116,16 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void updateSensitiveWordsStatus(String ids, String status,String operatorCode,String name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<String> list = JSONObject.parseObject(ids, List.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String[] list = ids.split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (String id : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseSensitiveDO baseSensitiveDO = baseSensitiveDao.findOne(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseSensitiveDO.setStatus(status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseSensitiveDO.setUpdateTime(DateUtil.getNowDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseSensitiveDO.setOperatorCode(operatorCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseSensitiveDO.setOperator(name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseSensitiveDao.save(baseSensitiveDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNotEmpty(id)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BaseSensitiveDO baseSensitiveDO = baseSensitiveDao.findOne(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseSensitiveDO.setStatus(status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseSensitiveDO.setUpdateTime(DateUtil.getNowDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseSensitiveDO.setOperatorCode(operatorCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseSensitiveDO.setOperator(name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseSensitiveDao.save(baseSensitiveDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -133,7 +141,7 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public MixEnvelop findSensitiveWords(String status, String words, Integer page, Integer pageSize) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringBuffer sql = new StringBuffer("select * from base_sensitive s where 1=1 "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringBuffer countSql = new StringBuffer("select count(*) count from base_sensitive s where 1=1 "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotEmpty(status)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!status.equalsIgnoreCase("null")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql.append(" AND s.status='").append(status).append("'"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            countSql.append(" AND s.status='").append(status).append("'"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -152,15 +160,48 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 导出敏感词日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param operatorCode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public MixEnvelop exportSensitiveWordsLog(HttpServletResponse response,String operatorCode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql="SELECT * FROM base_import_sensitive b WHERE b.create_time=(SELECT MAX(b.create_time) FROM base_import_sensitive b) and b.operator_code='"+operatorCode+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //获取日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public String exportSensitiveWordsLog(OutputStream os,String operatorCode,String path) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql="SELECT * FROM base_import_sensitive b WHERE b.create_time=(SELECT MAX(b.create_time) FROM base_import_sensitive b WHERE b.operator_code='"+operatorCode+"') "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseImportSensitiveDO> list =jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseImportSensitiveDO.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        WritableWorkbook wwb = jxl.Workbook.createWorkbook(os); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            WritableSheet ws; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            ws = wwb.createSheet("sheet", 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            String[] header = {"序号", "原因"}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            int k = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            for (String h : header) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                addCell(ws, 0, k, h);//表名,行,列,header 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                k++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            int i = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            for (BaseImportSensitiveDO one : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                addCell(ws, i, 0,one.getRow() , ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                addCell(ws, i, 1,  one.getProblem(), ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                i++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            wwb.write(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            wwb.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        } catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            if (wwb != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                wwb.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            throw e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        byte[] bytes = wwb.toString().getBytes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        InputStream in = new ByteArrayInputStream(bytes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        UploadVO uploadVO = fileUploadService.uploadStream(in, "sentitiveLog.xls", path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //拼接字符串 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringBuffer text = new StringBuffer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            text.append("序号").append("   ").append("原因"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for(BaseImportSensitiveDO one:list){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            text.append("第"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            text.append(one.getRow()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -170,35 +211,36 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            text.append("\r\n");//换行字符 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        byte[] bytes = text.toString().getBytes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        OutputStream os = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            os = response.getOutputStream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            response.addHeader("Content-Type", "multipart/form-data"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            os.write(bytes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            os.flush(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (os != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    os.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        InputStream in = new ByteArrayInputStream(bytes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        UploadVO uploadVO = fileUploadService.uploadStream(in, "sentitiveLog.xls", path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return uploadVO.getFullUri(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return MixEnvelop.getSuccess("下载日志成功",os); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    //添加单元格内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void addCell(WritableSheet ws, int row, int column, String data) throws WriteException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Label label = new Label(column, row, data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ws.addCell(label); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    //添加单元格内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void addCell(WritableSheet ws, int row, int column, String data, String memo) throws WriteException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Label label = new Label(column, row, data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!org.springframework.util.StringUtils.isEmpty(memo)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            WritableCellFeatures cellFeatures = new WritableCellFeatures(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            cellFeatures.setComment(memo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            label.setCellFeatures(cellFeatures); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ws.addCell(label); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 导入敏感词 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param correctLs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Map<String, Object> importSensitive(List<BaseSensitiveExcelDO> correctLs,String operatorCode,String name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Map<String, Object> importSensitive(List<BaseSensitiveExcelDO> correctLs,String operatorCode,String name,OutputStream os,String fastdfs_file_url){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> rs = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int total = correctLs.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        rs.put("total",total); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -237,9 +279,41 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseSensitiveDO.setAddTime(nowDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseSensitiveDao.save(baseSensitiveDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String url = exportSensitiveWordsLog(os, operatorCode, fastdfs_file_url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            rs.put("downloadLogUrl",url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Logger.getGlobal().info("downloadLogUrl="+url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            rs.put("downloadLogUrl","导出日志失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Logger.getGlobal().info("Logerror="+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        rs.put("success",total); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return rs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 敏感词过滤 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param txt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public MixEnvelop filterSensitiveWords(String txt){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseSensitiveDO> list = (List<BaseSensitiveDO>) baseSensitiveDao.findAll(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        HashSet<String> set = new HashSet<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (BaseSensitiveDO one : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            set.add(one.getSensitiveWord()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SensitivewordFilter filter = new SensitivewordFilter(set); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Set<String> words = filter.getSensitiveWord(txt, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Logger.getGlobal().info("语句中包含敏感词的个数为:" + words.size() + "。包含:" + words); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Logger.getAnonymousLogger().info("过滤前="+txt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String replaceTxt = filter.replaceSensitiveWord(txt, 1, "*"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Logger.getGlobal().info("过滤后="+replaceTxt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return MixEnvelop.getSuccess("过滤成功",replaceTxt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 |