diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/controller/SarBussionessStandController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/controller/SarBussionessStandController.java index 19da6266..6287698b 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/controller/SarBussionessStandController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/controller/SarBussionessStandController.java @@ -365,5 +365,14 @@ public class SarBussionessStandController extends BaseController List getSarBussionStandPageQd(SarBussionessStandEOPage page) throws Exception; void convertDocAllQB(List list); + + void checkFileByEncrypt(); + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java index e59a3a23..8b75f2d8 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java @@ -57,10 +57,7 @@ import com.adc.da.sys.sarMenuStandard.entity.SarMenuStandard; import com.adc.da.sys.sarMenuStandard.service.ISarMenuStandardService; import com.adc.da.sys.util.LoginUserUtil; import com.adc.da.util.UUIDUtils; -import com.adc.da.utils.util.FieldConvertUtil; -import com.adc.da.utils.util.InitStandAttrUtil; -import com.adc.da.utils.util.SarAdvanceSearchUtil; -import com.adc.da.utils.util.Utils; +import com.adc.da.utils.util.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import net.sf.json.JSONObject; @@ -71,6 +68,7 @@ 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.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.sql.Clob; @@ -170,6 +168,10 @@ public class SarBussionessStandServiceImpl extends ServiceImpl standQueryWrapper = new QueryWrapper<>(); + standQueryWrapper.eq("VALID_FLAG",0); + List sarBussionessStands = sarBussionessStandEODao.selectList(standQueryWrapper); + int checkStandNum = 0; + List outLogList = new ArrayList<>(); + if(sarBussionessStands!=null && !sarBussionessStands.isEmpty()){ + for (SarBussionessStand data:sarBussionessStands) { + logger.info("开始处理第 "+(checkStandNum++)+" 个企标: "+data.getId()+" "+data.getStandCode()); + QueryWrapper fileQueryWrapper = new QueryWrapper<>(); + fileQueryWrapper.eq("STAND_ID",data.getId()); + fileQueryWrapper.eq("USE_MODEL","SOURCE_FILE"); + fileQueryWrapper.eq("validFlag",0); + List sarBussStandFiles = sarBussStandFileEODao.selectList(fileQueryWrapper); + if(sarBussStandFiles!=null && !sarBussStandFiles.isEmpty()){ + for(SarBussStandFile file : sarBussStandFiles){ + StringBuilder fileLog = new StringBuilder(); + String fileAttId = file.getAttId(); + if(StringUtils.isNotBlank(fileAttId)){ + fileLog.append("标准 ").append(data.getStandCode()).append(" ").append(data.getId()); + fileLog.append(" 下的文件: ").append(file.getId()).append(" ").append(file.getFileName()); + //获取文件信息 + AttFileEO fileInfo = attFileEOService.getFileInfo(fileAttId); + String checkResult = encryptFileUtils.checkFileIsEncryFile(fileInfo); + switch (checkResult){ + case "NOFILE": + fileLog.append(" 检查结果为 不存在该数据 "); + break; + case "READERR": + fileLog.append(" 检查结果为 读取文件失败 "); + break; + case "READNO": + fileLog.append(" 检查结果为 读取文件为空 "); + break; + case "UNENCRYPT": + fileLog.setLength(0); + break; + case "ENCRYPT": + fileLog.append(" 检查结果为 读取文件为空 "); + break; + } + } + if(fileLog.length()>0){ + outLogList.add(fileLog.toString()); + } + } + } + } + } + if(!outLogList.isEmpty()){ + encryptFileUtils.writeTxt(outLogList); + } + logger.info("================================文件检查完毕=================================================="); + } + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java index 945da70f..61285b71 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java @@ -899,4 +899,12 @@ public class SarStandardsInfoController extends BaseController return "1"; } + @ApiOperation(value = "企业标准原始文件判断是否是加密文件") + @GetMapping("/checkFileByEncrypt") + public ResponseMessage checkFileByEncrypt() { + sarStandardsInfoEOService.checkFileByEncrypt(); + return Result.success("开始判断中稍后到服务器中查看文件"); + } + + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/ISarStandardsInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/ISarStandardsInfoService.java index 85d0593e..a1899b2b 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/ISarStandardsInfoService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/ISarStandardsInfoService.java @@ -71,5 +71,6 @@ public interface ISarStandardsInfoService extends IService { void convertDocAll(List list); + void checkFileByEncrypt(); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java index 7581859b..3da396b7 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java @@ -115,6 +115,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -289,6 +290,9 @@ public class SarStandardsInfoServiceImpl extends ServiceImpl standQueryWrapper = new QueryWrapper<>(); + standQueryWrapper.eq("VALID_FLAG","0"); + List sarStandardsInfos = dao.selectList(standQueryWrapper); + int checkStandNum = 0; + List outLogList = new ArrayList<>(); + if(sarStandardsInfos!=null && !sarStandardsInfos.isEmpty()){ + for (SarStandardsInfo data:sarStandardsInfos) { + logger.info("开始处理第 "+(checkStandNum++)+" 个标准: "+data.getId()+" "+data.getStandSort()+" "+data.getStandNumber()+"-"+data.getStandYear()); + QueryWrapper fileQueryWrapper = new QueryWrapper<>(); + fileQueryWrapper.eq("STAND_ID",data.getId()); + fileQueryWrapper.eq("USE_MODEL","SOURCE_FILE"); + fileQueryWrapper.eq("validFlag",0); + List sarStandFiles = sarStandFileEODao.selectList(fileQueryWrapper); + if(sarStandFiles!=null && !sarStandFiles.isEmpty()){ + for(SarStandFile file : sarStandFiles){ + StringBuilder fileLog = new StringBuilder(); + String fileAttId = file.getAttId(); + if(org.apache.commons.lang.StringUtils.isNotBlank(fileAttId)){ + fileLog.append("标准 ").append(data.getStandSort()+" "+data.getStandNumber()+"-"+data.getStandYear()).append(" ").append(data.getId()); + fileLog.append(" 下的文件: ").append(file.getId()).append(" ").append(file.getFileName()); + //获取文件信息 + AttFileEO fileInfo = attFileEOService.getFileInfo(fileAttId); + String checkResult = encryptFileUtils.checkFileIsEncryFile(fileInfo); + switch (checkResult){ + case "NOFILE": + fileLog.append(" 检查结果为 不存在该数据 "); + break; + case "READERR": + fileLog.append(" 检查结果为 读取文件失败 "); + break; + case "READNO": + fileLog.append(" 检查结果为 读取文件为空 "); + break; + case "UNENCRYPT": + fileLog.setLength(0); + break; + case "ENCRYPT": + fileLog.append(" 检查结果为 读取文件为空 "); + break; + } + } + if(fileLog.length()>0){ + outLogList.add(fileLog.toString()); + } + } + } + } + } + if(!outLogList.isEmpty()){ + encryptFileUtils.writeTxt(outLogList); + } + logger.info("================================文件检查完毕=================================================="); + } + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/EncryptFileUtils.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/EncryptFileUtils.java new file mode 100644 index 00000000..cc62e2c0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/EncryptFileUtils.java @@ -0,0 +1,127 @@ +package com.adc.da.utils.util; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.util.UUIDUtils; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.io.*; +import java.util.List; + +/** + * 加密文件判断工具类 + */ +@Component +public class EncryptFileUtils { + + private static final Logger logger = LoggerFactory.getLogger(EncryptFileUtils.class); + + @Value("${file.path}") + private String filePath;//文件存储路径 + + public static final String ENCRYPT_FILE_HEX ="18 1B 03 1A 15 10 19 7C 0A 19 0E 7C 6F 72 6C 5F 5C 5C 5C 5C 5C 5C 5C C3 AD E5 AF 5C 5C 5C 5C 5C 8F EF EF 80 B5 AE 85 B3 94 86 A7 8C 86 E3 A2 FC B5 B4 83 8A B7 8B A9 87 F2 F1 BC F5 8E BF 90 E3 A4 86 8F 8B 94 FC A7 90 A4 EF 87 BC B6 8F 89 B1 F4 8E F7 8D 8A B5 8B 9D F3 89 AA 80 B1 90 82 8C 9F B7 85 A9 B0 89 B2 96 B3 B0 A6 B7 B5 8F 93 E1 AD BD E6 AE 8F 95 92 97 8D F0 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 "; + + + + public String checkFileIsEncryFile(AttFileEO fileEO){ + if(fileEO!=null){ + String readFilePath = filePath+fileEO.getFilePath()+fileEO.getFileName(); + boolean readFlag = true; + byte[] b = new byte[160]; + InputStream inputStream = null; + try { + inputStream = new FileInputStream(readFilePath); + inputStream.read(b, 0, 160); + } catch (IOException e) { + logger.error(e.getMessage(),e); + readFlag = false; + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + logger.error(e.getMessage(),e); + } + } + } + String hexString = bytesToHexString(b); + if(readFlag){ + if(StringUtils.isNotBlank(hexString)){ + if(StringUtils.equals(hexString,ENCRYPT_FILE_HEX)){ + return "ENCRYPT"; + }else{ + return "UNENCRYPT"; + } + }else{ + return "READNO"; + } + }else{ + return "READERR"; + } + }else{ + return "NOFILE"; + } + } + + /** + * 将文件头转换成16进制字符串 + * + * @param 原生byte + * @return 16进制字符串 + */ + private static String bytesToHexString(byte[] src) { + StringBuilder stringBuilder = new StringBuilder(); + if (src == null || src.length <= 0) { + return null; + } + for (int i = 0; i < src.length; i++) { + int v = src[i] & 0xFF; + String hv = Integer.toHexString(v); + if (hv.length() < 2) { + stringBuilder.append(0); + } + stringBuilder.append(hv.toUpperCase()).append(" "); + } + return stringBuilder.toString(); + } + + + /** + * 本地写TXT文件 + * @param path + * @param list + */ + public void writeTxt(List list) { + String savePath = filePath+"/TEMPPATH/"+ UUIDUtils.randomSnowflakeID()+".txt"; + BufferedWriter bw = null; + FileWriter fr = null; + try { + //将写入转化为流的形式 + fr = new FileWriter(savePath); + bw = new BufferedWriter(fr); + //一次写一行 + for (String s : list) { + bw.write(s); + bw.newLine(); //换行用 + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (bw != null) { + bw.close(); + } + if (fr != null) { + fr.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + +}