概述

本文档适用于U9C分支下各工具方法说明,U9V6企业版请参照原文档

BarCodeServices工具类

概述

BarCodeService是U9条码移动端提供的公共方法类,里边包含了大部分常用工具方法。主要包括访问U9服务,调用U9存储过程,获取数字平台参数,获取存储地点、库位数据,串行/并行执行异步方法,数字处理等。

该文档中涉及方法源码,均可在下方文件中查看具体参数和源码。如有疑问,可联系U9条码研发相关人员。

/bower_components/angular-im-barcode/src/js/services/BarCodeServices.js

注意

使用BarCodeServices前,请先依赖注入该工具类
image.png

【runSP】 调用Erp存储过程

调用指定的Erp存储过程

  1. var spName="BC_P_GetSubAppSettingParam";//存储过程名
  2. var timeout=null;//超时时间,单位秒,默认null=>30s
  3. //存储过程参数列表,ParamDataType 可选值string,(int,int32),int64,date,datetime,(bool,boolean)
  4. var spParams=[];
  5. spParams.push({"ParamName":"barcode","ParamValue":"BCMaxPatch","ParamDataType":"string"});
  6. //调用方法,执行存储过程
  7. BarCodeServices.runSP(spName,timeout,spParams).then(function(data){
  8. //data为已经反序列化的对象,通常为数组
  9. console.log(data);
  10. }).catch(function(error){
  11. BarCodeServices.get
  12. imanDialog
  13. })

返回值

  1. [{"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服务,推荐使用存储过程进行条码解析。

示例

  1. var dataInfo = {};
  2. dataInfo.BarCode = paramIn; //传给存储过程的唯一参数,参数可通过字符分割形式传多个,存储过程中处理即可
  3. dataInfo.DocTypeEnum = 14; //单据类型 见上面截图
  4. dataInfo.OpType = 'BC_P_XXXX'; //存储过程名称
  5. dataInfo.OperationKey = 'BarCodeAnalyze_RunSP'; //调用存储过程模式固定传值不可修改,若不是存储过程模式可修改
  6. BarCodeServices.barCodeAnalyze(dataInfo).then(function (data) {
  7. }, function (err) {
  8. });

返回值

  1. //字符串型JSON数组,数组内内容取决于服务实现
  2. "[{BarCode:'123456'}]";

【createDoc】生单审核调用指定服务

自动转接调用U9RestSV服务,进行生单或者审核操作,使用该方法前,请先在BC_CreateDocSVMessageBE预置数据。具体方法参见预置反射映射关系表

示例

  1. //服务参数,同U9Rest服务入参格式保持一致,数组或对象均可
  2. var createJson = {};
  3. //最后需转成JSON格式
  4. var createDocJSONString = JSON.stringify(createJson);
  5. BarCodeServices
  6. .createDoc(createDocJSONString)
  7. .then(function (data) {
  8. //data取决于取决于U9服务实现,和U9服务返回DTO保持一致,为Json字符串
  9. })
  10. .catch(function (err){
  11. var errorMessage = BarCodeService.getErrorMessage(err)
  12. })
  13. .finally(function(){})

【barCodeAnalyzeOnlyItemBC】

直接解析料码信息,仅限料品条码可以被解析。
示例

  1. BarCodeServices.barCodeAnalyzeOnlyItemBC(barCode).then(function(data) {
  2. //data为json字符串,使用前需反序列化
  3. console.log(angular.fromJson(data));
  4. })

【accAdd】加法

避免JS前端加法出现小数问题的加法。

【accSub】减法

避免JS前端加法出现小数问题的减法。

【fnRoundValue】模拟ERP中精度舍入方法

按照设置获取精度舍入值
示例

  1. var qty = BarCodeServices.fnRoundValue(oldQty,
  2. //单位舍入精度
  3. UOMRoundPrecision,
  4. //舍入类型,等同U9中舍入类型枚举,0=全部进 1=全部舍 2=按值舍入
  5. UOMRoundType,
  6. //舍入值
  7. UOMRoundValue)

【allSettled】

Polyfill实现的Promise.allSettled方法

【queue】

Polyfill实现的Promise.queue方法

【getDebounceFn】封装防抖延迟执行方法

返回具有防抖功能的方法,内部使用$timeout实现,所以不用再调用angularjs的$apply()。
注意:该方法只是封装并返回,实际执行仍需再次调用。注意示例中最后的括号。
示例

  1. $scope.inputOnchange= function(){
  2. BarCodeServices.getDebounceFn(function () {
  3. handle();//真正要执行的操作或方法
  4. }, 100)()//需主动调用才能执行。
  5. }

【getEMPBusinessProfile】获取业务参数

获取U9条码平台【应用配置】中参数
示例

  1. //调拨验货是否扫码验货,默认要扫码验货,如果料品定义不扫码验货,按料品定义
  2. $scope.IsRestrictedScanBarCode=true;
  3. BarCodeServices.getEMPBusinessProfile("TransRcvIn_ItemBarCodeScan").then(function (data) {
  4. /***
  5. var data = {
  6. AppParamCode:"",
  7. AppParamName:"",
  8. Value:"",
  9. ValueType:""
  10. }
  11. **/
  12. })

BarCodeStorageServices工具类

概述

该工具类主要用于保存App暂存内容到数字平台中,供跨PDA协同使用的暂存数据。提供查询,保存,删除方法。所有方法均只通过KeyString进行线索流转。

KeyString推荐命名格式:应用appid + “_” + 应用业务自定义key

【getBarcodeStorageByKey】获取暂存数据

通过KeyString获取暂存
示例

  1. var keyString = "ConfirmIssueDoc_" + $scope.homeData.SrcType + "&&&" + key;
  2. BarCodeStorageServices.getBarcodeStorageByKey(keyString).then(function (data) {
  3. //data = {barcode,content} content:String
  4. if (data.content && data.content.length > 0) {
  5. return data.content;
  6. }
  7. });

【saveBarcodeStorageByKey】保存暂存数据到数字平台

通过KeyString保存
示例

  1. imanDialog.showLoading();
  2. //需要暂存的数据结构
  3. var tempStorageData = {};
  4. //用于在数字平台显示的信息
  5. var showInfo = {
  6. appName:"领料验货",
  7. docType:"生产领料单",
  8. docNo:$scope.data.DocNo
  9. }
  10. //用于查询暂存的Key
  11. var keyString = "ConfirmIssueDoc_" + $scope.homeData.SrcType + "&&&" + $scope.docBarCode;
  12. BarCodeStorageServices.saveBarcodeStorageByKey(keyString, JSON.stringify(tempStorageData),showInfo)
  13. .then(function (data) {
  14. imanDialog.toastBottom("暂存成功");
  15. }).catchfunction (error) {
  16. imanDialog.alert(error.message);
  17. }).finally(function(){
  18. imanDialog.hideLoading();
  19. })

【deleteBarcodeStorageByKey】删除暂存

通过KeyString删除
示例