|  | @ -1,47 +1,25 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.base.service.word;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | import com.yihu.jw.base.dao.word.BaseImportSensitiveDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.base.dao.word.BaseSensitiveDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.base.service.doctor.excelImport.BaseDoctorExcelDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.base.dao.word.BaseSensitiveWordDao;
 | 
	
		
			
				|  |  | 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;
 | 
	
		
			
				|  |  | import com.yihu.jw.utils.SensitivewordFilter;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.words.BaseImportSensitiveDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.words.BaseSensitiveDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.file_upload.FileUploadService;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.iot.common.UploadVO;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.web.MixEnvelop;
 | 
	
		
			
				|  |  | 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;
 | 
	
		
			
				|  |  | import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 | 
	
		
			
				|  |  | import org.apache.poi.ss.usermodel.Row;
 | 
	
		
			
				|  |  | import org.apache.poi.ss.usermodel.Sheet;
 | 
	
		
			
				|  |  | import org.apache.poi.ss.usermodel.Cell;
 | 
	
		
			
				|  |  | import org.apache.poi.xssf.usermodel.XSSFSheet;
 | 
	
		
			
				|  |  | import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 | 
	
		
			
				|  |  | import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.BeanPropertyRowMapper;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import javax.servlet.ServletException;
 | 
	
		
			
				|  |  | import javax.servlet.ServletOutputStream;
 | 
	
		
			
				|  |  | import javax.servlet.http.HttpServletRequest;
 | 
	
		
			
				|  |  | import javax.servlet.http.HttpServletResponse;
 | 
	
		
			
				|  |  | import java.io.*;
 | 
	
		
			
				|  |  | import java.util.*;
 | 
	
		
			
				|  |  | import java.util.logging.Logger;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * @author HZY
 | 
	
	
		
			
				|  | @ -49,10 +27,10 @@ import java.util.logging.Logger;
 | 
	
		
			
				|  |  |  * Created at 2020/7/6
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | @Service
 | 
	
		
			
				|  |  | public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSensitiveDao> {
 | 
	
		
			
				|  |  | public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSensitiveWordDao> {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BaseSensitiveDao baseSensitiveDao;
 | 
	
		
			
				|  |  |     private BaseSensitiveWordDao baseSensitiveWordDao;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
	
		
			
				|  | @ -63,7 +41,7 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe
 | 
	
		
			
				|  |  |     FileUploadService fileUploadService;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private static final org.slf4j.Logger logger = LoggerFactory.getLogger(BaseSensitiveService.class);
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 创建敏感词汇
 | 
	
		
			
				|  |  |      * @param words
 | 
	
	
		
			
				|  | @ -77,7 +55,7 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe
 | 
	
		
			
				|  |  |         baseSensitiveDO.setAddTime(DateUtil.getNowDate());
 | 
	
		
			
				|  |  |         baseSensitiveDO.setOperatorCode(operatorCode);
 | 
	
		
			
				|  |  |         baseSensitiveDO.setOperator(name);
 | 
	
		
			
				|  |  |         baseSensitiveDao.save(baseSensitiveDO);
 | 
	
		
			
				|  |  |         baseSensitiveWordDao.save(baseSensitiveDO);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
	
		
			
				|  | @ -87,14 +65,14 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe
 | 
	
		
			
				|  |  |      * @param explanation
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public void updateSensitiveWords(String id, String words, String explanation,String status,String operatorCode,String name) {
 | 
	
		
			
				|  |  |         BaseSensitiveDO baseSensitiveDO = baseSensitiveDao.findOne(id);
 | 
	
		
			
				|  |  |         BaseSensitiveDO baseSensitiveDO = baseSensitiveWordDao.findOne(id);
 | 
	
		
			
				|  |  |         baseSensitiveDO.setSensitiveWord(words);
 | 
	
		
			
				|  |  |         baseSensitiveDO.setExplanation(explanation);
 | 
	
		
			
				|  |  |         baseSensitiveDO.setUpdateTime(DateUtil.getNowDate());
 | 
	
		
			
				|  |  |         baseSensitiveDO.setOperatorCode(operatorCode);
 | 
	
		
			
				|  |  |         baseSensitiveDO.setOperator(name);
 | 
	
		
			
				|  |  |         baseSensitiveDO.setStatus(status);
 | 
	
		
			
				|  |  |         baseSensitiveDao.save(baseSensitiveDO);
 | 
	
		
			
				|  |  |         baseSensitiveWordDao.save(baseSensitiveDO);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
	
		
			
				|  | @ -105,7 +83,7 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe
 | 
	
		
			
				|  |  |         String[] list = ids.split(",");
 | 
	
		
			
				|  |  |         for (String id : list) {
 | 
	
		
			
				|  |  |             if (StringUtils.isNotEmpty(id)){
 | 
	
		
			
				|  |  |                 baseSensitiveDao.delete(id);
 | 
	
		
			
				|  |  |                 baseSensitiveWordDao.delete(id);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
	
		
			
				|  | @ -119,12 +97,12 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe
 | 
	
		
			
				|  |  |         String[] list = ids.split(",");
 | 
	
		
			
				|  |  |         for (String id : list) {
 | 
	
		
			
				|  |  |             if (StringUtils.isNotEmpty(id)){
 | 
	
		
			
				|  |  |                 BaseSensitiveDO baseSensitiveDO = baseSensitiveDao.findOne(id);
 | 
	
		
			
				|  |  |                 BaseSensitiveDO baseSensitiveDO = baseSensitiveWordDao.findOne(id);
 | 
	
		
			
				|  |  |                 baseSensitiveDO.setStatus(status);
 | 
	
		
			
				|  |  |                 baseSensitiveDO.setUpdateTime(DateUtil.getNowDate());
 | 
	
		
			
				|  |  |                 baseSensitiveDO.setOperatorCode(operatorCode);
 | 
	
		
			
				|  |  |                 baseSensitiveDO.setOperator(name);
 | 
	
		
			
				|  |  |                 baseSensitiveDao.save(baseSensitiveDO);
 | 
	
		
			
				|  |  |                 baseSensitiveWordDao.save(baseSensitiveDO);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -150,7 +128,7 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe
 | 
	
		
			
				|  |  |             countSql.append(" AND (s.sensitive_word like'%").append(words).append("%'").append(" or ").append("s.explanation like'%").append(words).append("%')");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         sql.append(" ORDER BY s.update_time desc LIMIT ").append((page-1)*pageSize).append(",").append(pageSize);
 | 
	
		
			
				|  |  |         Logger.getAnonymousLogger().info("sql="+sql.toString());
 | 
	
		
			
				|  |  |         logger.info("sql="+sql.toString());
 | 
	
		
			
				|  |  |         List<BaseSensitiveDO> list = jdbcTemplate.query(sql.toString(), new BeanPropertyRowMapper<>(BaseSensitiveDO.class));
 | 
	
		
			
				|  |  |         List<Map<String, Object>> mapList = jdbcTemplate.queryForList(countSql.toString());
 | 
	
		
			
				|  |  |         long count = (long)mapList.get(0).get("count");
 | 
	
	
		
			
				|  | @ -201,7 +179,7 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe
 | 
	
		
			
				|  |  | //        UploadVO uploadVO = fileUploadService.uploadStream(in, "sentitiveLog.xls", path);
 | 
	
		
			
				|  |  |         //拼接字符串
 | 
	
		
			
				|  |  |         StringBuffer text = new StringBuffer();
 | 
	
		
			
				|  |  |             text.append("序号").append("   ").append("原因");
 | 
	
		
			
				|  |  |             text.append("序号").append("   ").append("原因").append("\r\n");
 | 
	
		
			
				|  |  |         for(BaseImportSensitiveDO one:list){
 | 
	
		
			
				|  |  |             text.append("第");
 | 
	
		
			
				|  |  |             text.append(one.getRow());
 | 
	
	
		
			
				|  | @ -246,7 +224,7 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe
 | 
	
		
			
				|  |  |         rs.put("total",total);
 | 
	
		
			
				|  |  |         Date nowDate = DateUtil.getNowDate();
 | 
	
		
			
				|  |  |         for (BaseSensitiveExcelDO one : correctLs) {
 | 
	
		
			
				|  |  |             BaseSensitiveDO sensitive = baseSensitiveDao.findBySensitiveWord(one.getSensitiveWord());
 | 
	
		
			
				|  |  |             BaseSensitiveDO sensitive = baseSensitiveWordDao.findBySensitiveWord(one.getSensitiveWord());
 | 
	
		
			
				|  |  |             if (sensitive!=null){
 | 
	
		
			
				|  |  |                 BaseImportSensitiveDO importSensitiveDO = new BaseImportSensitiveDO();
 | 
	
		
			
				|  |  |                 importSensitiveDO.setRow(one.getId());
 | 
	
	
		
			
				|  | @ -277,18 +255,18 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe
 | 
	
		
			
				|  |  |             baseSensitiveDO.setOperatorCode(operatorCode);
 | 
	
		
			
				|  |  |             baseSensitiveDO.setOperator(name);
 | 
	
		
			
				|  |  |             baseSensitiveDO.setAddTime(nowDate);
 | 
	
		
			
				|  |  |             baseSensitiveDao.save(baseSensitiveDO);
 | 
	
		
			
				|  |  |             baseSensitiveWordDao.save(baseSensitiveDO);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             String url = exportSensitiveWordsLog(os, operatorCode, fastdfs_file_url);
 | 
	
		
			
				|  |  |             rs.put("downloadLogUrl",url);
 | 
	
		
			
				|  |  |             Logger.getGlobal().info("downloadLogUrl="+url);
 | 
	
		
			
				|  |  |             logger.info("downloadLogUrl="+url);
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |             rs.put("downloadLogUrl","导出日志失败");
 | 
	
		
			
				|  |  |             Logger.getGlobal().info("Logerror="+e.getMessage());
 | 
	
		
			
				|  |  |             logger.info("Logerror="+e.getMessage());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         rs.put("success",total);
 | 
	
		
			
				|  |  |         return rs;
 | 
	
	
		
			
				|  | @ -300,19 +278,19 @@ public class BaseSensitiveService extends BaseJpaService<BaseSensitiveDO, BaseSe
 | 
	
		
			
				|  |  |      * @param txt
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public MixEnvelop filterSensitiveWords(String txt){
 | 
	
		
			
				|  |  |         List<BaseSensitiveDO> list = (List<BaseSensitiveDO>) baseSensitiveDao.findAll();
 | 
	
		
			
				|  |  |     public String filterSensitiveWords(String txt){
 | 
	
		
			
				|  |  |         List<BaseSensitiveDO> list = (List<BaseSensitiveDO>) baseSensitiveWordDao.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);
 | 
	
		
			
				|  |  |         logger.info("语句中包含敏感词的个数为:" + words.size() + "。包含:" + words);
 | 
	
		
			
				|  |  |         logger.info("过滤前="+txt);
 | 
	
		
			
				|  |  |         String replaceTxt = filter.replaceSensitiveWord(txt, 1, "*");
 | 
	
		
			
				|  |  |         Logger.getGlobal().info("过滤后="+replaceTxt);
 | 
	
		
			
				|  |  |         return MixEnvelop.getSuccess("过滤成功",replaceTxt);
 | 
	
		
			
				|  |  |         logger.info("过滤后="+replaceTxt);
 | 
	
		
			
				|  |  |         return replaceTxt;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 | 
	
		
			
				|  |  | 
 |