概述
本文档适用于U9C分支下各工具方法说明,U9V6企业版请参照原文档
BarCodeServices工具类
概述
BarCodeService是U9条码移动端提供的公共方法类,里边包含了大部分常用工具方法。主要包括访问U9服务,调用U9存储过程,获取数字平台参数,获取存储地点、库位数据,串行/并行执行异步方法,数字处理等。
该文档中涉及方法源码,均可在下方文件中查看具体参数和源码。如有疑问,可联系U9条码研发相关人员。
/bower_components/angular-im-barcode/src/js/services/BarCodeServices.js
注意
【runSP】 调用Erp存储过程
调用指定的Erp存储过程
var spName="BC_P_GetSubAppSettingParam";//存储过程名var timeout=null;//超时时间,单位秒,默认null=>30s//存储过程参数列表,ParamDataType 可选值string,(int,int32),int64,date,datetime,(bool,boolean)var spParams=[];spParams.push({"ParamName":"barcode","ParamValue":"BCMaxPatch","ParamDataType":"string"});//调用方法,执行存储过程BarCodeServices.runSP(spName,timeout,spParams).then(function(data){//data为已经反序列化的对象,通常为数组console.log(data);}).catch(function(error){BarCodeServices.getimanDialog})
返回值
[{"Code":"U9V66E.BC.1002103110000019","ModuleCode":"BC","SPVersion":0,"DomainCode":"U9","ProductVersion":"6.0","DependModuleCodes":"","OrigMD5":"","ContainsDB":"False","IsClient":"False","ClientType":"","UpdateTime":"2021-03-1612:12:25"}]
【barCodeAnalyze】推荐使用runSP方法
自动转接调用U9条码解析服务,可以是存储过程或RestSV服务,推荐使用存储过程进行条码解析。
示例
var dataInfo = {};dataInfo.BarCode = paramIn; //传给存储过程的唯一参数,参数可通过字符分割形式传多个,存储过程中处理即可dataInfo.DocTypeEnum = 14; //单据类型 见上面截图dataInfo.OpType = 'BC_P_XXXX'; //存储过程名称dataInfo.OperationKey = 'BarCodeAnalyze_RunSP'; //调用存储过程模式固定传值不可修改,若不是存储过程模式可修改BarCodeServices.barCodeAnalyze(dataInfo).then(function (data) {}, function (err) {});
返回值
//字符串型JSON数组,数组内内容取决于服务实现"[{BarCode:'123456'}]";
【createDoc】生单审核调用指定服务
自动转接调用U9RestSV服务,进行生单或者审核操作,使用该方法前,请先在BC_CreateDocSVMessageBE预置数据。具体方法参见预置反射映射关系表
示例
//服务参数,同U9Rest服务入参格式保持一致,数组或对象均可var createJson = {};//最后需转成JSON格式var createDocJSONString = JSON.stringify(createJson);BarCodeServices.createDoc(createDocJSONString).then(function (data) {//data取决于取决于U9服务实现,和U9服务返回DTO保持一致,为Json字符串}).catch(function (err){var errorMessage = BarCodeService.getErrorMessage(err)}).finally(function(){})
【barCodeAnalyzeOnlyItemBC】
直接解析料码信息,仅限料品条码可以被解析。
示例
BarCodeServices.barCodeAnalyzeOnlyItemBC(barCode).then(function(data) {//data为json字符串,使用前需反序列化console.log(angular.fromJson(data));})
【accAdd】加法
【accSub】减法
【fnRoundValue】模拟ERP中精度舍入方法
按照设置获取精度舍入值
示例
var qty = BarCodeServices.fnRoundValue(oldQty,//单位舍入精度UOMRoundPrecision,//舍入类型,等同U9中舍入类型枚举,0=全部进 1=全部舍 2=按值舍入UOMRoundType,//舍入值UOMRoundValue)
【allSettled】
Polyfill实现的Promise.allSettled方法
【queue】
【getDebounceFn】封装防抖延迟执行方法
返回具有防抖功能的方法,内部使用$timeout实现,所以不用再调用angularjs的$apply()。
注意:该方法只是封装并返回,实际执行仍需再次调用。注意示例中最后的括号。
示例
$scope.inputOnchange= function(){BarCodeServices.getDebounceFn(function () {handle();//真正要执行的操作或方法}, 100)()//需主动调用才能执行。}
【getEMPBusinessProfile】获取业务参数
获取U9条码平台【应用配置】中参数
示例
//调拨验货是否扫码验货,默认要扫码验货,如果料品定义不扫码验货,按料品定义$scope.IsRestrictedScanBarCode=true;BarCodeServices.getEMPBusinessProfile("TransRcvIn_ItemBarCodeScan").then(function (data) {/***var data = {AppParamCode:"",AppParamName:"",Value:"",ValueType:""}**/})
BarCodeStorageServices工具类
概述
该工具类主要用于保存App暂存内容到数字平台中,供跨PDA协同使用的暂存数据。提供查询,保存,删除方法。所有方法均只通过KeyString进行线索流转。
KeyString推荐命名格式:应用appid + “_” + 应用业务自定义key
【getBarcodeStorageByKey】获取暂存数据
通过KeyString获取暂存
示例
var keyString = "ConfirmIssueDoc_" + $scope.homeData.SrcType + "&&&" + key;BarCodeStorageServices.getBarcodeStorageByKey(keyString).then(function (data) {//data = {barcode,content} content:Stringif (data.content && data.content.length > 0) {return data.content;}});
【saveBarcodeStorageByKey】保存暂存数据到数字平台
通过KeyString保存
示例
imanDialog.showLoading();//需要暂存的数据结构var tempStorageData = {};//用于在数字平台显示的信息var showInfo = {appName:"领料验货",docType:"生产领料单",docNo:$scope.data.DocNo}//用于查询暂存的Keyvar keyString = "ConfirmIssueDoc_" + $scope.homeData.SrcType + "&&&" + $scope.docBarCode;BarCodeStorageServices.saveBarcodeStorageByKey(keyString, JSON.stringify(tempStorageData),showInfo).then(function (data) {imanDialog.toastBottom("暂存成功");}).catchfunction (error) {imanDialog.alert(error.message);}).finally(function(){imanDialog.hideLoading();})
【deleteBarcodeStorageByKey】删除暂存
通过KeyString删除
示例
