Преглед изворни кода

添加解析二维码原始数据功能

zhuoning пре 3 година
родитељ
комит
1758e5697a

+ 1 - 0
huimv-manage/src/main/java/com/huimv/manage/controller/EarmarkController.java

@@ -1,6 +1,7 @@
 package com.huimv.manage.controller;
 
 import com.huimv.manage.service.IEarmarkService;
+import com.huimv.manage.util.CodeUtil;
 import com.huimv.manage.util.Result;
 import com.huimv.manage.webservice.task.EarmarkTask;
 import lombok.extern.slf4j.Slf4j;

+ 2 - 1
huimv-manage/src/main/java/com/huimv/manage/service/IEarmarkService.java

@@ -2,6 +2,7 @@ package com.huimv.manage.service;
 
 import com.huimv.manage.util.Result;
 
+import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 
 public interface IEarmarkService {
@@ -9,7 +10,7 @@ public interface IEarmarkService {
     Result listEarmark(int pageSize);
 
     //
-    Result getEarmark(int applyId) throws UnsupportedEncodingException;
+    Result getEarmark(int applyId) throws IOException;
 
     //
     Result setUpdateDownState(String earmarkIDs) throws UnsupportedEncodingException;

+ 6 - 2
huimv-manage/src/main/java/com/huimv/manage/service/impl/EarmarkServiceImpl.java

@@ -8,6 +8,7 @@ import com.huimv.manage.dao.entity.EtPackageEntity;
 import com.huimv.manage.dao.repo.EarmarkRepo;
 import com.huimv.manage.dao.repo.PackageRepo;
 import com.huimv.manage.service.IEarmarkService;
+import com.huimv.manage.util.CodeUtil;
 import com.huimv.manage.util.Const;
 import com.huimv.manage.util.Result;
 import com.huimv.manage.util.ResultCode;
@@ -20,6 +21,7 @@ import org.springframework.data.domain.Example;
 import org.springframework.data.domain.ExampleMatcher;
 import org.springframework.stereotype.Service;
 
+import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.sql.Timestamp;
 import java.util.Date;
@@ -44,6 +46,8 @@ public class EarmarkServiceImpl implements IEarmarkService {
     private EarmarkTask earmarkTask;
     @Autowired
     private Soap soap;
+    @Autowired
+    private CodeUtil codeUtil;
 
     /**
      * @Method      : listEarmark
@@ -73,7 +77,7 @@ public class EarmarkServiceImpl implements IEarmarkService {
      * @Time        : 21:14
      */
     @Override
-    public Result getEarmark(int applyId) throws UnsupportedEncodingException {
+    public Result getEarmark(int applyId) throws IOException {
         // 构造请求
         String requestXML = earmarkTask.getRequestEarmarkXML(applyId);
         System.out.println("requestXML="+requestXML);
@@ -97,7 +101,7 @@ public class EarmarkServiceImpl implements IEarmarkService {
             earmarkEntity.setPackageId(earmarkJo.getString("packageId"));
             earmarkEntity.setEarmarkNumber(earmarkJo.getString("earmarkNumber"));
             earmarkEntity.setApplyId(earmarkJo.getString("applyId"));
-            earmarkEntity.setEarmarkData(earmarkJo.getString("earmarkData"));
+            earmarkEntity.setEarmarkData(codeUtil.convertBase64BinaryToHex(earmarkJo.getString("earmarkData")));
             earmarkRepo.saveAndFlush(earmarkEntity);
         }
         return new Result(Const.CODE_OK,"本次下载"+newEarmarkJa.size()+"个新耳标号数据.",false);

+ 43 - 0
huimv-manage/src/main/java/com/huimv/manage/util/CodeUtil.java

@@ -0,0 +1,43 @@
+package com.huimv.manage.util;
+
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import sun.misc.BASE64Decoder;
+
+import java.io.IOException;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Component
+public class CodeUtil {
+    @Autowired
+    private HexUtils hexUtils;
+
+    /**
+     * @Method      : convertBase64BinaryToHex
+     * @Description : 对Base64Binary类型的数据进行转换成16进制数
+     * @Params      : [encodeText]
+     * @Return      : java.lang.String
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2021/11/5       
+     * @Time        : 14:46
+     */
+    public String convertBase64BinaryToHex(String encodeText) throws IOException {
+        if(encodeText == null || StringUtils.isEmpty(encodeText)) {
+            return "";
+        }
+        BASE64Decoder decode = new BASE64Decoder();
+        //base64反向解码
+        byte[] d1 = decode.decodeBuffer(encodeText);
+        //将二进制转换成16进制
+        return hexUtils.parseByte2HexStr(d1).toLowerCase();
+    }
+}

+ 12 - 0
huimv-manage/src/main/java/com/huimv/manage/util/HexUtils.java

@@ -95,4 +95,16 @@ public class HexUtils {
         }
         return sb.toString();
     }
+
+    public String parseByte2HexStr(byte buf[]) {
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < buf.length; i++) {
+            String hex = Integer.toHexString(buf[i] & 0xFF);
+            if (hex.length() == 1) {
+                hex = '0' + hex;
+            }
+            sb.append(hex.toUpperCase());
+        }
+        return sb.toString();
+    }
 }

+ 144 - 15
huimv-manage/src/test/java/com/huimv/manage/controller/ByteTest.java

@@ -1,5 +1,6 @@
 package com.huimv.manage.controller;
 
+import com.huimv.manage.util.CodeUtil;
 import com.huimv.manage.util.HexUtils;
 import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
 import org.junit.jupiter.api.Test;
@@ -74,30 +75,143 @@ public class ByteTest {
 
     @Test
     public void test3() {
-        String str = "a5a0894c4c063803680178006002a001b003680220057505921e223441de93c6";
-        //BASE64编码与解码
-        String encode = DatatypeConverter.printBase64Binary(str.getBytes());
-        System.out.println("1="+encode);
-        byte[] decode= DatatypeConverter.parseBase64Binary(encode);
-        System.out.println("2="+new String(decode));
+//        String hexStr = "e5";
+//        String data = hexUtils.convertHexToString(hexStr);
+//        System.out.println("data="+data);
+//        String[] hex2=new String[32];
+        String d1 = "";
+        for(int a=0;a<16;a++){
+//            hex2[a]="e5";
+            d1+=hexUtils.convertHexToString("a5");
+        }
+//        System.out.println("d1="+d1+",length="+d1.length());
+//        String encode = d1;
+//        String str = "a5a0894c4c063803680178006002a001b003680220057505921e223441de93c6";
+//        System.out.println("0="+str+" length="+str.length());
+//        //BASE64编码与解码
+//        String encode = DatatypeConverter.printBase64Binary(str.getBytes());
+//        System.out.println("1="+encode+" length="+encode.length());
+//
+//        String encode2 = DatatypeConverter.printBase64Binary(encode.getBytes());
+//        System.out.println("2="+encode2+" length="+encode2.length());
+//
+//        String encode3 = DatatypeConverter.printBase64Binary(encode2.getBytes());
+//        System.out.println("3="+encode3+" length="+encode3.length());
+
+//        String encode = "haQcTLQHKACAACADYAKoAegBUABoBwMy20ruynTJi94=";
+//        System.out.println("base64="+encode);
+//
+//        //一次解码
+//        byte[] decode1= DatatypeConverter.parseBase64Binary(encode);
+//        String text1 = new String(decode1);
+//        System.out.println("text1="+text1);
+//
+//        //二次解码
+//        byte[] decode2= DatatypeConverter.parseBase64Binary(text1);
+//        System.out.println("text2="+new String(decode2));
 
         //16进制编码与解码
-        String encode1 = DatatypeConverter.printHexBinary(str.getBytes());
-        System.out.println("3="+encode1);
-        byte[] decode1= DatatypeConverter.parseHexBinary(encode1);
-        System.out.println("4="+new String(decode1));
+//        String encode1 = DatatypeConverter.printHexBinary(str.getBytes());
+//        System.out.println("3="+encode1);
+//        byte[] decode1= DatatypeConverter.parseHexBinary(encode1);
+//        System.out.println("4="+new String(decode1));
     }
 
     @Test
     public void test4() throws IOException {
-        String data = "a5a0894c4c063803680178006002a001b003680220057505921e223441de93c6";
-        BASE64Encoder encoder = new BASE64Encoder();
-        String e1 = encoder.encode(data.getBytes("UTF-8"));
-        System.out.println("e1="+e1);
+//        String data = "a5a0894c4c063803680178006002a001b003680220057505921e223441de93c6";
+//        BASE64Encoder encoder = new BASE64Encoder();
+//        String e1 = encoder.encode(data.getBytes("UTF-8"));
+//        System.out.println("e1="+e1);
 
+        String e1 = "tbrxwmAGGAFAADACIADQA+ADSADwBQCGfzde9xKKm9Q=";
         BASE64Decoder decode = new BASE64Decoder();
         byte[] d1 = decode.decodeBuffer(e1);
         System.out.println("d1="+new String(d1));
+        String hexStr = hexUtils.parseByte2HexStr(d1);
+        System.out.println("二进制转成="+hexStr.toLowerCase()+" length="+hexStr.length());
+        String sourceData = "b5baf1c260061801400030022000d003e0034800f00500867f375ef7128a9bd4";
+        if(hexStr.trim().equalsIgnoreCase(sourceData)){
+            System.out.println("相等");
+        }else{
+            System.out.println("不等");
+        }
+
+        byte[] d2 = decode.decodeBuffer(new String(d1));
+        System.out.println("d2="+new String(d2));
+        //+++++++++++++++++++++++++++++++++++++++++++++++++++++
+        String hexStr1 = hexUtils.parseByte2HexStr(d2);
+        System.out.println("二次解码hexStr1="+hexStr1);
+    }
+
+    @Test
+    public void test42() throws IOException {
+//        String data = "a5a0894c4c063803680178006002a001b003680220057505921e223441de93c6";
+//        BASE64Encoder encoder = new BASE64Encoder();
+//        String e1 = encoder.encode(data.getBytes("UTF-8"));
+//        System.out.println("e1="+e1);
+
+        String e1 = "jb7L12gAeAFYAXgBcALAAZgDAAAQAiinnZH+VIu9684=";
+        BASE64Decoder decode = new BASE64Decoder();
+        byte[] d1 = decode.decodeBuffer(e1);
+        System.out.println("d1="+new String(d1));
+        String hexStr = hexUtils.parseByte2HexStr(d1);
+        System.out.println("二进制转成="+hexStr.toLowerCase()+" length="+hexStr.length());
+        String sourceData = "b5baf1c260061801400030022000d003e0034800f00500867f375ef7128a9bd4";
+        if(hexStr.trim().equalsIgnoreCase(sourceData)){
+            System.out.println("相等");
+        }else{
+            System.out.println("不等");
+        }
+
+        byte[] d2 = decode.decodeBuffer(new String(d1));
+        System.out.println("d2="+new String(d2));
+        //+++++++++++++++++++++++++++++++++++++++++++++++++++++
+        String hexStr1 = hexUtils.parseByte2HexStr(d2);
+        System.out.println("二次解码hexStr1="+hexStr1);
+    }
+    @Autowired
+    private CodeUtil codeUtil;
+
+    @Test
+    public void test42_1() throws IOException {
+        String encode = "tbrxwmAGGAFAADACIADQA+ADSADwBQCGfzde9xKKm9Q=";
+        System.out.println("加密密文:"+encode);
+        String hexData = codeUtil.convertBase64BinaryToHex(encode);
+        System.out.println("解密明文:"+hexData);
+
+//        BASE64Decoder decode = new BASE64Decoder();
+//        byte[] d1 = decode.decodeBuffer(e1);
+//        System.out.println("d1="+new String(d1));
+//        String hexStr = hexUtils.parseByte2HexStr(d1);
+//        System.out.println("二进制转成="+hexStr.toLowerCase()+" length="+hexStr.length());
+        String sourceData = "b5baf1c260061801400030022000d003e0034800f00500867f375ef7128a9bd4";
+        System.out.println("原始数据:"+sourceData);
+        if(hexData.trim().equalsIgnoreCase(sourceData)){
+            System.out.println("相等");
+        }else{
+            System.out.println("不等");
+        }
+
+//        byte[] d2 = decode.decodeBuffer(new String(d1));
+//        System.out.println("d2="+new String(d2));
+//        //+++++++++++++++++++++++++++++++++++++++++++++++++++++
+//        String hexStr1 = hexUtils.parseByte2HexStr(d2);
+//        System.out.println("二次解码hexStr1="+hexStr1);
+    }
+
+    @Test
+    public void test41() throws IOException {
+        String base64encodedString = "tbrxwmAGGAFAADACIADQA+ADSADwBQCGfzde9xKKm9Q=";
+        // 解码
+        byte[] base64decodedBytes = org.apache.commons.codec.binary.Base64.decodeBase64(base64encodedString);
+        String data1= new String(base64decodedBytes, "utf-8");
+        System.out.println("字符串1: " + data1);
+
+        // 2次解码
+        byte[] base64decodedBytes2 = org.apache.commons.codec.binary.Base64.decodeBase64(data1);
+        System.out.println("字符串2: " + new String(base64decodedBytes2, "utf-8"));
+
     }
 
 
@@ -231,7 +345,8 @@ public class ByteTest {
         byte[] bytes = d1.getBytes("UTF-8");
 //        String asB64 = Base64.getEncoder().encodeToString(bytes);
 //            System.out.println("asB64="+asB64+",length="+asB64.length());
-
+//xyjMKNqDwjUUxmWHzgdXirQEhophUQccNiiLZTUFudpBA
+//Dh4ceEBFAANPSyh2WssVvWvu0mKllS1gzAusgzc8gL4
     }
 
     @Test
@@ -242,4 +357,18 @@ public class ByteTest {
 //
 //        System.out.println(Arrays.toString(decoded));
     }
+
+    @Test
+    public void test6() throws UnsupportedEncodingException {
+//        String data = "haQcTLQHKACAACADYAKoAegBUABoBwMy20ruynTJi94=";
+//        String base64encodedString = Base64.getEncoder().encodeToString(data.getBytes("utf-8"));
+//        System.out.println("Base64 编码字符串 (基本) :" + base64encodedString);
+
+        String base64encodedString = "haQcTLQHKACAACADYAKoAegBUABoBwMy20ruynTJi94=";
+        // 解码
+        byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);
+        System.out.println("原始字符串: " + new String(base64decodedBytes, "utf-8"));
+        base64encodedString = Base64.getUrlEncoder().encodeToString("runoob?java8".getBytes("utf-8"));
+        System.out.println("Base64 编码字符串 (URL) :" + base64encodedString);
+    }
 }