package com.zg.project.Inventory.AutoInventory.controller;

import com.ZMPrinter.*;
import com.ZMPrinter.LSF.LSFDecoder;
import com.ZMPrinter.UsbUtility.UsbConnection;
import com.zg.project.Inventory.AutoInventory.domain.entity.PrintRfid;
import com.zg.project.Inventory.AutoInventory.mapper.PrintRfidMapper;
import com.zg.project.information.domain.PcdeDetail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.zg.project.information.mapper.PcdeDetailMapper;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/AutoInventory")
public class PrintController {
    @Autowired
    PrintRfidMapper rfidMapper;
    @Autowired
    PcdeDetailMapper pcdeDetailMapper;
    /**
     * 代码定义标签格式
     * @return
     */
//    @GetMapping("/printRfid")
//    public AjaxResult printRfid(){
//        Map<String, Object> result = new HashMap<>();
//        result.put("info", "ceshi");
//
//        //region 定义打印机对象（接口类型、分辨率、打印黑度及速度）
//        zmprinter thiszmprinter = new zmprinter();//定义打印机对象
//        thiszmprinter.printerinterface= printerstyle.RFID_USB;//打印机接口类型
//        thiszmprinter.printerdpi = 300;//打印机分辨率，203dpi、300dpi或600dpi
//        thiszmprinter.printSpeed=4;//打印速度，
//        thiszmprinter.printDarkness=12;//打印黑度
//        //endregion
//
//        //region 定义标签对象（尺寸）
//        zmlabel thiszmlabel = new zmlabel();//定义标签对象
//        thiszmlabel.labelwidth = 70;//标签的宽度，单位是mm
//        thiszmlabel.labelheight = 30;//标签的高度，单位是mm
//        thiszmlabel.labelrowgap = 2;//标签之间的行间距，单位是mm
//        //endregion
//
//        //region 定义标签内需要打印的各个对象（一个标签上可以有多个对象，如文字、一维条码、二维条码、线条、矩形、图片、RFID写入数据等）
//        List<zmlabelobject> thiszmlabelobjectlist = new ArrayList<>();//定义标签上需要打印的对象列表
////        添加图片
//        zmlabelobject thiszmlabelobject001 = new zmlabelobject();
//        thiszmlabelobject001.objectName = "image";//该对象是图片
//        thiszmlabelobject001.Xposition = 0;//X坐标，单位mm
//        thiszmlabelobject001.Yposition = 0;//Y坐标，单位mm
//        //region 读取图片文件并转为byte[]
//        //读取图片文件
//        BufferedImage img =null;
//        try {
//            img = ImageIO.read(new File("E:\\jaznewproject\\gjdw.jpg"));//从文件中读取图片
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        if(img==null)
//            return AjaxResult.error("logo图片读取失败");
//        //BufferedImage转byte[]
//        ByteArrayOutputStream out = new ByteArrayOutputStream();
//        try {
//            ImageIO.write(img, "png", out);
//            out.flush();
//        } catch (IOException e) {
//            e.printStackTrace();
//        } finally {
//            try {
//                out.close();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//        //endregion
//        thiszmlabelobject001.imagedata = out.toByteArray();//添加图片的数据
//        thiszmlabelobject001.hscale=0.1f;//图片的横向缩放比例，值为1则不缩放
//        thiszmlabelobject001.vscale=0.1f;//图片的竖向缩放比例，值为1则不缩放
//        thiszmlabelobjectlist.add(thiszmlabelobject001);//将图片对象添加进对象列表
//
//        zmlabelobject thiszmlabelobject01 = new zmlabelobject();
//        thiszmlabelobject01.objectName = "truetype";//该对象是TrueType文字
//        thiszmlabelobject01.objectdata = "存放位置：XXXXXXXX";//文字内容
//        thiszmlabelobject01.Xposition = 10;//文字X坐标，单位mm
//        thiszmlabelobject01.Yposition = 3;//文字Y坐标，单位mm
//        thiszmlabelobject01.textfont = "黑体";//文字的字体
//        thiszmlabelobject01.fontstyle = 1;//粗体
//        thiszmlabelobject01.fontsize = 10;//文字的字号
//        thiszmlabelobjectlist.add(thiszmlabelobject01);//将文字对象添加进对象列表
//
//        zmlabelobject thiszmlabelobject06 = new zmlabelobject();
//        thiszmlabelobject06.objectName = "rfiduhf";//该对象是RFID写入
////        thiszmlabelobject06.objectdata = "G01-010201";//RFID需要写入的内容
//        thiszmlabelobject06.objectdata = "4730312D303130323031";//RFID需要写入的内容
////        G01-010201：4730312d303130323031
////        S0403：5330343033
//        thiszmlabelobject06.RFIDDatablock = 0;//写入区域，0为EPC，1为USER
//        thiszmlabelobject06.RFIDDatatype = 1;//数据类型：0为文本，1为16进制（文本的话存进去的是ASCII十六进制；）
//        thiszmlabelobject06.RFIDerrortimes = 1;//错误重试次数
//        thiszmlabelobjectlist.add(thiszmlabelobject06);//将RFID对象添加进对象列表
//
//        //endregion
//
//        //region 创建USB打印机连接
//        UsbConnection usbConnection =new UsbConnection();//建立USB连接
//        if(!usbConnection.Open()){
//            System.out.println("连接打印机失败，请检查。");
//            return AjaxResult.error("连接打印机失败，请检查");
//        }
//        //endregion
//        usbConnection.getPrinterName();
//
//        //region 打印标签
////        long barcodesn = 12345678L;//文字、条码及EPC的数据
//        String positionStr = "G01-010201";
//        printutility zmprintoperate = new printutility();//定义打印操作对象
//
//        for(int pnum=1;pnum<=1;pnum++) {
//            System.out.println("打印第"+pnum+"张");
//
//            //region 查询打印机状态
//            int trytimes=0;
//            int printerstatuscode=usbConnection.getPrinterStatus();//查询打印机状态
//            if(printerstatuscode!=0)//0为就绪状态
//            {
//                if (printerstatuscode == 4 || printerstatuscode == 1)//正在打印或语法错误，语法错误经常出现在打印机在重试的时候查询状态
//                {
//                    while (trytimes < 10)//重试10次
//                    {
//                        try {
//                            Thread.sleep(1000);//暂停1秒
//                        }
//                        catch(Exception e)
//                        {}
//                        printerstatuscode=usbConnection.getPrinterStatus();//查询打印机状态
//                        if (printerstatuscode != 4 && printerstatuscode != 1)
//                            break;
//
//                        trytimes++;
//                    }
//                    if(trytimes>=10)
//                    {
//                        System.out.println("打印机状态异常:"+printerstatuscode);
//                        break;
//                    }
//                }
//                else if (printerstatuscode == 96)//剥纸器正在等待取走标签
//                {
//                    System.out.println("剥纸器正在等待取走标签。");
//                    while (true)
//                    {
//                        try {
//                            Thread.sleep(1000);//暂停1秒
//                        }
//                        catch(Exception e)
//                        {}
//                        printerstatuscode=usbConnection.getPrinterStatus();//查询打印机状态
//                        if (printerstatuscode != 96)
//                            break;
//                    }
//                }
//                else if (printerstatuscode == 88)//暂停
//                {
//                    System.out.println("打印机现在是暂停状态，按一下打印机的“暂停”按钮将会重新开始打印。");
//                    while (true)
//                    {
//                        try {
//                            Thread.sleep(1000);//暂停1秒
//                        }
//                        catch(Exception e)
//                        {}
//                        printerstatuscode=usbConnection.getPrinterStatus();//查询打印机状态
//                        if (printerstatuscode != 88)
//                            break;
//                    }
//                }
//                else if (printerstatuscode == 81) {
//                    System.out.println("主板硬件故障，请联系售后维修。");
//                    break;
//                }
//                else if (printerstatuscode == 82) {
//                    System.out.println("打印机的碳带探测出错啦，请检查是否安装好碳带！");
//                    break;
//                }
//                else if (printerstatuscode == 83) {
//                    System.out.println("打印机的标签探测出错啦，请检查是否安装好标签，更换不同大小标签后需要手动做一次纸张校准操作！");
//                    break;
//                }
//                else if (printerstatuscode == 86) {
//                    System.out.println("打印机的切刀检测出错啦，请检查是否启用了切刀功能！");
//                    break;
//                }
//                else if (printerstatuscode == 89) {
//                    System.out.println("标签纸用完了，请安装新标签！");
//                    break;
//                }
//                else if (printerstatuscode == 90){
//                    System.out.println("RFID标签读写错误！");
//                    break;
//                }
//                else if (printerstatuscode == 91||printerstatuscode == 92) {
//                    System.out.println("RFID标签信号校准错误！");
//                    break;
//                }
//                else if (printerstatuscode == 120)//升级完成
//                {
//                    System.out.println("打印机完成了升级，请按升级工具提示操作。");
//                    break;
//                }
//                else
//                {
//                    System.out.println("打印机状态异常："+printerstatuscode);
//                    break;
//                }
//            }
//            //endregion
//
//            //region 更改标签内指定文字、条码或RFID写入数据的内容
////            thiszmlabelobject01.objectdata="存放位置："+Long.toString(barcodesn);//更改thiszmlabelobject01对象的objectdata内容
//            thiszmlabelobject01.objectdata="存放位置："+positionStr;//更改thiszmlabelobject01对象的objectdata内容
////            thiszmlabelobject05.objectdata="资产编号："+Long.toString(barcodesn);//更改thiszmlabelobject05对象的objectdata内容
////            thiszmlabelobject06.objectdata="资产编号："+Long.toString(barcodesn);//更改thiszmlabelobject06对象的objectdata内容
//            //endregion
//
//            //region 根据标签上需要打印的对象列表生成打印数据
//            byte[] zmpclecommand = zmprintoperate.CreateLabelCommand(thiszmprinter, thiszmlabel, thiszmlabelobjectlist);//生成标签数据
//            if (zmpclecommand == null) {
//                System.out.println("生成标签数据异常为空.");
//                return AjaxResult.error("生成标签数据异常为空");
//            }
//            //System.out.println("生成标签数据完成，长度：" + zmpclecommand.length);
//            //endregion
//
//            //region 发送打印数据给打印机
//            usbConnection.write(zmpclecommand);//发送数据给打印机
//
//            if(thiszmprinter.printerinterface==printerstyle.RFID_USB) {
//                //如果是RFID打印机，则通过打印机USB端口读回状态，确定打印机收到数据并等待打印完成
//                String returnmsg = usbConnection.read(512);//读取打印机数据
//                if(!returnmsg.isEmpty())
//                    System.out.println("打印机返回的数据：" + returnmsg);
//                zmprintoperate.WaitPrintProcess(thiszmprinter, thiszmlabel);//等待打印完成
//            }
//            //endregion
//
////            barcodesn++;//序号加1
//        }
//        //endregion
//
//        //region 关闭USB打印机连接
//        usbConnection.Close();//关闭USB连接
//        //endregion
//
//        return AjaxResult.success(result);
//    }

