package com.zbooksoft.gdmis.common; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruili.wcp.common.CustomConfigUtil; import com.ruili.wcp.common.SpringContextUtil; import com.zbooksoft.gdmis.config.ArchivesCustomConfig; import com.zbooksoft.gdmis.data.entity.CatAjjxx; import com.zbooksoft.gdmis.data.entity.CatYswjxx; import com.zbooksoft.gdmis.data.entity.PackingManage; import com.zbooksoft.gdmis.service.CatAjjxxService; import com.zbooksoft.gdmis.service.CatYswjxxService; import com.zbooksoft.gdmis.service.PackingManageService; import com.zebra.sdk.comm.Connection; import com.zebra.sdk.comm.ConnectionBuilder; import com.zebra.sdk.comm.ConnectionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; import static com.zbooksoft.gdmis.common.TscUtil.wrapText; /** * @Description: * @Author: zhai * @Date: 2025/12/5 **/ public class ZT411RFIDPrintService { CustomConfigUtil customConfigUtil = (CustomConfigUtil) SpringContextUtil.getBean("customConfigUtil"); private static final Logger logger = LoggerFactory.getLogger(ZT411RFIDPrintService.class); CatYswjxxService catYswjxxService = (CatYswjxxService) SpringContextUtil.getBean("catYswjxxServiceImpl"); CatAjjxxService catAjjxxService = (CatAjjxxService) SpringContextUtil.getBean("catAjjxxServiceImpl"); PackingManageService packingManageService = (PackingManageService) SpringContextUtil.getBean("packingManageServiceImpl"); /** * 打印RFID标签 */ public void printRFIDLabel(List idList) throws ConnectionException { ArchivesCustomConfig archivesCustomConfig = customConfigUtil.getConfigObj(ArchivesCustomConfig.class); String boxIp = archivesCustomConfig.getBoxIp(); Connection connection = ConnectionBuilder.build(boxIp + ":9100"); Integer timeout = 8000; try { connection.open(); for (Long id : idList) { QueryWrapper packingManageQueryWrapper = new QueryWrapper<>(); packingManageQueryWrapper.eq("item_id", id); List packingManageList = packingManageService.list(packingManageQueryWrapper); for (PackingManage packingManage : packingManageList) { QueryWrapper catAjjxxQueryWrapper = new QueryWrapper<>(); catAjjxxQueryWrapper.eq("id", packingManage.getAjId()); CatAjjxx catAjjxx = catAjjxxService.getOne(catAjjxxQueryWrapper); String boxNumber = packingManage.getBoxNumber(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("box_number", boxNumber); List packingManageListByBox = packingManageService.list(queryWrapper); int num = packingManageListByBox.size(); String sendStr = buildZPLForRFID(catAjjxx, packingManage, num); byte[] sendAndWaitForResponse = connection.sendAndWaitForResponse(sendStr.getBytes("UTF-8"), timeout, timeout, ""); } } } catch (Exception e) { e.printStackTrace(); } finally { connection.close(); } } private String buildZPLForRFID(CatAjjxx catAjjxx, PackingManage packingManage, int num) { StringBuilder zpl = new StringBuilder(); String xmmc = catAjjxx.getXmkyqmc(); List wrappedLines = wrapText(xmmc, 40, 3); // 每行最大宽度20 String dh = catAjjxx.getDh(); String boxNumber = packingManage.getBoxNumber(); // 开始标签格式 zpl.append("^XA\n"); // 设置打印速度和浓度 zpl.append("^PRB\n"); // 设置为默认速度 zpl.append("^MD50\n"); // 设置浓度 zpl.append("^CW1,E:SIMSUN.TTF\n"); //设置字体 zpl.append("^CI28\n"); //设置编码 // 写入RFID数据 String newBarCode = "A" + boxNumber; String epcDataNew = String.format("%24s", newBarCode).replace(' ', '0'); zpl.append("^RFW,H,2,12,1^FD").append(epcDataNew).append("^FS\n"); zpl.append("^FO133,59^A1N,40,40^FD").append("档号:").append(dh).append("^FS\n"); zpl.append("^FO133,129^A1N,40,40^FD").append("类别:地1、样1").append("^FS\n"); zpl.append("^FO133,200^A1N,40,40^FD").append("件数:").append(num).append("^FS\n"); for (int i = 0; i < wrappedLines.size(); i++) { if (i == 0) { zpl.append("^FO133,279^A1N,40,40^FD").append("题名:").append(wrappedLines.get(i)).append("^FS\n"); } else { zpl.append("^FO261,").append(80 * i).append("^A1N,40,40^FD").append(wrappedLines.get(i)).append("^FS\n"); } } // 条形码 zpl.append("^FO500,550^BY2^BCN,200,Y,N,N^FD").append(boxNumber).append("^FS\n"); // 结束标签格式 zpl.append("^XZ\n"); return zpl.toString(); } // private String buildZPLForRFID(CatAjjxx catAjjxx, PackingManage packingManage, int num) { // // StringBuilder zpl = new StringBuilder(); // // String xmmc = catAjjxx.getXmkyqmc(); // List wrappedLines = wrapText(xmmc, 40, 3); // 每行最大宽度20 // String dh = catAjjxx.getDh(); // String boxNumber = packingManage.getBoxNumber(); // // 开始标签格式 // zpl.append("^XA\n"); // // 设置打印速度和浓度 // zpl.append("^PRB\n"); // 设置为默认速度 // zpl.append("^MD50\n"); // 设置浓度 // zpl.append("^CW1,E:SIMSUN.TTF\n"); //设置字体 // zpl.append("^CI28\n"); //设置编码 // // 写入RFID数据 // String newBarCode = "A" + boxNumber; // String epcDataNew = String.format("%24s", newBarCode).replace(' ', '0'); // zpl.append("^RFW,H,2,12,1^FD").append(epcDataNew).append("^FS\n"); // zpl.append("^FO133,59^A1N,40,40^FD").append("档号:").append(dh).append("^FS\n"); // zpl.append("^FO133,129^A1N,40,40^FD").append("类别:地1、样1").append("^FS\n"); // zpl.append("^FO133,200^A1N,40,40^FD").append("件数:").append(num).append("^FS\n"); // for (int i = 0; i < wrappedLines.size(); i++) { // if (i == 0) { // zpl.append("^FO133,279^A1N,40,40^FD").append("题名:").append(wrappedLines.get(i)).append("^FS\n"); // } else { // zpl.append("^FO261,").append(80 * i).append("^A1N,40,40^FD").append(wrappedLines.get(i)).append("^FS\n"); // } // } // // 条形码 // zpl.append("^FO500,550^BY2^BCN,200,Y,N,N^FD").append(boxNumber).append("^FS\n"); // // 结束标签格式 // zpl.append("^XZ\n"); // // return zpl.toString(); // } public static void main(String[] args) { String all = "南海珠江口盆地海洋工程地质调查(珠五井幅)(珠江口盆地珠五副海洋工程地质调查报)"; List wrappedLines = wrapText(all, 40, 3); // 每行最大宽度20 System.out.println(wrappedLines); } }