概述
本文档适用于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.get
imanDialog
})
返回值
[{"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:String
if (data.content && data.content.length > 0) {
return data.content;
}
});
【saveBarcodeStorageByKey】保存暂存数据到数字平台
通过KeyString保存
示例
imanDialog.showLoading();
//需要暂存的数据结构
var tempStorageData = {};
//用于在数字平台显示的信息
var showInfo = {
appName:"领料验货",
docType:"生产领料单",
docNo:$scope.data.DocNo
}
//用于查询暂存的Key
var 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删除
示例