瀏覽代碼

文件生成根据箱码or盖码

tanzhongran 3 年之前
父節點
當前提交
a4cd1e434f

+ 18 - 7
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/GenerateCodeServiceImpl.java

@@ -45,6 +45,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.time.LocalDateTime;
 import java.util.*;
@@ -201,7 +202,7 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
                 log.info("7 loopGenerateCode save tablestore async -->"+System.currentTimeMillis());
 
                 // 创建码文件
-                String md5 = createCodeFile(coverFactory,qrRepertory,splitCache, batchNumber, qrBoxCodeFormat, fileList, codeList);
+                String md5 = createCodeFile(qrPackage,coverFactory,qrRepertory,splitCache, batchNumber, qrBoxCodeFormat, fileList, codeList);
                 fileVerifyMd5List.add(md5);
                 log.info("8 loopGenerateCode create file -->"+System.currentTimeMillis());
             }catch(Exception e){
@@ -235,9 +236,9 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
         //上传阿里云,并更新码包的下载路径 保存zip密码
         try{
             MultipartFile multipartFile = toMultipartFile(file.getPath()+"/"+zipName, zipName);
-            Object returDat = basicServiceClient.uploadFileOss(multipartFile);
-            if(null != returDat){
-                Map<String,Object> result =(Map<String, Object>)returDat;
+            Object returnData = basicServiceClient.uploadFileOss(multipartFile);
+            if(null != returnData){
+                Map<String,Object> result =(Map<String, Object>)returnData;
                 //放入oss地址
                 qrPackage.setDownloadPath(null ==  result.get("data") ? "" :(String) result.get("data"));
             }
@@ -500,7 +501,7 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
     /**
      * 创建码文件
      */
-    private String createCodeFile(BaseFactory coverFactory, QrRepertoryVO qrRepertory,
+    private String createCodeFile(QrPackage qrPackage,BaseFactory coverFactory, QrRepertoryVO qrRepertory,
                                   Map<Long,QrBoxCodeFormatSplit> splitCache,String batchNumber,QrBoxCodeFormat boxCodeFormat,
                                   ArrayList<File> fileList,List<QrData> codeList) {
         List<QrRepertoryColumnVO> qrRepertoryColumnList = qrRepertory.getQrRepertoryColumnList();
@@ -535,7 +536,12 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
         }
         content.append("\r\n");
 
-        // 2-第二行开始拼接码
+        // 2-第二行放固定的校验密钥;密钥样式为:ABI I-QMS,放置于码包内第二行
+        String checkInfo = AesEncodeUtil.aesEncode("ABI I-QMS", encodeKey);
+        content.append(checkInfo);
+        content.append("\r\n");
+
+        // 2-第三行开始拼接码
         for (QrData qrData : codeList) {
             List<String> codeTextList = new ArrayList<>();
             for(QrInnerData qrInnerData:qrData.getInnerDataList()){
@@ -582,8 +588,13 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
             log.error("创建文件异常",e);
         }
 
+        //箱码码包输出格式为:GBK文本格式;盖码码包输出格式为:UTF-8格式
+        Charset charset = StandardCharsets.UTF_8;
+        if(QrTypeEnum.CARTON.is(qrPackage.getQrType())){
+            charset = Charset.forName("GBK");
+        }
         // 生成txt
-        FileWriter fileWriter = new FileWriter(file.getPath()+"/"+ batchNumber + ".txt");
+        FileWriter fileWriter = new FileWriter(file.getPath()+"/"+ batchNumber + ".txt", charset);
         fileWriter.write(contentText);
         fileList.add(new File(file.getPath()+"/"+ batchNumber + ".txt"));