Browse Source

预览生成流水号不记录到数据库

master
han\hanst 10 months ago
parent
commit
568dbc0ef5
  1. 6
      src/main/java/com/gaotao/modules/base/controller/LabelSettingController.java
  2. 81
      src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java
  3. 10
      src/main/java/com/gaotao/modules/base/service/Impl/ReportLabelListServiceImpl.java
  4. 9
      src/main/java/com/gaotao/modules/base/service/LabelDataProcessorService.java
  5. 4
      src/main/java/com/gaotao/modules/base/service/ReportLabelListService.java

6
src/main/java/com/gaotao/modules/base/controller/LabelSettingController.java

@ -842,10 +842,10 @@ public class LabelSettingController extends AbstractController {
String site = params.get("site").toString();
String username = params.get("username").toString();
String originalLabelNo = params.get("originalLabelNo").toString();
// 调用服务层方法复制标签
String newLabelNo = baseService.copyLabelSetting(site, username, originalLabelNo);
return R.ok()
.put("code", 200)
.put("msg", "标签复制成功")
@ -872,7 +872,7 @@ public class LabelSettingController extends AbstractController {
return R.error("标签ID不能为空");
}
// 使用真实数据生成ZPL代码预览
String zplCode = reportLabelListService.previewLabelWithRealData(reportId);
String zplCode = reportLabelListService.previewLabelWithRealData(reportId,false);
log.info("使用真实数据的ZPL代码生成成功,长度: {}", zplCode != null ? zplCode.length() : 0);
return R.ok()
.put("code", 200)

81
src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java

@ -6,6 +6,7 @@ import com.gaotao.modules.base.service.LabelDataProcessorService;
import com.gaotao.modules.base.utils.CoordinateTransformer;
import com.gaotao.modules.base.utils.ZplGenerator;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -40,7 +41,7 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
private com.gaotao.modules.base.service.FontService fontService;
@Override
public List<ReportLabelList> processLabelData(List<ReportLabelList> elements, Map<String, Object> dataMap) {
public List<ReportLabelList> processLabelData(List<ReportLabelList> elements, Map<String, Object> dataMap,Boolean printFlag) {
if (elements == null || elements.isEmpty()) {
return elements;
}
@ -50,13 +51,13 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
// 第一轮处理处理基本数据替换不包含元素组合
List<ReportLabelList> firstPassElements = new ArrayList<>();
for (ReportLabelList element : elements) {
ReportLabelList processedElement = processElementData(element, dataMap,true);
ReportLabelList processedElement = processElementData(element, dataMap,true, printFlag);
firstPassElements.add(processedElement);
}
// 第二轮处理处理元素组合引用
for (ReportLabelList element : firstPassElements) {
ReportLabelList finalElement = processElementCombinations(element, dataMap, firstPassElements);
ReportLabelList finalElement = processElementCombinations(element, dataMap, firstPassElements, printFlag);
// 如果元素被设置为不显示则跳过该元素
if (("onecode".equals(element.getType()) || "qrcode".equals(element.getType())
@ -76,7 +77,7 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
* 处理元素组合引用
*/
private ReportLabelList processElementCombinations(ReportLabelList element, Map<String, Object> dataMap,
List<ReportLabelList> allElements) {
List<ReportLabelList> allElements,Boolean printFlag) {
if (element == null || element.getData() == null || element.getData().isEmpty()) {
return element;
}
@ -86,7 +87,7 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
// 检查是否包含元素引用
if (containsElementReferences(originalData)) {
ReportLabelList processedElement = copyElement(element);
String combinedData = processElementCombination(originalData, dataMap, allElements, element);
String combinedData = processElementCombination(originalData, dataMap, allElements, element, printFlag);
processedElement.setData(combinedData);
log.debug("处理元素组合: 原始数据={}, 组合后数据={}", originalData, combinedData);
return processedElement;
@ -109,7 +110,7 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
}
@Override
public ReportLabelList processElementData(ReportLabelList element, Map<String, Object> dataMap,Boolean nextSeqNotExist) {
public ReportLabelList processElementData(ReportLabelList element, Map<String, Object> dataMap,Boolean nextSeqNotExist,Boolean printFlag) {
if (element == null || element.getData() == null || element.getData().isEmpty()) {
return element;
}
@ -151,7 +152,7 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
break;
case "serialNumber":
// 处理流水号元素生成真实的流水号
processedElement.setData(processSerialNumberElement(element, dataMap,nextSeqNotExist));
processedElement.setData(processSerialNumberElement(element, dataMap,nextSeqNotExist, printFlag));
break;
case "pic":
break;
@ -165,10 +166,10 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
}
@Override
public String generateZplWithData(List<ReportLabelList> elements, Map<String, Object> dataMap, LabelSettingData labelSetting) {
public String generateZplWithData(List<ReportLabelList> elements, Map<String, Object> dataMap, LabelSettingData labelSetting,Boolean printFlag) {
try {
// 1. 处理数据替换和格式化
List<ReportLabelList> processedElements = processLabelData(elements, dataMap);
List<ReportLabelList> processedElements = processLabelData(elements, dataMap, printFlag);
// 2. 创建画布尺寸
CoordinateTransformer.CanvasSize canvasSize = createCanvasSize(labelSetting);
@ -211,7 +212,7 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
* 支持将多个元素的内容按特定格式组合
*/
private String processElementCombination(String originalData, Map<String, Object> dataMap,
List<ReportLabelList> allElements, ReportLabelList currentElement) {
List<ReportLabelList> allElements, ReportLabelList currentElement,Boolean printFlag) {
if (originalData == null || originalData.isEmpty()) {
return originalData;
}
@ -252,7 +253,7 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
ReportLabelList referencedElement = findElementByReference(reference, elementMap);
if (referencedElement != null) {
// 递归处理引用的元素数据
replacement = processElementData(referencedElement, dataMap,false).getData();
replacement = processElementData(referencedElement, dataMap,false, printFlag).getData();
if (replacement == null) {
replacement = "";
}
@ -968,11 +969,11 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
* @param dataMap 数据源映射
* @return 生成的流水号字符串
*/
private String processSerialNumberElement(ReportLabelList element, Map<String, Object> dataMap,Boolean nextSeqNotExist) {
private String processSerialNumberElement(ReportLabelList element, Map<String, Object> dataMap,Boolean nextSeqNotExist,Boolean printFlag) {
try {
log.debug("开始处理流水号元素: itemNo={}, data={}", element.getItemNo(), element.getData());
if (element.getParentSerialLabelNo() != null) {
if (element.getParentSerialLabelNo() != null && StringUtils.isNotBlank(element.getParentSerialLabelNo())) {
ReportLabelList parentElement = baseService.getReportLabelListByLabelNo(element.getParentSerialLabelNo());
if (parentElement==null) {
throw new RuntimeException("父标签流水号已发生修改,请重新选择");
@ -1003,7 +1004,7 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
log.debug("生成的KeyInfo: {}", keyInfo);
// 3. 获取或生成下一个流水号
int nextSeqNo = getNextSerialNumber(element.getReportId(), element.getItemNo(), keyInfo, intervalValue,nextSeqNotExist);
int nextSeqNo = getNextSerialNumber(element.getReportId(), element.getItemNo(), keyInfo, intervalValue,nextSeqNotExist, printFlag);
log.debug("获取的下一个流水号: {}", nextSeqNo);
// 4. 格式化流水号
@ -1084,9 +1085,11 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
* @param itemNo 项目编号
* @param keyInfo 关键信息
* @param intervalValue 步长
* @param nextSeqNotExist 如果不存在则新增
* @param printFlag 是否是打印操作打印才修改流水号预览不会修改数据库
* @return 下一个流水号
*/
private int getNextSerialNumber(String reportId, Integer itemNo, String keyInfo, int intervalValue,Boolean nextSeqNotExist) {
private int getNextSerialNumber(String reportId, Integer itemNo, String keyInfo, int intervalValue,Boolean nextSeqNotExist,Boolean printFlag) {
try {
// 查询现有的流水号信息
com.gaotao.modules.base.entity.LabelContentData query = new com.gaotao.modules.base.entity.LabelContentData();
@ -1109,31 +1112,31 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
if (matchingInfo != null) {
// 存在记录递增流水号
nextSeqNo = matchingInfo.getLastSeqNo() + intervalValue;
// 更新数据库记录
com.gaotao.modules.base.entity.LabelContentSerialInfoData updateInfo = new com.gaotao.modules.base.entity.LabelContentSerialInfoData();
updateInfo.setLabelNo(reportId);
updateInfo.setItemNo(itemNo);
updateInfo.setKeyInfo(keyInfo);
updateInfo.setLastSeqNo(nextSeqNo);
updateInfo.setOriKeyInfo(keyInfo); // 用于WHERE条件
baseService.updateLabelSerialInfo(updateInfo);
log.debug("更新流水号记录: reportId={}, itemNo={}, keyInfo={}, lastSeqNo={}",
reportId, itemNo, keyInfo, nextSeqNo);
if (printFlag) {
// 更新数据库记录
com.gaotao.modules.base.entity.LabelContentSerialInfoData updateInfo = new com.gaotao.modules.base.entity.LabelContentSerialInfoData();
updateInfo.setLabelNo(reportId);
updateInfo.setItemNo(itemNo);
updateInfo.setKeyInfo(keyInfo);
updateInfo.setLastSeqNo(nextSeqNo);
updateInfo.setOriKeyInfo(keyInfo); // 用于WHERE条件
baseService.updateLabelSerialInfo(updateInfo);
log.debug("更新流水号记录: reportId={}, itemNo={}, keyInfo={}, lastSeqNo={}",
reportId, itemNo, keyInfo, nextSeqNo);
}
} else {
// 不存在记录创建新记录
nextSeqNo = intervalValue; // 从步长开始
com.gaotao.modules.base.entity.LabelContentSerialInfoData newInfo = new com.gaotao.modules.base.entity.LabelContentSerialInfoData();
newInfo.setLabelNo(reportId);
newInfo.setItemNo(itemNo);
newInfo.setKeyInfo(keyInfo);
newInfo.setLastSeqNo(nextSeqNo);
baseService.insertLabelSerialInfo(newInfo);
log.debug("创建流水号记录: reportId={}, itemNo={}, keyInfo={}, lastSeqNo={}",
reportId, itemNo, keyInfo, nextSeqNo);
if (printFlag) {
com.gaotao.modules.base.entity.LabelContentSerialInfoData newInfo = new com.gaotao.modules.base.entity.LabelContentSerialInfoData();
newInfo.setLabelNo(reportId);
newInfo.setItemNo(itemNo);
newInfo.setKeyInfo(keyInfo);
newInfo.setLastSeqNo(nextSeqNo);
baseService.insertLabelSerialInfo(newInfo);
log.debug("创建流水号记录: reportId={}, itemNo={}, keyInfo={}, lastSeqNo={}",
reportId, itemNo, keyInfo, nextSeqNo);
}
}
} else {
nextSeqNo = matchingInfo!=null?matchingInfo.getLastSeqNo(): intervalValue; // 如果不存在记录则使用步长作为初始值
@ -1218,7 +1221,7 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
}
@Override
public String generateZplWithRealData(String reportId, List<ReportLabelList> elements, LabelSettingData labelSetting) {
public String generateZplWithRealData(String reportId, List<ReportLabelList> elements, LabelSettingData labelSetting,Boolean printFlag) {
try {
log.info("开始根据ReportId获取真实数据并生成ZPL: reportId={}", reportId);
@ -1277,7 +1280,7 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
log.info("合并后的真实数据,总字段数: {}", realDataMap.size());
// 4. 使用真实数据生成ZPL
return generateZplWithData(elements, realDataMap, labelSetting);
return generateZplWithData(elements, realDataMap, labelSetting, printFlag);
} catch (Exception e) {
log.error("根据ReportId获取真实数据并生成ZPL失败: reportId={}, error={}", reportId, e.getMessage(), e);

10
src/main/java/com/gaotao/modules/base/service/Impl/ReportLabelListServiceImpl.java

@ -171,7 +171,7 @@ public class ReportLabelListServiceImpl extends ServiceImpl<ReportLabelListMappe
}
try {
// 1. 生成带真实数据的ZPL代码
String zplCode = previewLabelWithRealData(printRequest.getReportId());
String zplCode = previewLabelWithRealData(printRequest.getReportId(),true);
printRequest.setZplCode(zplCode);
// 2. 验证ZPL代码
@ -471,7 +471,7 @@ public class ReportLabelListServiceImpl extends ServiceImpl<ReportLabelListMappe
}
@Override
public List<ReportLabelList> getProcessedElements(String reportId, Map<String, Object> dataMap) {
public List<ReportLabelList> getProcessedElements(String reportId, Map<String, Object> dataMap,Boolean printFlag) {
try {
// 获取标签元素
List<ReportLabelList> elements = getZplElements(reportId);
@ -480,7 +480,7 @@ public class ReportLabelListServiceImpl extends ServiceImpl<ReportLabelListMappe
}
// 处理数据替换和格式化
List<ReportLabelList> processedElements = labelDataProcessorService.processLabelData(elements, dataMap);
List<ReportLabelList> processedElements = labelDataProcessorService.processLabelData(elements, dataMap, printFlag);
log.info("标签元素处理成功,reportId: {}, 元素数: {}, 数据字段数: {}",
reportId, processedElements.size(), dataMap.size());
@ -494,7 +494,7 @@ public class ReportLabelListServiceImpl extends ServiceImpl<ReportLabelListMappe
}
@Override
public String previewLabelWithRealData(String reportId) {
public String previewLabelWithRealData(String reportId,Boolean printFlag) {
try {
log.info("开始使用真实数据预览标签: reportId={}", reportId);
@ -516,7 +516,7 @@ public class ReportLabelListServiceImpl extends ServiceImpl<ReportLabelListMappe
LabelSettingData labelSetting = labelSettingDataList.get(0);
// 使用真实数据生成ZPL代码
String zplCode = labelDataProcessorService.generateZplWithRealData(reportId, elements, labelSetting);
String zplCode = labelDataProcessorService.generateZplWithRealData(reportId, elements, labelSetting,printFlag);
log.info("使用真实数据的标签预览生成成功,reportId: {}", reportId);
return zplCode;

9
src/main/java/com/gaotao/modules/base/service/LabelDataProcessorService.java

@ -17,7 +17,7 @@ public interface LabelDataProcessorService {
* @param dataMap 数据源映射key为字段名value为实际值
* @return 处理后的标签元素列表
*/
List<ReportLabelList> processLabelData(List<ReportLabelList> elements, Map<String, Object> dataMap);
List<ReportLabelList> processLabelData(List<ReportLabelList> elements, Map<String, Object> dataMap,Boolean printFlag);
/**
* 处理单个标签元素的数据
@ -26,7 +26,7 @@ public interface LabelDataProcessorService {
* @param nextSeqNotExist 是否存在下一个序列号
* @return 处理后的标签元素
*/
ReportLabelList processElementData(ReportLabelList element, Map<String, Object> dataMap,Boolean nextSeqNotExist);
ReportLabelList processElementData(ReportLabelList element, Map<String, Object> dataMap,Boolean nextSeqNotExist,Boolean printFlag);
/**
* 生成带真实数据的ZPL代码
@ -35,7 +35,7 @@ public interface LabelDataProcessorService {
* @param labelSetting 标签设置
* @return ZPL代码
*/
String generateZplWithData(List<ReportLabelList> elements, Map<String, Object> dataMap, LabelSettingData labelSetting);
String generateZplWithData(List<ReportLabelList> elements, Map<String, Object> dataMap, LabelSettingData labelSetting,Boolean printFlag);
/**
* 格式化数字数据
@ -60,7 +60,8 @@ public interface LabelDataProcessorService {
* @param reportId 报告ID
* @param elements 标签元素列表
* @param labelSetting 标签设置
* @param printFlag 打印标志
* @return 处理后的ZPL代码
*/
String generateZplWithRealData(String reportId, List<ReportLabelList> elements, LabelSettingData labelSetting);
String generateZplWithRealData(String reportId, List<ReportLabelList> elements, LabelSettingData labelSetting,Boolean printFlag);
}

4
src/main/java/com/gaotao/modules/base/service/ReportLabelListService.java

@ -22,13 +22,13 @@ public interface ReportLabelListService extends IService<ReportLabelList> {
* @param dataMap 数据源映射
* @return 处理后的标签元素列表
*/
List<ReportLabelList> getProcessedElements(String reportId, Map<String, Object> dataMap);
List<ReportLabelList> getProcessedElements(String reportId, Map<String, Object> dataMap,Boolean printFlag);
/**
* 使用真实数据预览标签从数据库视图获取数据
* @param reportId 标签ID
* @return 预览用的ZPL代码
*/
String previewLabelWithRealData(String reportId);
String previewLabelWithRealData(String reportId,Boolean printFlag);
}
Loading…
Cancel
Save