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.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<Long> 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<PackingManage> packingManageQueryWrapper = new QueryWrapper<>();
|
packingManageQueryWrapper.eq("item_id", id);
|
List<PackingManage> packingManageList = packingManageService.list(packingManageQueryWrapper);
|
|
for (PackingManage packingManage : packingManageList) {
|
QueryWrapper<CatAjjxx> catAjjxxQueryWrapper = new QueryWrapper<>();
|
catAjjxxQueryWrapper.eq("id", packingManage.getAjId());
|
CatAjjxx catAjjxx = catAjjxxService.getOne(catAjjxxQueryWrapper);
|
String boxNumber = packingManage.getBoxNumber();
|
QueryWrapper<PackingManage> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("box_number", boxNumber);
|
List<PackingManage> 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<String> 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<String> wrappedLines = wrapText(all, 40, 3); // 每行最大宽度20
|
System.out.println(wrappedLines);
|
}
|
}
|