diff --git a/src/main/java/com/gaotao/modules/base/dao/BaseMapper.java b/src/main/java/com/gaotao/modules/base/dao/BaseMapper.java index 256c02a..0bdfad8 100644 --- a/src/main/java/com/gaotao/modules/base/dao/BaseMapper.java +++ b/src/main/java/com/gaotao/modules/base/dao/BaseMapper.java @@ -207,6 +207,8 @@ public interface BaseMapper { */ void insertLabelContent(LabelContentData inData); + void insertLabelContentRule(LabelContentData inData); + /** * @description: 修改标签的打印参数 * @author LR @@ -239,6 +241,8 @@ public interface BaseMapper { */ void deleteLabelAllContentsByLabelNo(LabelSettingData inData); + void deleteLabelAllContentRulesByLabelNo(LabelSettingData inData); + /** * @description: 复制新的标签内容定义进入当前标签 * @author LR diff --git a/src/main/java/com/gaotao/modules/base/entity/LabelContentData.java b/src/main/java/com/gaotao/modules/base/entity/LabelContentData.java index e16073b..25a6d68 100644 --- a/src/main/java/com/gaotao/modules/base/entity/LabelContentData.java +++ b/src/main/java/com/gaotao/modules/base/entity/LabelContentData.java @@ -8,6 +8,7 @@ public class LabelContentData { private int itemNo;// private String itemDesc;// private int showSeqNo;// + private int seqNo;// private String objectName;//参数标题 private String objectGroup;//参数名称 private String dbFieldName;// @@ -107,4 +108,11 @@ public class LabelContentData { public void setSearchFlag(String searchFlag) { this.searchFlag = searchFlag; } + public int getSeqNo() { + return seqNo; + } + + public void setSeqNo(int seqNo) { + this.seqNo = seqNo; + } } diff --git a/src/main/java/com/gaotao/modules/base/entity/ReportLabelList.java b/src/main/java/com/gaotao/modules/base/entity/ReportLabelList.java index 2fa124b..fe03fe3 100644 --- a/src/main/java/com/gaotao/modules/base/entity/ReportLabelList.java +++ b/src/main/java/com/gaotao/modules/base/entity/ReportLabelList.java @@ -1,5 +1,6 @@ package com.gaotao.modules.base.entity; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; @Data @@ -17,4 +18,9 @@ public class ReportLabelList { private Boolean newline; private Integer lineRows; private Integer lineWidth; + private Integer itemNo; + @TableField(exist = false) + private Integer digits; + @TableField(exist = false) + private Integer step; } diff --git a/src/main/java/com/gaotao/modules/base/service/Impl/ReportLabelListServiceImpl.java b/src/main/java/com/gaotao/modules/base/service/Impl/ReportLabelListServiceImpl.java index 61af441..31cd2dd 100644 --- a/src/main/java/com/gaotao/modules/base/service/Impl/ReportLabelListServiceImpl.java +++ b/src/main/java/com/gaotao/modules/base/service/Impl/ReportLabelListServiceImpl.java @@ -3,13 +3,10 @@ package com.gaotao.modules.base.service.Impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gaotao.common.utils.MapUtils; +import com.gaotao.modules.base.dao.BaseMapper; +import com.gaotao.modules.base.dao.ProcedureMapper; import com.gaotao.modules.base.dao.ReportLabelListMapper; -import com.gaotao.modules.base.entity.LabelSettingData; -import com.gaotao.modules.base.entity.PrintLabelRequest; -import com.gaotao.modules.base.entity.ReportLabelList; -import com.gaotao.modules.base.entity.RfidProcessResult; -import com.gaotao.modules.base.entity.UserLabelPrinterData; -import com.gaotao.modules.base.entity.ZplDataDto; +import com.gaotao.modules.base.entity.*; import com.gaotao.modules.base.service.BaseService; import com.gaotao.modules.base.service.ReportLabelListService; @@ -22,7 +19,9 @@ import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; +import java.util.ArrayList; import java.util.List; +import java.util.Map; @Slf4j @Service @@ -31,13 +30,19 @@ public class ReportLabelListServiceImpl extends ServiceImpl elements = zplDataDto.getElements(); // 从 ReportFileList (LabelSettingData) 获取数据做判断 LabelSettingData labelSettingData = new LabelSettingData(); labelSettingData.setLabelNo(zplDataDto.getReportId()); @@ -45,20 +50,53 @@ public class ReportLabelListServiceImpl extends ServiceImpl { + elements.forEach(element -> { element.setReportId(zplDataDto.getReportId()); }); - this.saveBatch(zplDataDto.getElements()); + //1.首先删除原标签内容定义 + LabelSettingData labelData = new LabelSettingData(); + labelData.setLabelNo(zplDataDto.getReportId()); + baseMapper.deleteLabelAllContentsByLabelNo(labelData); + baseMapper.deleteLabelAllContentRulesByLabelNo(labelData); + //插入标签的打印参数 + for (ReportLabelList element : elements) { + if (element.getType().equals("serialNumber")) { + LabelContentData inData = new LabelContentData(); + inData.setLabelNo(zplDataDto.getReportId()); + inData.setDbFieldName("流水号"); + inData.setItemDesc("流水号"); + inData.setObjectGroup("流水号"); + inData.setObjectName("流水号"); + inData.setSequenceBits(element.getDigits()!=null?element.getDigits():0); + inData.setIntervalValue(element.getStep()!=null?element.getStep():1); + //调用存储过程 查询序号数据 + Integer itemNo = this.getLabelContentItemNo(inData.getLabelNo()); + inData.setItemNo(itemNo); + baseMapper.insertLabelContent(inData); + if (element.getData() != null && !element.getData().isEmpty()) { + // 如果有序列规则,则更新标签内容 + int seqNo = 1; // 默认序列号从1开始 + for (String seqRule : element.getData().split("\\+")) { + inData.setObjectName(seqRule); + inData.setSeqNo(seqNo); + baseMapper.insertLabelContentRule(inData); + seqNo++; + } + } + element.setItemNo(itemNo); + } + } + + this.saveBatch(elements); // 更新LabelSettingData,包含新的纸张尺寸和DPI信息 if (!labelSettingDataList.isEmpty()) { LabelSettingData inData = labelSettingDataList.getFirst(); - // 更新ZPL代码 inData.setZplCode(zplDataDto.getZplCode()); @@ -78,9 +116,41 @@ public class ReportLabelListServiceImpl extends ServiceImpl params = new ArrayList<>(); + params.add(labelNo); + //存储过程 调用存储过程 创建分卷 + List> resultList = procedureMapper.getProcedureData("getLabelContentItemNo", params); + //返回结果 + Map resultMap = resultList.get(0); + //处理结果集 + String strItemNo = String.valueOf(resultMap.get("itemNo")); + return Integer.parseInt(strItemNo); + } + @Override public List getZplElements(String reportId) { - return this.lambdaQuery().eq(ReportLabelList::getReportId, reportId).list(); + List elements = this.lambdaQuery().eq(ReportLabelList::getReportId, reportId).list(); + for (ReportLabelList element : elements) { + if (element.getType().equals("serialNumber")) { + // 查询流水号规则 + LabelContentData inData = new LabelContentData(); + inData.setLabelNo(reportId); + inData.setItemNo(element.getItemNo()); + List data = baseMapper.getUsedLabelContent(inData); + if (!data.isEmpty()) { + element.setDigits(data.getFirst().getSequenceBits()); + element.setStep(data.getFirst().getIntervalValue()); + } + List dataRule =baseMapper.getLabelContentSerialRule(inData); + if (!dataRule.isEmpty()) { + element.setData(String.join("+", dataRule.stream() + .map(LabelContentSerialRuleData::getObjectName) + .toList())); + } + } + } + return elements; } @Override diff --git a/src/main/resources/mapper/base/BaseMapper.xml b/src/main/resources/mapper/base/BaseMapper.xml index bd72ce0..bca1014 100644 --- a/src/main/resources/mapper/base/BaseMapper.xml +++ b/src/main/resources/mapper/base/BaseMapper.xml @@ -287,6 +287,12 @@ #{dbFieldName}, #{sequenceNoFlag}, #{sequenceBits}, #{intervalValue}) + + + INSERT INTO ReportContentItem_SeqRule(ReportID, ItemNo, SeqNo, ObjectName) + VALUES (#{labelNo}, #{itemNo}, #{seqNo}, #{objectName}) + + UPDATE ReportContentItem SET ShowSeqNo = #{showSeqNo}, ObjectName = #{objectName}, ObjectGroup = #{objectGroup}, @@ -324,6 +330,13 @@ + + DELETE FROM ReportContentItem_SeqRule + + AND ReportID = #{labelNo} + + + INSERT INTO ReportContentItem(ReportID, ItemNo, ShowSeqNo, ItemDesc, ObjectName, ObjectGroup,