电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

MES智慧车间-新柔性产线(包装扫描汇报)-包装箱SN号打印(目前支持云星空8.2版本)

来源:金蝶云社区作者:金蝶2024-09-162

MES智慧车间-新柔性产线(包装扫描汇报)-包装箱SN号打印(目前支持云星空8.2版本)

MES智慧车间-新柔性产线(包装扫描汇报)-SN号条码打印插件

      我这里没有环境,我暂且借着BOS设计器里面的单据为大家讲述一下关于这个打印插件的开发,其实这个过程还蛮曲折的,因为没有做过,甚至是第一次接触打印机,所以耗费了很长时间,废话不多说,直接进入正题!!


如果对柔性产线有一定的了解的小伙伴应该知道这张单据

image.webp

一般我可以选择打印箱号,关于箱号的打印方式,有官方的文档可以看一下

金蝶云星空V8.0企业版产品培训文档 (kingdee.com)

image.webp

我们的需求是这样的我想打出来这样的一个格式

image.webp

但是在看完官方文档之后,我发现一个事情SN号无法绑定

此时我遇到了第一个难题

SN号怎么获取(SN号的数据存储在缓存中)

这个问题求助了总部老师出了一个补丁,解开发现里面更新了一个dll,我已经放附件里面了,在写插件之前记得要替换掉根目录下的dll,当然,别忘记把自己原来的做好备份哦(目前只支持云星空8.2版本)


获取完SN号,我就在社区里找到了好几个关于更改套打数据的插件,但是都不是移动端的,然后我就仿照着写了一个,不出意外的没效果


然后我就想到一个最原始的方法,既然都是用打印机打印的,那么一定有发送指令的地方,我直接构建指令不就好了

于是我就带着我的反编译工具,对这张表单的表单插件下手了

功夫不负有心人,终于被我找到了放打印机指令的地方


具体细节(需要懂一点ZPL打印指令)

我的做法是找到打印箱号按钮所调用的方法,一层一层的拨开迷雾,然后我新加了一个按钮,把原来的打印箱号的方法拿过来,在调用打印方法之前把指令插入到指令集合里面,下面是源码

[System.ComponentModel.Description("包装扫描替换表单插件")]
    [HotUpdate]
    public class Class5 : FlexiblePackageEdit
    {
        public override void ButtonClickWithAuth(ButtonClickEventArgs e)
        {

            base.ButtonClickWithAuth(e);
            switch (e.Key.ToUpper())
            {

                case "F_BLN_BUTTON":
                    this.PrintBoxByRpt(uiParamTransInfo.BoxNumber, "02");
                   
                    break;
            }

        }
        //下面的方法都是原方法基础上做了改动,大家可以自行反编译查看
        protected void PrintBoxByRpt(string boxNumber, string tempType)
        {
            if (ObjectUtils.IsNullOrEmptyOrWhiteSpace(boxNumber))
            {
                base.View.ShowStatusBarInfo(ResManager.LoadKDString("箱号为空,不能进行箱号打印!", "015747000040086", SubSystemType.MFG));
                return;
            }
            SFSPrintBoxByRptParam sFSPrintBoxByRptParam = new SFSPrintBoxByRptParam();
            sFSPrintBoxByRptParam.BoxNumber = boxNumber;
            sFSPrintBoxByRptParam.TempType = tempType;
            SFSPrintBoxByRptParam paramValue = sFSPrintBoxByRptParam;
            InitParamValue(paramValue);
            SFSParamInfo<SFSPrintBoxByRptParam> sFSParamInfo = new SFSParamInfo<SFSPrintBoxByRptParam>();
            sFSParamInfo.RequestId = SequentialGuid.NewGuid().ToString();
            sFSParamInfo.UserToken = base.Context.UserToken;
            sFSParamInfo.ApiName = "PrintBoxByRpt";
            sFSParamInfo.ApiDescription = ResManager.LoadKDString("根据汇报单打印箱号", "015747000015534", SubSystemType.MFG);
            sFSParamInfo.ParamValue = paramValue;
            SFSParamInfo<SFSPrintBoxByRptParam> paramInfo = sFSParamInfo;
            SFSReturnInfo<SFSPrintBoxResult> sFSReturnInfo = SFSWebServiceHelper.ExecuteService<SFSPrintBoxByRptParam, SFSPrintBoxResult>(base.Context, paramInfo);
            //
            List<string> snString = SFSPrintUtils.GetRptTaskCachePrdSerialNoByBoxNumber(this.Context, boxNumber);//此处为总部老师提供的插件内的方法,获取缓存中的SN序列号,
            下面从开始标记,到结束标记之间的代码是自行构建的基础,需要有一定的ZPL打印指令基础
            下面这段实现的功能为(一行两列,一张三行,溢出换纸张)

            //List<string> list = new List<string>();
            if (snString.Count > 6)//开始
            {
                List<string> demo1 = new List<string>();
                for (int i = 0; i < 6; i++)
                {
                    demo1.Add(snString[i]);
                }
                string zpl1 = Demoo.ZPLDemo(demo1);
                //list.Add(zpl1);
                sFSReturnInfo.ReturnValue.PrintInfo.Add(zpl1);
                List<string> demo2 = new List<string>();
                for (int i = 6; i < snString.Count; i++)
                {
                    demo2.Add(snString[i]);
                }
                string zpl2 = Demoo.ZPLDemo(demo2);
                //list.Add(zpl2);
                sFSReturnInfo.ReturnValue.PrintInfo.Add(zpl2);

            }
            else
            {
                string zpl = Demoo.ZPLDemo(snString);
                //list.Add(zpl);
                sFSReturnInfo.ReturnValue.PrintInfo.Add(zpl);
            }//结束


            //Demoo.Print(base

MES智慧车间-新柔性产线(包装扫描汇报)-包装箱SN号打印(目前支持云星空8.2版本)

MES智慧车间-新柔性产线(包装扫描汇报)-SN号条码打印插件 我这里没有环境,我暂且借着BOS设计器里面的单据为大家讲述一下关于这个打...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信