瀏覽代碼

新增箱码幅面逻辑

luyanwen 3 年之前
父節點
當前提交
648ac56670

+ 36 - 26
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/infrastructure/mq/GenerateCodeConsumer.java

@@ -97,6 +97,9 @@ public class GenerateCodeConsumer {
 	@Autowired
 	private BaseFactoryMapper baseFactoryMapper;
 
+	@Autowired
+	private QrBoxCodeFormatMapper boxCodeFormatMapper;
+
 	//生成码数据
 	final List<QrData> qrDataList = new LinkedList<>();
 
@@ -187,6 +190,9 @@ public class GenerateCodeConsumer {
 			String batchNumber = qrPackageBatch.getBatchNumber();
 			//重复次数
 			int repeatTimes = 0;
+			//获取箱码幅面
+			QrBoxCodeFormat boxCodeFormat = boxCodeFormatMapper.selectById(qrPackageVo.getBoxCodeFormatId());
+			Integer formatNumber = boxCodeFormat.getFormatNumber();
 
 			/**
 			 * qrRepertoryColumnList  码库的列
@@ -198,7 +204,7 @@ public class GenerateCodeConsumer {
 			 * localDateTime 创建时间
 			 */
 			// 循环生成码
-			List<QrData> codeList = loopGenerateCode(qrRepertoryColumnList, qrRepertoryId, urlMap, qrRepertorySerialNumberMap, qrNumber, batchNumber, repeatTimes);
+			List<QrData> codeList = loopGenerateCode(qrRepertoryColumnList, qrRepertoryId, urlMap, qrRepertorySerialNumberMap, qrNumber, batchNumber, repeatTimes,formatNumber);
 
 			// table数据库  批量插入
 			saveTableStore(qrPackageBatch, codeList);
@@ -311,8 +317,9 @@ public class GenerateCodeConsumer {
      * batchNumber 批次号
      * localDateTime 创建时间
      * repeatTimes 失败次数
+	 * formatNumber 幅面数量
      */
-	private List<QrData> loopGenerateCode(List<QrRepertoryColumnVO> qrRepertoryColumnList, Long qrRepertoryId, Map<Long, String> urlMap, Map<String, QrRepertorySerialNumber> qrRepertorySerialNumberMap, Long qrNumber, String batchNumber, int repeatTimes) {
+	private List<QrData> loopGenerateCode(List<QrRepertoryColumnVO> qrRepertoryColumnList, Long qrRepertoryId, Map<Long, String> urlMap, Map<String, QrRepertorySerialNumber> qrRepertorySerialNumberMap, Long qrNumber, String batchNumber, int repeatTimes,Integer formatNumber) {
         LocalDateTime localDateTime = LocalDateTime.now();
 		while (true) {
 			// 计算还需生成的数量
@@ -341,35 +348,38 @@ public class GenerateCodeConsumer {
 						.setCreateTime(localDateTime);
 
 				List<QrInnerData> qrInnerDataList = new LinkedList<>();
-				for (int j = 0; j < qrRepertoryColumnList.size(); j++) {
-					QrRepertoryColumnVO qrRepertoryColumn = qrRepertoryColumnList.get(j);
-					Long qrRepertoryColumnId = qrRepertoryColumn.getId();
-
-					// 判断当前列是否为clone列
-					Integer cloneColumn = qrRepertoryColumn.getCloneColumn();
-					QrInnerData qrInnerData = new QrInnerData();
-					if (cloneColumn.compareTo(-1) == 0) {
-						// 非clone列,设置code和url
-						String code = buildUniqueCode(uniqueSet, qrRepertoryColumn, codeSb, paramMap, qrRepertorySerialNumberMap, 0);
-						String url = urlMap.get(qrRepertoryColumnId);
-						if (code == null) {
-							throw new RuntimeException("生成码失败,重复生成码次数超过" + REPEAT_BUILD_CODE_TIMES + "次");
+				//箱子码幅面
+				for (int a = 0; a < formatNumber; a++) {
+					for (int j = 0; j < qrRepertoryColumnList.size(); j++) {
+						QrRepertoryColumnVO qrRepertoryColumn = qrRepertoryColumnList.get(j);
+						Long qrRepertoryColumnId = qrRepertoryColumn.getId();
+
+						// 判断当前列是否为clone列
+						Integer cloneColumn = qrRepertoryColumn.getCloneColumn();
+						QrInnerData qrInnerData = new QrInnerData();
+						if (cloneColumn.compareTo(-1) == 0) {
+							// 非clone列,设置code和url
+							String code = buildUniqueCode(uniqueSet, qrRepertoryColumn, codeSb, paramMap, qrRepertorySerialNumberMap, 0);
+							String url = urlMap.get(qrRepertoryColumnId);
+							if (code == null) {
+								throw new RuntimeException("生成码失败,重复生成码次数超过" + REPEAT_BUILD_CODE_TIMES + "次");
+							}
+
+							qrInnerData.setCode(code).setUrl(url);
+							qrInnerData.setQrRepertoryColumnId(qrRepertoryColumnId).setSortNumber(qrRepertoryColumn.getSortNumber());
+							qrInnerDataList.add(qrInnerData);
+						} else {
+							// clone列,设置相同的code和url
+							QrInnerData originalQrInnerData = qrInnerDataList.get( a * qrRepertoryColumnList.size() + cloneColumn );
+							qrInnerData.setCode(originalQrInnerData.getCode()).setUrl(originalQrInnerData.getUrl());
+							qrInnerData.setQrRepertoryColumnId(qrRepertoryColumnId).setSortNumber(qrRepertoryColumn.getSortNumber());
+							qrInnerDataList.add(qrInnerData);
 						}
-
-						qrInnerData.setCode(code).setUrl(url);
-						qrInnerData.setQrRepertoryColumnId(qrRepertoryColumnId).setSortNumber(qrRepertoryColumn.getSortNumber());
-						qrInnerDataList.add(qrInnerData);
-					} else {
-						// clone列,设置相同的code和url
-						QrInnerData originalQrInnerData = qrInnerDataList.get(cloneColumn);
-						qrInnerData.setCode(originalQrInnerData.getCode()).setUrl(originalQrInnerData.getUrl());
-						qrInnerData.setQrRepertoryColumnId(qrRepertoryColumnId).setSortNumber(qrRepertoryColumn.getSortNumber());
-						qrInnerDataList.add(qrInnerData);
 					}
 				}
-
 				qrData.setInnerDataList(qrInnerDataList);
 				qrDataList.add(qrData);
+
 			}
 
 			try {