|
@@ -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 {
|