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

MES智慧车间-新柔性产线(包装扫描汇报)-SN号条码打印插件
我这里没有环境,我暂且借着BOS设计器里面的单据为大家讲述一下关于这个打印插件的开发,其实这个过程还蛮曲折的,因为没有做过,甚至是第一次接触打印机
,所以耗费了很长时间,废话不多说,直接进入正题!!
如果对柔性产线有一定的了解的小伙伴应该知道这张单据

一般我可以选择打印箱号,关于箱号的打印方式,有官方的文档可以看一下
金蝶云星空V8.0企业版产品培训文档 (kingdee.com)

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

但是在看完官方文档之后,我发现一个事情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(baseMES智慧车间-新柔性产线(包装扫描汇报)-包装箱SN号打印(目前支持云星空8.2版本)
MES智慧车间-新柔性产线(包装扫描汇报)-SN号条码打印插件 我这里没有环境,我暂且借着BOS设计器里面的单据为大家讲述一下关于这个打...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



