Prechádzať zdrojové kódy

Merge branch 'feature/1.0.0' of github.com:ab-inbev-apac/abi-cloud-qr-platform into feature/1.0.0

tanzhongran 3 rokov pred
rodič
commit
2ac5253191

+ 1 - 6
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/infrastructure/event/CodePackageCreateListener.java

@@ -5,16 +5,12 @@ import com.abi.qms.platform.dao.entity.QrPackage;
 import com.abi.qms.platform.dao.enums.QrPackageGenerateStatusEnum;
 import com.abi.qms.platform.service.GenerateCodeService;
 import com.abi.qms.platform.service.QrPackageService;
-import com.abi.task.common.api.exception.BusinessException;
-import freemarker.template.TemplateException;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.event.EventListener;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
-import java.io.IOException;
-
 
 @Slf4j
 @Component
@@ -28,10 +24,9 @@ public class CodePackageCreateListener {
 
     @EventListener
     @Async
-    public void onApplicationEvent(final CodePackageCreateEvent event) throws InterruptedException, IOException, TemplateException {
+    public void onApplicationEvent(final CodePackageCreateEvent event) {
         log.info("CodePackageCreateListener begin");
         Long qrPackageId = (Long) event.getSource();
-
         try {
             // 生成码
             generateCodeService.generateQrCode(qrPackageId);

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

@@ -124,16 +124,13 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
      */
     @Override
     public void generateQrCode(Long qrPackageId) {
-        log.info("1 loopGenerateCode begin -->"+System.currentTimeMillis());
-        log.info("请求参数id为 -->{}",qrPackageId);
-
+        log.debug("请求参数id为 -->{}",qrPackageId);
         //0-查询码包,校验状态,标记生成中
         QrPackage qrPackage = qrPackageMapper.selectById(qrPackageId);
         // 码数据已生成,return
         if (QrPackageGenerateStatusEnum.GENERATE_SUCCESS.is(qrPackage.getGenerateStatus())) {
             return;
         }
-
         //批量添加文件
         ArrayList<File> fileList = new ArrayList<>();
         //md5列表
@@ -144,7 +141,6 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
         // 更改生成状态为生成中
         qrPackage.setGenerateStatus(QrPackageGenerateStatusEnum.GENERATING.getCode());
         qrPackageMapper.updateById(qrPackage);
-        log.info("2 loopGenerateCode update status -->"+System.currentTimeMillis());
 
         //1-准备参数
         //包材厂信息(取二级包材厂id,如果是非一级的包材厂,保存的时候FactoryCoverLevelTwoId这个字段就会填写他自己的id)
@@ -153,7 +149,9 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
         QrBoxCodeFormat qrBoxCodeFormat = qrBoxCodeFormatMapper.selectById(qrPackage.getBoxCodeFormatId());
         //查询拆分数量
         List<QrBoxCodeFormatSplit> split= qrBoxCodeFormatSplitMapper.querySplit(qrBoxCodeFormat.getId(),qrBoxCodeFormat.getQrRepertoryId());
-        Map<Long,QrBoxCodeFormatSplit> splitCache = split.stream().distinct() .collect(Collectors.toMap(QrBoxCodeFormatSplit::getQrRepertoryColumnId, t->t));
+        Map<Long,QrBoxCodeFormatSplit> splitCache = split.stream()
+                .distinct()
+                .collect(Collectors.toMap(QrBoxCodeFormatSplit::getQrRepertoryColumnId, t->t));
         // 码库 & 码库的列
         QrRepertoryVO qrRepertory = qrRepertoryMapper.selectQrRepertoryDetailById(qrBoxCodeFormat.getQrRepertoryId());
         List<QrRepertoryColumnVO> qrRepertoryColumnList = qrRepertory.getQrRepertoryColumnList();
@@ -162,7 +160,6 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
         QueryWrapper<QrPackageBatch> param = new QueryWrapper<>();
         param.eq("package_id", qrPackage.getId());
         List<QrPackageBatch> qrPackageBatches = qrPackageBatchMapper.selectList(param);
-        log.info("3 loopGenerateCode prepared data info -->"+System.currentTimeMillis());
 
         // 存放每列的url
         Map<Long, String> urlMap = new LinkedHashMap<>();
@@ -171,13 +168,11 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
         Map<String, QrRepertorySerialNumber> qrRepertorySerialNumberMap = new LinkedHashMap<>();
         // 处理url和流水号--后续生成码要用到
         getUrlAndSerialNumber(qrRepertoryColumnList, qrRepertoryId, urlMap, qrRepertorySerialNumberMap);
-        log.info("4 loopGenerateCode do some qrcode opts -->"+System.currentTimeMillis());
 
         //2-生成二维码
         log.info("码包的批次列表数量为"+qrPackageBatches.size());
-        for (QrPackageBatch qrPackageBatch:qrPackageBatches) {
-            log.info("进入单个批次: "+JsonUtils.toJson(qrPackageBatch));
-            try{
+        try{
+            for (QrPackageBatch qrPackageBatch:qrPackageBatches) {
                 //计算备用码包数量
                 Long standbyRatio = 0L;
                 if(null != qrPackage.getStandbyRatio() && qrPackage.getStandbyRatio() != 0){
@@ -192,7 +187,6 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
 
                 // 循环生成码
                 List<QrData> codeList = doLoopGenerateCode(qrRepertoryColumnList, qrRepertoryId, urlMap, qrRepertorySerialNumberMap, qrNumber, batchNumber, repeatTimes,qrBoxCodeFormat,splitCache);
-                log.info("5 loopGenerateCode get codeList -->"+System.currentTimeMillis());
                 // 更新码库流水号
                 qrRepertorySerialNumberMap.entrySet().stream().forEach(o->{
                     QrRepertorySerialNumber updateSerialNumber = new QrRepertorySerialNumber()
@@ -203,26 +197,24 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
                 });
                 //转化为tablestore的对象列表
                 List<QrCode> qrCodes = convertToTableStoreEntity(codeList, qrPackageBatch);
-                log.info("6 loopGenerateCode transform tableStoreEntityList -->"+System.currentTimeMillis());
 
                 // table数据库  批量插入
                 asyncTableStoreUtil.mqPutRow(qrCodes);
                 // 累加数量
                 sum = sum + qrCodes.size();
-                log.info("7 loopGenerateCode save tablestore async -->"+System.currentTimeMillis());
                 // 创建码文件
                 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){
-                log.warn("单个批次生成码异常",e);
-                log.warn("qrPackageBatch: "+JsonUtils.toJson(qrPackageBatch));
-                throw e;
-            }
+                // 清除qrCodes,codeList
+                qrCodes.clear();
+                codeList.clear();
 
+            }
+        }catch(Exception e){
+            log.warn("生成码异常",e);
+            log.warn("qrPackageBatch: "+JsonUtils.toJson(qrPackageBatches));
+            throw e;
         }
-        log.info("9 loopGenerateCode all files -->"+System.currentTimeMillis());
-
         //3-保存压缩文件并上传oss
         //压缩后得名字  正式码_预订单号(或者SAP订单号_物料id)_文件内码数量
         String zipName = null;
@@ -232,13 +224,11 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
         }else{
             zipName = "正式码_"+qrPackage.getBookingOrder()+"_"+sum+".zip";
         }
-
         //压缩密码
         String pas = RandomCodeUtils.getStr(6);
         //压缩加密文件
         File file = new File("/code");
         zipEncryption(file, fileList,pas,zipName);
-        log.info("10 loopGenerateCode zip file -->"+System.currentTimeMillis());
 
         //上传阿里云,并更新码包的下载路径 保存zip密码
         try{
@@ -258,9 +248,8 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
         }finally {
             //删除生成文件
             FileUtil.del(file);
+            System.gc();
         }
-        log.info("11 loopGenerateCode upload oss -->"+System.currentTimeMillis());
-
         //3-更改生成状态为已生成
         qrPackage.setGenerateStatus(QrPackageGenerateStatusEnum.GENERATE_SUCCESS.getCode());
         qrPackage.setGenerateTime(LocalDateTime.now());
@@ -321,6 +310,7 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
             os = fileItem.getOutputStream();
             while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) {
                 os.write(buffer, 0, bytesRead);
+                os.flush();
             }
         } catch (IOException e) {
             log.warn("文件读取异常",e);
@@ -340,9 +330,7 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
                 log.warn("文件流关闭失败",e);
             }
         }
-
-        MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
-        return multipartFile;
+        return new CommonsMultipartFile(fileItem);
     }
 
     private List<QrCode> convertToTableStoreEntity(List<QrData> codeList,QrPackageBatch qrPackageBatch){
@@ -484,6 +472,7 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
                     qrRepertorySerialNumberMap.put(qrRepertoryColumnId + "_" + j, qrRepertorySerialNumber);
                 }
             }
+            buildClassArr = null;
         }
     }
 

+ 5 - 0
deployment.yaml

@@ -22,6 +22,11 @@ spec:
       labels:
         app: abi-cloud-qr-platform-service
     spec:
+      nodeName: cn-shanghai.10.182.19.29
+      tolerations:
+      - key: node-role.kubernetes.io/schedule
+        value: mq-platform
+        effect: NoSchedule
       containers:
         - name: abi-cloud-qr-platform-service
           image: registry-vpc.cn-shanghai.aliyuncs.com/ab-inbev-apac/abi-cloud-qr-platform:#version_num#