多单位版国产化地质资料管理系统
zs
2026-02-04 fe02f176b512a9d6a4e12437d929e04e99bb7567
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
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);
    }
}