|
|
|
@ -6,6 +6,7 @@ import com.gaotao.modules.base.dao.BaseMapper; |
|
|
|
import com.gaotao.modules.base.dao.ProcedureMapper; |
|
|
|
import com.gaotao.modules.base.entity.*; |
|
|
|
import com.gaotao.modules.base.service.BaseService; |
|
|
|
import com.gaotao.modules.base.dao.ReportLabelListMapper; |
|
|
|
import com.gaotao.modules.sys.service.SysMsgService; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
@ -15,6 +16,7 @@ import java.util.ArrayList; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
|
|
|
|
|
|
|
|
@Service |
|
|
|
@ -25,6 +27,8 @@ public class BaseServiceImpl implements BaseService { |
|
|
|
private ProcedureMapper procedureMapper; |
|
|
|
@Autowired |
|
|
|
private SysMsgService sysMsgService; |
|
|
|
@Autowired |
|
|
|
private ReportLabelListMapper reportLabelListMapper; |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<LabelSettingData> getLabelSettingList(LabelSettingData inData) { |
|
|
|
@ -900,6 +904,176 @@ public class BaseServiceImpl implements BaseService { |
|
|
|
return baseMapper.getReportLabelListByLabelNo(labelNo); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public String copyLabelSetting(String site, String username, String originalLabelNo) { |
|
|
|
// 1. 检查原标签是否存在 |
|
|
|
LabelSettingData originalLabel = baseMapper.getLabelSettingByLabelNo(originalLabelNo); |
|
|
|
if (originalLabel == null) { |
|
|
|
throw new XJException("原标签不存在: " + originalLabelNo); |
|
|
|
} |
|
|
|
|
|
|
|
// 2. 生成新的标签编号 |
|
|
|
String newLabelNo = this.getLabelSettingLabelNo(); |
|
|
|
|
|
|
|
// 3. 复制标签基本信息 |
|
|
|
LabelSettingData newLabelData = new LabelSettingData(); |
|
|
|
newLabelData.setLabelNo(newLabelNo); |
|
|
|
newLabelData.setLabelType(originalLabel.getLabelType()); |
|
|
|
newLabelData.setLabelName(originalLabel.getLabelName()); |
|
|
|
newLabelData.setLabelClass(originalLabel.getLabelClass()); |
|
|
|
newLabelData.setRemark("复制("+originalLabel.getLabelType()+originalLabelNo+")"); |
|
|
|
newLabelData.setPrintDirection(originalLabel.getPrintDirection()); |
|
|
|
newLabelData.setRfidFlag(originalLabel.getRfidFlag()); |
|
|
|
newLabelData.setPaperSize(originalLabel.getPaperSize()); |
|
|
|
newLabelData.setZplCode(originalLabel.getZplCode()); |
|
|
|
newLabelData.setPaperOrientation(originalLabel.getPaperOrientation()); |
|
|
|
newLabelData.setDpi(originalLabel.getDpi()); |
|
|
|
newLabelData.setCanvasWidth(originalLabel.getCanvasWidth()); |
|
|
|
newLabelData.setCanvasHeight(originalLabel.getCanvasHeight()); |
|
|
|
newLabelData.setPhysicalWidthMm(originalLabel.getPhysicalWidthMm()); |
|
|
|
newLabelData.setPhysicalHeightMm(originalLabel.getPhysicalHeightMm()); |
|
|
|
// 插入新标签基本信息 |
|
|
|
baseMapper.insertLabelSetting(newLabelData); |
|
|
|
|
|
|
|
// 4. 复制标签绘制内容(ZPL元素) |
|
|
|
this.copyLabelElements(originalLabelNo, newLabelNo); |
|
|
|
return newLabelNo; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @description: 复制标签绘制元素 |
|
|
|
* @author Kiro |
|
|
|
* @date 2025/01/25 |
|
|
|
* @version 1.0 |
|
|
|
*/ |
|
|
|
private void copyLabelElements(String originalLabelNo, String newLabelNo) { |
|
|
|
try { |
|
|
|
// 直接使用 Mapper 获取原标签的所有绘制元素 |
|
|
|
List<ReportLabelList> originalElements = reportLabelListMapper.selectList( |
|
|
|
new com.baomidou.mybatisplus.core.conditions.query.QueryWrapper<ReportLabelList>() |
|
|
|
.eq("report_id", originalLabelNo) |
|
|
|
); |
|
|
|
|
|
|
|
if (originalElements != null && !originalElements.isEmpty()) { |
|
|
|
// 复制每个元素并直接保存 |
|
|
|
java.util.concurrent.atomic.AtomicInteger counter = new java.util.concurrent.atomic.AtomicInteger(1); |
|
|
|
|
|
|
|
for (ReportLabelList originalElement : originalElements) { |
|
|
|
ReportLabelList newElement = new ReportLabelList(); |
|
|
|
|
|
|
|
// 复制所有属性 |
|
|
|
newElement.setReportId(newLabelNo); // 设置新的标签编号 |
|
|
|
newElement.setLabelNo(newLabelNo + "-" + counter.getAndIncrement()); |
|
|
|
newElement.setType(originalElement.getType()); |
|
|
|
newElement.setX(originalElement.getX()); |
|
|
|
newElement.setY(originalElement.getY()); |
|
|
|
newElement.setData(originalElement.getData()); |
|
|
|
newElement.setFontSize(originalElement.getFontSize()); |
|
|
|
newElement.setHeight(originalElement.getHeight()); |
|
|
|
newElement.setWidth(originalElement.getWidth()); |
|
|
|
newElement.setBold(originalElement.getBold()); |
|
|
|
newElement.setNewline(originalElement.getNewline()); |
|
|
|
newElement.setLineRows(originalElement.getLineRows()); |
|
|
|
newElement.setLineWidth(originalElement.getLineWidth()); |
|
|
|
newElement.setItemNo(originalElement.getItemNo()); |
|
|
|
newElement.setBarcodeType(originalElement.getBarcodeType()); |
|
|
|
newElement.setShowContent(originalElement.getShowContent()); |
|
|
|
newElement.setShowElement(originalElement.getShowElement()); |
|
|
|
newElement.setShowMainSeq(originalElement.getShowMainSeq()); |
|
|
|
newElement.setSeqName(originalElement.getSeqName()); |
|
|
|
newElement.setIsChecked(originalElement.getIsChecked()); |
|
|
|
newElement.setDecimalPlaces(originalElement.getDecimalPlaces()); |
|
|
|
newElement.setShowDecimalPlaces(originalElement.getShowDecimalPlaces()); |
|
|
|
newElement.setThousandsSeparator(originalElement.getThousandsSeparator()); |
|
|
|
newElement.setDigits(originalElement.getDigits()); |
|
|
|
newElement.setStep(originalElement.getStep()); |
|
|
|
|
|
|
|
// 复制新增的数据类型相关字段 |
|
|
|
newElement.setDataType(originalElement.getDataType()); |
|
|
|
newElement.setDateExtractType(originalElement.getDateExtractType()); |
|
|
|
newElement.setFirstWeekDate(originalElement.getFirstWeekDate()); |
|
|
|
newElement.setFirstDayOfWeek(originalElement.getFirstDayOfWeek()); |
|
|
|
newElement.setDateFormat(originalElement.getDateFormat()); |
|
|
|
newElement.setDateSeparator(originalElement.getDateSeparator()); |
|
|
|
newElement.setYearDigits(originalElement.getYearDigits()); |
|
|
|
newElement.setMonthDayDigits(originalElement.getMonthDayDigits()); |
|
|
|
newElement.setStringProcessType(originalElement.getStringProcessType()); |
|
|
|
newElement.setSubstringStartLength(originalElement.getSubstringStartLength()); |
|
|
|
newElement.setSubstringEndLength(originalElement.getSubstringEndLength()); |
|
|
|
newElement.setSplitCharacter(originalElement.getSplitCharacter()); |
|
|
|
newElement.setSplitIndex(originalElement.getSplitIndex()); |
|
|
|
newElement.setReplaceFrom(originalElement.getReplaceFrom()); |
|
|
|
newElement.setReplaceTo(originalElement.getReplaceTo()); |
|
|
|
|
|
|
|
newElement.setFontFamily(originalElement.getFontFamily()); |
|
|
|
newElement.setFontStyle(originalElement.getFontStyle()); |
|
|
|
newElement.setFontWeight(originalElement.getFontWeight()); |
|
|
|
newElement.setTextAlign(originalElement.getTextAlign()); |
|
|
|
newElement.setLetterSpacing(originalElement.getLetterSpacing()); |
|
|
|
newElement.setLineHeight(originalElement.getLineHeight()); |
|
|
|
newElement.setFontItalic(originalElement.getFontItalic()); |
|
|
|
newElement.setFontUnderline(originalElement.getFontUnderline()); |
|
|
|
|
|
|
|
newElement.setParentSerialLabelNo(originalElement.getParentSerialLabelNo()); |
|
|
|
|
|
|
|
// 处理流水号元素的标签内容定义 |
|
|
|
if ("serialNumber".equals(originalElement.getType())) { |
|
|
|
this.copySerialNumberContent(originalLabelNo, newLabelNo, originalElement, newElement); |
|
|
|
} |
|
|
|
|
|
|
|
// 直接插入新元素 |
|
|
|
reportLabelListMapper.insert(newElement); |
|
|
|
} |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
throw new XJException("复制标签绘制内容失败: " + e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @description: 复制流水号元素的内容定义 |
|
|
|
* @author Kiro |
|
|
|
* @date 2025/01/25 |
|
|
|
* @version 1.0 |
|
|
|
*/ |
|
|
|
private void copySerialNumberContent(String originalLabelNo, String newLabelNo, |
|
|
|
ReportLabelList originalElement, ReportLabelList newElement) { |
|
|
|
try { |
|
|
|
// 创建流水号的标签内容定义 |
|
|
|
LabelContentData inData = new LabelContentData(); |
|
|
|
inData.setLabelNo(newLabelNo); |
|
|
|
inData.setDbFieldName("流水号"); |
|
|
|
inData.setItemDesc("流水号"); |
|
|
|
inData.setObjectGroup("流水号"); |
|
|
|
inData.setObjectName("流水号"); |
|
|
|
inData.setSequenceBits(originalElement.getDigits() != null ? originalElement.getDigits() : 0); |
|
|
|
inData.setIntervalValue(originalElement.getStep() != null ? originalElement.getStep() : 1); |
|
|
|
|
|
|
|
// 获取序号 |
|
|
|
Integer itemNo = this.getLabelContentItemNo(inData.getLabelNo()); |
|
|
|
inData.setItemNo(itemNo); |
|
|
|
baseMapper.insertLabelContent(inData); |
|
|
|
|
|
|
|
// 复制序列规则 |
|
|
|
if (originalElement.getData() != null && !originalElement.getData().isEmpty()) { |
|
|
|
int seqNo = 1; |
|
|
|
for (String seqRule : originalElement.getData().split("\\+")) { |
|
|
|
inData.setObjectName(seqRule); |
|
|
|
inData.setSeqNo(seqNo); |
|
|
|
baseMapper.insertLabelContentRule(inData); |
|
|
|
seqNo++; |
|
|
|
} |
|
|
|
} |
|
|
|
newElement.setItemNo(itemNo); |
|
|
|
} catch (Exception e) { |
|
|
|
// 流水号内容定义复制失败不影响主流程 |
|
|
|
System.err.println("复制流水号内容定义失败: " + e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Map<String, Object> getParentLabelInfo(String labelNo) { |
|
|
|
return baseMapper.getParentLabelInfo(labelNo); |
|
|
|
|