    @PostMapping("/printaaa")
    public String printaaa(@RequestBody Map<String,Object> params){
        Integer printType = (Integer) params.get("printType");
        //批量打印、单个打印
        if(printType == 1){
            ArrayList ids = (ArrayList) params.get("ids");

            List<PcdeDetail> rfidList = pcdeDetailMapper.selectPcdeDetailListIds(ids);
            Long aa = 3333L;

            return "tttt";
        }else if(printType == 2){   //手动输入信息打印

        }
        return "rrrr";
    }
    /**
     * 模板定义标签格式
     * @return
     */
    @PostMapping("/printlsf")
    public String printlsf(@RequestBody Map<String,Object> params) {

        zmprinter thiszmprinter = new zmprinter();//定义打印机对象
        zmlabel thiszmlabel = new zmlabel();//定义标签对象
        List<zmlabelobject> thiszmlabelobjectlist = new ArrayList<>();//定义标签上需要打印的对象列表
        printutility zmprintoperate = new printutility();//定义打印操作对象

        int printerDpi_old=0;//lsf文件中保存的打印机分辨率

        //region 从LSF文件中读取打印机、标签及对象列表
        LSFDecoder lsfDecoder=new LSFDecoder();
        Map map=lsfDecoder.getZMLabelObjectList("D:/01.lsf");
//        Map map=lsfDecoder.getZMLabelObjectList("http://127.0.0.1:8080/01.lsf");


        thiszmprinter= (zmprinter)map.get("zmprinter");//恢复打印机参数
        printerDpi_old=thiszmprinter.printerdpi;//保存原来的分辨率
        thiszmlabel= (zmlabel)map.get("zmlabel");//恢复标签参数
        thiszmlabelobjectlist = (List<zmlabelobject>)map.get("zmlabelobjectlist");//恢复标签对象列表的参数

        if(thiszmlabelobjectlist.size()==0)
        {
            System.out.println("没有生成标签对象，请检查lsf文件。");
            return "没有生成标签对象，请检查lsf文件";
        }
        //endregion

        //region 设置打印机传输接口
        boolean isRFIDfunction=false;
        boolean isRFIDread=false;
        boolean isRFIDwrite=false;
        for (zmlabelobject thisLabelObject : thiszmlabelobjectlist)
        {
            if (thisLabelObject.objectName.startsWith("rfiduhf"))//RFID对象
            {
                isRFIDfunction=true;
                if (thisLabelObject.ReadIDOnly)
                    isRFIDread = true;
                else
                    isRFIDwrite=true;
            }
        }
        if(isRFIDread)
            thiszmprinter.printerinterface= printerstyle.RFID_USB;//打印机接口类型
        else
            thiszmprinter.printerinterface= printerstyle.USB;
        //endregion

        //region 修改打印机的属性:打印速度、黑度等
        thiszmprinter.printerdpi = 300;//打印机分辨率，203dpi、300dpi或600dpi
        thiszmprinter.printSpeed=4;//打印速度，赋值范围2~8，单位是英寸/秒
        thiszmprinter.printDarkness=10;//打印黑度，赋值范围0~20，值越大打印头加热时间越长。一般使用蜡质碳带赋值7~12，树脂碳带赋值12~18

        if(printerDpi_old!=thiszmprinter.printerdpi)
        {
            //region 打印机分辨率不同，需要处理条码缩放比例
            zmprintoperate.SetLabelObjectScale(thiszmprinter,printerDpi_old,thiszmlabelobjectlist);//重新设置缩放比例
            //endregion
        }
        //endregion
        //批量打印、单个打印
        Integer printType = (Integer) params.get("printType");
        //批量打印、单个打印
        if(printType == 1){
            ArrayList ids = (ArrayList) params.get("ids");

            List<PcdeDetail> rfidList = pcdeDetailMapper.selectPcdeDetailListIds(ids);
            if(rfidList.size()>0){
                for(PcdeDetail info : rfidList) {

//                System.out.println("打印第"+pnum+"张");

                    //region 处理读取标签数据（如果需要）
                    String tagTID="";
                    if(isRFIDread) {
                        //region 读取UHF标签数据
                        UsbConnection usbConnection = new UsbConnection();//建立USB连接
                        if (!usbConnection.Open()) {
                            System.out.println("连接打印机失败，请检查。");
                            return "连接打印机失败，请检查";
                        }
                        if(isRFIDwrite)
                            tagTID = usbConnection.readUHFTag(0, 3);//读TID，后面需要写EPC操作
                        else
                            tagTID=usbConnection.readUHFTag(0,2);//读TID，不需要写EPC操作
                        usbConnection.Close();//关闭USB连接

                        if (tagTID.isEmpty() || tagTID.equals("X"))//未读到数据
                        {
                            System.out.println("未读到标签数据。");
                            continue;//退出当次循环
                        }

                        //更新读到的数据
                        if(tagTID!=null&&!tagTID.isEmpty()) {
                            for (zmlabelobject thisLabelObject : thiszmlabelobjectlist) {
                                for (int vi = 0; vi < thisLabelObject.Variables.size(); vi++) {
                                    objectvariable thisVariable = thisLabelObject.Variables.get(vi);
                                    if (thisVariable.type == 4||thisVariable.type == 5) {//LSF文件中有读取HF或UHF的ID对象
                                        thisVariable.data=tagTID;
                                        thisLabelObject.Variables.set(vi, thisVariable);//更新数据
                                    }
                                }
                            }
                        }
                        //endregion
                    }

                    //更新读到的数据
                    if(tagTID!=null&&!tagTID.isEmpty()) {
                        for (zmlabelobject thisLabelObject : thiszmlabelobjectlist) {
                            for (int vi = 0; vi < thisLabelObject.Variables.size(); vi++) {
                                objectvariable thisVariable = thisLabelObject.Variables.get(vi);
                                if (thisVariable.type == 4||thisVariable.type == 5) {
                                    thisVariable.data=tagTID;
                                    thisLabelObject.Variables.set(vi, thisVariable);//更新数据
                                }
                            }
                        }
                    }
                    //endregion

                    //region 设置对象里变量的值（如果需要）
                    //注意：参数varName是lsf文件里对象变量的“子字符串共享名称”，varValue是需要设置的新值
                    zmprintoperate.setVarValue(thiszmlabelobjectlist,"position",info.getPcode());//设置变量的子字符串共享名称为“name”的值
                    zmprintoperate.setVarValue(thiszmlabelobjectlist,"maposition",info.getPcode());//设置变量的子字符串共享名称为“model”的值
                    zmprintoperate.setVarValue(thiszmlabelobjectlist,"rfid",info.getEncodedId());//设置变量的子字符串共享名称为“location”的值
//            zmprintoperate.setVarValue(thiszmlabelobjectlist,"department","国产操作系统研发13组");//设置变量的子字符串共享名称为“department”的值
//            zmprintoperate.setVarValue(thiszmlabelobjectlist,"purchasedate","2020-10-08");//设置变量的子字符串共享名称为“purchasedate”的值
//            zmprintoperate.setVarValue(thiszmlabelobjectlist,"assetcode","2021092300090002"+String.format("%04d",pnum));//设置变量的子字符串共享名称为“assetcode”的值
                    //endregion

                    //region 预览标签（即生成标签图片）
/*            BufferedImage labelimage=zmprintoperate.CreateLabelImage(thiszmprinter, thiszmlabel, thiszmlabelobjectlist);//生成标签图片
            try {
                if(labelimage!=null) {
                    File imageoutputfile = new File("labelpreview.png");
                    ImageIO.write(labelimage, "png", imageoutputfile);//保存图片
                }
            } catch (IOException e) {
                System.out.println("保存预览图片出错，错误信息："+e.getMessage());
            }*/
                    //endregion

                    //region 将标签生成打印数据
                    byte[] zmpclecommand = zmprintoperate.CreateLabelCommand(thiszmprinter, thiszmlabel, thiszmlabelobjectlist);//生成标签数据
                    if (zmpclecommand == null) {
                        System.out.println("生成标签数据异常为空.");
                        return "生成标签数据异常为空";
                    }
                    //endregion

                    //region 通过打印机USB端口发送打印数据
                    UsbConnection usbConnection = new UsbConnection();//建立USB连接
                    if (!usbConnection.Open()) {
                        System.out.println("连接打印机失败，请检查。");
                        return "连接打印机失败，请检查";
                    }
                    try {
                        usbConnection.write(zmpclecommand);//发送数据给打印机
                        if (thiszmprinter.printerinterface == printerstyle.RFID_USB) {
                            //如果是RFID打印机，则通过打印机USB端口读回状态，确定打印机收到数据并等待打印完成
                            String returnmsg = usbConnection.read(512);//读取打印机数据
                            if (!returnmsg.isEmpty())
                                System.out.println("打印机返回的数据：" + returnmsg);
                            zmprintoperate.WaitPrintProcess(thiszmprinter, thiszmlabel);//等待打印完成
                        }
                    }
                    finally {
                        usbConnection.Close();//关闭USB连接
                    }
                    //endregion
                    //修改表字段，标记为已打印

//                    rfidMapper.updatePrintRfid(info.getId());
                }

                //endregion
            }


        }else if(printType == 2){   //手动输入信息打印
            String printStr = (String) params.get("printStr");
            // 将 printStr 转换为十六进制字符串
            StringBuilder hex = new StringBuilder();
            for (int i = 0; i < printStr.length(); i++) {
                char c = printStr.charAt(i);
                String hexPart = Integer.toHexString(c).toUpperCase();
                hex.append(hexPart);
            }
            String rfidStr = hex.toString();
            //region 处理读取标签数据（如果需要）
            String tagTID="";
            if(isRFIDread) {
                //region 读取UHF标签数据
                UsbConnection usbConnection = new UsbConnection();//建立USB连接
                if (!usbConnection.Open()) {
                    System.out.println("连接打印机失败，请检查。");
                    return "连接打印机失败，请检查";
                }
                if(isRFIDwrite)
                    tagTID = usbConnection.readUHFTag(0, 3);//读TID，后面需要写EPC操作
                else
                    tagTID=usbConnection.readUHFTag(0,2);//读TID，不需要写EPC操作
                usbConnection.Close();//关闭USB连接

                if (tagTID.isEmpty() || tagTID.equals("X"))//未读到数据
                {
                    System.out.println("未读到标签数据。");
                    return "未读到标签数据";
                }

                //更新读到的数据
                if(tagTID!=null&&!tagTID.isEmpty()) {
                    for (zmlabelobject thisLabelObject : thiszmlabelobjectlist) {
                        for (int vi = 0; vi < thisLabelObject.Variables.size(); vi++) {
                            objectvariable thisVariable = thisLabelObject.Variables.get(vi);
                            if (thisVariable.type == 4||thisVariable.type == 5) {//LSF文件中有读取HF或UHF的ID对象
                                thisVariable.data=tagTID;
                                thisLabelObject.Variables.set(vi, thisVariable);//更新数据
                            }
                        }
                    }
                }
                //endregion
            }

            //更新读到的数据
            if(tagTID!=null&&!tagTID.isEmpty()) {
                for (zmlabelobject thisLabelObject : thiszmlabelobjectlist) {
                    for (int vi = 0; vi < thisLabelObject.Variables.size(); vi++) {
                        objectvariable thisVariable = thisLabelObject.Variables.get(vi);
                        if (thisVariable.type == 4||thisVariable.type == 5) {
                            thisVariable.data=tagTID;
                            thisLabelObject.Variables.set(vi, thisVariable);//更新数据
                        }
                    }
                }
            }
            //endregion

            //region 设置对象里变量的值（如果需要）
            //注意：参数varName是lsf文件里对象变量的“子字符串共享名称”，varValue是需要设置的新值
            zmprintoperate.setVarValue(thiszmlabelobjectlist,"position",printStr);//设置变量的子字符串共享名称为“name”的值
            zmprintoperate.setVarValue(thiszmlabelobjectlist,"maposition",printStr);//设置变量的子字符串共享名称为“model”的值
            zmprintoperate.setVarValue(thiszmlabelobjectlist,"rfid",rfidStr);//设置变量的子字符串共享名称为“location”的值
//            zmprintoperate.setVarValue(thiszmlabelobjectlist,"department","国产操作系统研发13组");//设置变量的子字符串共享名称为“department”的值
//            zmprintoperate.setVarValue(thiszmlabelobjectlist,"purchasedate","2020-10-08");//设置变量的子字符串共享名称为“purchasedate”的值
//            zmprintoperate.setVarValue(thiszmlabelobjectlist,"assetcode","2021092300090002"+String.format("%04d",pnum));//设置变量的子字符串共享名称为“assetcode”的值
            //endregion

            //region 预览标签（即生成标签图片）
/*            BufferedImage labelimage=zmprintoperate.CreateLabelImage(thiszmprinter, thiszmlabel, thiszmlabelobjectlist);//生成标签图片
            try {
                if(labelimage!=null) {
                    File imageoutputfile = new File("labelpreview.png");
                    ImageIO.write(labelimage, "png", imageoutputfile);//保存图片
                }
            } catch (IOException e) {
                System.out.println("保存预览图片出错，错误信息："+e.getMessage());
            }*/
            //endregion

            //region 将标签生成打印数据
            byte[] zmpclecommand = zmprintoperate.CreateLabelCommand(thiszmprinter, thiszmlabel, thiszmlabelobjectlist);//生成标签数据
            if (zmpclecommand == null) {
                System.out.println("生成标签数据异常为空.");
                return "生成标签数据异常为空";
            }
            //endregion

            //region 通过打印机USB端口发送打印数据
            UsbConnection usbConnection = new UsbConnection();//建立USB连接
            if (!usbConnection.Open()) {
                System.out.println("连接打印机失败，请检查。");
                return "连接打印机失败，请检查";
            }
            try {
                usbConnection.write(zmpclecommand);//发送数据给打印机
                if (thiszmprinter.printerinterface == printerstyle.RFID_USB) {
                    //如果是RFID打印机，则通过打印机USB端口读回状态，确定打印机收到数据并等待打印完成
                    String returnmsg = usbConnection.read(512);//读取打印机数据
                    if (!returnmsg.isEmpty())
                        System.out.println("打印机返回的数据：" + returnmsg);
                    zmprintoperate.WaitPrintProcess(thiszmprinter, thiszmlabel);//等待打印完成
                }
            }
            finally {
                usbConnection.Close();//关闭USB连接
            }
        }
//        查print_rfid表，打印标签


        return "打印成功";
    }
}
