Browse Source

一键复制

master
han\hanst 6 months ago
parent
commit
b6e24f66fa
  1. 27
      src/main/java/com/gaotao/modules/base/controller/LabelSettingController.java
  2. 8
      src/main/java/com/gaotao/modules/base/service/BaseService.java
  3. 174
      src/main/java/com/gaotao/modules/base/service/Impl/BaseServiceImpl.java
  4. 6
      src/main/resources/mapper/base/BaseMapper.xml

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

@ -830,6 +830,33 @@ public class LabelSettingController extends AbstractController {
} }
} }
/**
* @description: 复制标签包括基本信息和绘制内容
* @author Kiro
* @date 2025/01/25
* @version 1.0
*/
@RequestMapping(value = "/copyLabelSetting")
public R copyLabelSetting(@RequestBody java.util.Map<String, Object> params) {
try {
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", "标签复制成功")
.put("data", new java.util.HashMap<String, Object>() {{
put("newLabelNo", newLabelNo);
}});
} catch (Exception e) {
return R.error("复制标签失败: " + e.getMessage());
}
}
/** /**
* @description: 使用真实数据预览标签从数据库视图获取数据 * @description: 使用真实数据预览标签从数据库视图获取数据
* @author Kiro * @author Kiro

8
src/main/java/com/gaotao/modules/base/service/BaseService.java

@ -358,4 +358,12 @@ public interface BaseService {
ReportLabelList getReportLabelListByLabelNo(String labelNo); ReportLabelList getReportLabelListByLabelNo(String labelNo);
/**
* @description: 复制标签包括基本信息和绘制内容
* @author Kiro
* @date 2025/01/25
* @version 1.0
*/
String copyLabelSetting(String site, String username, String originalLabelNo);
} }

174
src/main/java/com/gaotao/modules/base/service/Impl/BaseServiceImpl.java

@ -6,6 +6,7 @@ import com.gaotao.modules.base.dao.BaseMapper;
import com.gaotao.modules.base.dao.ProcedureMapper; import com.gaotao.modules.base.dao.ProcedureMapper;
import com.gaotao.modules.base.entity.*; import com.gaotao.modules.base.entity.*;
import com.gaotao.modules.base.service.BaseService; import com.gaotao.modules.base.service.BaseService;
import com.gaotao.modules.base.dao.ReportLabelListMapper;
import com.gaotao.modules.sys.service.SysMsgService; import com.gaotao.modules.sys.service.SysMsgService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -15,6 +16,7 @@ import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@Service @Service
@ -25,6 +27,8 @@ public class BaseServiceImpl implements BaseService {
private ProcedureMapper procedureMapper; private ProcedureMapper procedureMapper;
@Autowired @Autowired
private SysMsgService sysMsgService; private SysMsgService sysMsgService;
@Autowired
private ReportLabelListMapper reportLabelListMapper;
@Override @Override
public List<LabelSettingData> getLabelSettingList(LabelSettingData inData) { public List<LabelSettingData> getLabelSettingList(LabelSettingData inData) {
@ -900,6 +904,176 @@ public class BaseServiceImpl implements BaseService {
return baseMapper.getReportLabelListByLabelNo(labelNo); 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 @Override
public Map<String, Object> getParentLabelInfo(String labelNo) { public Map<String, Object> getParentLabelInfo(String labelNo) {
return baseMapper.getParentLabelInfo(labelNo); return baseMapper.getParentLabelInfo(labelNo);

6
src/main/resources/mapper/base/BaseMapper.xml

@ -27,7 +27,7 @@
<select id="getLabelSettingByLabelNo" parameterType="java.lang.String" resultType="LabelSettingData"> <select id="getLabelSettingByLabelNo" parameterType="java.lang.String" resultType="LabelSettingData">
SELECT ReportID labelNo, ReportFamily labelType, Reportfile labelName, ReportType labelClass, Remark remark, SELECT ReportID labelNo, ReportFamily labelType, Reportfile labelName, ReportType labelClass, Remark remark,
PrintDirection printDirection, ZplCode zplCode, PaperSize paperSize, PaperOrientation paperOrientation, PrintDirection printDirection, ZplCode zplCode, PaperSize paperSize, PaperOrientation paperOrientation,
Dpi dpi, CanvasWidth canvasWidth, CanvasHeight canvasHeight,
Dpi dpi, CanvasWidth canvasWidth, CanvasHeight canvasHeight,rfidFlag,
PhysicalWidthMm physicalWidthMm, PhysicalHeightMm physicalHeightMm PhysicalWidthMm physicalWidthMm, PhysicalHeightMm physicalHeightMm
FROM ReportFileList FROM ReportFileList
<where> <where>
@ -39,10 +39,10 @@
<insert id="insertLabelSetting" parameterType="LabelSettingData"> <insert id="insertLabelSetting" parameterType="LabelSettingData">
INSERT INTO ReportFileList(ReportID, ReportFamily, Reportfile, ReportType, Remark, PrintDirection, ZplCode,rfidFlag, INSERT INTO ReportFileList(ReportID, ReportFamily, Reportfile, ReportType, Remark, PrintDirection, ZplCode,rfidFlag,
PaperSize, PaperOrientation, Dpi, CanvasWidth, CanvasHeight, PaperSize, PaperOrientation, Dpi, CanvasWidth, CanvasHeight,
PhysicalWidthMm, PhysicalHeightMm, UpdatedTime)
PhysicalWidthMm, PhysicalHeightMm, UpdatedTime,paper_id)
VALUES (#{labelNo}, #{labelType}, #{labelName}, #{labelClass}, #{remark}, #{printDirection}, #{zplCode},#{rfidFlag}, VALUES (#{labelNo}, #{labelType}, #{labelName}, #{labelClass}, #{remark}, #{printDirection}, #{zplCode},#{rfidFlag},
#{paperSize}, #{paperOrientation}, #{dpi}, #{canvasWidth}, #{canvasHeight}, #{paperSize}, #{paperOrientation}, #{dpi}, #{canvasWidth}, #{canvasHeight},
#{physicalWidthMm}, #{physicalHeightMm}, GETDATE())
#{physicalWidthMm}, #{physicalHeightMm}, GETDATE(),#{paperSize})
</insert> </insert>
<!--修改标签自定义的信息--> <!--修改标签自定义的信息-->

Loading…
Cancel
Save