//解析扫描信息 //P2251076NAA;L220325;Q2000;N0205183222000006;SS0000066;V02051832;OPO1072;C15; //解析规则 //P:itemCode 物料号 //L:lot批次 //Q:qty 数量 //N:asn 供应商商发货单 ASN //S:packingCode 箱码 //T:containerCode托盘 //V:supplierCode 供应商代码 //O: order订单号 //C: poLine订单行 //B:supplierBatch 供应商批次 //返回结果 //success true:成功 false:失败 //scanType barcode:条码 qrcode:二维码 //isPack true:箱码 false:托码 export function analyseScanInfo(scanMsg) { let scanResult = { success: false, message: "", data: { isPack: null, scanType: null, itemCode: null, batch: null, qty: null, asn: null, packingNumber: null, supplierBatch: null, order: null, poLine: null, code: null, } }; if (scanMsg === "") { scanResult.message = "扫描到的内容为空"; } else { try { console.log('1.扫描到的内容:', scanMsg); //条码 if (scanMsg.indexOf(';') < 0) { scanResult.success = true; scanResult.data.code = scanMsg; scanResult.data.scanType = 'barcode'; //条码 } else { let arrayItems = scanMsg.split(';'); if (arrayItems.length > 0) { scanResult.data.scanType = 'qrcode'; //二维码 scanResult.data["test"] = 'test'; arrayItems.forEach((item, index) => { if (item != "") { let type = item.substring(0, 1); let value = item.substring(1, item.length); if (type != "") { scanResult.data.scanType = 'qrcode'; switch (type) { case "P": //物料号 case "p": scanResult.data.itemCode = value; break; case "L": //批次 case "l": scanResult.data.lot = value; break; case "Q": //数量 case "q": scanResult.data.qty = value; break; case "N": //供应商商发货单 ASN case "n": scanResult.data.asn = value; break; case "S": //箱码 case "s": scanResult.data.packingNumber = value; scanResult.data.isPack = true; break; case "T": //托盘 case "t": scanResult.data.containerCode = value; scanResult.data.isPack = false; break; case "V": //供应商批次 case "v": scanResult.data.supplierCode = value; break; case "O": //订单号 case "o": scanResult.data.order = value; break; case "C": //订单行 case "c": scanResult.data.poLine = value; break; case "B": //供应商批次 case "b": scanResult.data.supplierBatch = value; break; // default: //条码 // scanResult.data.code = item; // scanResult.data.scanType = 'barcode'; // break; } } } }) scanResult.success = true; } else { //扫描的是条码,直接返回接收到的内容 scanResult.success = true; scanResult.data.code = scanMsg; scanResult.data.scanType = 'barcode'; } } } catch (ex) { scanResult.success = false; scanResult.message = "解析遇到异常" + ex.message; } } return scanResult; } //解析完工收货标签 //P2250229RAA;L220408;Q100;N62840610;SB0000107;UEA;DU571LS;FA;E2022-4-8 //P零件号,L批次,Q数量,N生产计划号,S箱码,U计量单位,D生产线,F班次,E日期,M零件名称(待添加) //解析规则 //P:itemCode 物料号 //L:lot批次 //Q:qty 数量 //N:pnumber productionPlanNumber生产计划号 //S:packingCode 箱码 //U:uom 计量单位 //D:prodLine 生产线 //F:shift 班次 //E:produceDate日期 //返回结果 //success true:成功 false:失败 //scanType barcode:条码 qrcode:二维码 //isPack true:箱码 false:托码 export function analyseProductLabelInfo(scanMsg) { let scanResult = { success: false, message: "", data: { itemCode: null, lot: null, qty: null, pnumber: null, packingCode: null, uom: null, prodLine: null, shift: null, produceDate: null } }; if (scanMsg == "") { scanResult.message = "扫描到的内容为空"; } else { try { //条码 if (scanMsg.indexOf(';') < 0) { scanResult.success = false; scanResult.message = "标签格式不正确"; } else { let arrayItems = scanMsg.split(';'); if (arrayItems.length > 0) { arrayItems.forEach((item, index) => { if (item != "") { let type = item.substring(0, 1); let value = item.substring(1, item.length); if (type != "") { switch (type) { case "P": //物料号 case "p": scanResult.data.itemCode = value; break; case "L": //批次 case "l": scanResult.data.lot = value; break; case "Q": //数量 case "q": scanResult.data.qty = value; break; case "N": //生产计划号 ASN case "n": scanResult.data.pnumber = value; break; case "S": //箱码 case "s": scanResult.data.packingCode = value; break; case "U": //计量单位 case "u": scanResult.data.uom = value; break; case "D": //生产线 case "d": scanResult.data.prodLine = value; break; case "F": //班次 case "f": scanResult.data.shift = value; break; case "E": //日期 case "e": scanResult.data.produceDate = value; break; default: scanResult.success = false; scanResult.message = "无法识别的前缀" + type; break; } scanResult.success = true; } else { scanResult.success = false; scanResult.message = "标签信息不能为空" + type; } } }) } else { //扫描的是条码,直接返回接收到的内容 scanResult.success = false; scanResult.message = "标签分隔符错误"; } } } catch (ex) { scanResult.success = false; scanResult.message = "解析遇到异常" + ex.message; } } return scanResult; } //解析天津mes标签 //1#2546319FL#254FL003#202207110009: //1.序号1,2.生产号2546311FL,3.零件号254FL004,4.批序号202207110009 export function analyseTJMesQRCode(scanMsg) { let scanResult = { success: false, message: "", items: [] }; if (scanMsg == "") { scanResult.message = "扫描到的内容为空"; } else { try { if (scanMsg.indexOf(':') < 0) { scanResult.success = false; scanResult.message = "标签格式不正确"; } else { let arrayItems = scanMsg.split(':'); if (arrayItems.length > 0) { arrayItems.forEach((item, index) => { if (item != "") { if (item.includes('#')) { let datas = item.split('#'); //为空时是:2N if (datas.length > 1) { let itemCode = datas[2]; let location = itemCode.substring(3, 5); let data = { seq: datas[0], //序号 produceNo: datas[1], //生产号 // projectNo: datas[2], //项目号 itemCode: itemCode, //配置码(零件号) lot: datas[3], //批次 position: location //上层、下层 } scanResult.items.push(data) } } else { if (item.includes('N')) { let seq = item.substring(0, item.length - 1); let data = { seq: seq, //序号 produceNo: 'N', //生产号 projectNo: 'N', //项目号 itemCode: 'N', //配置码(零件号) lot: 'N', //批次 position: '' } scanResult.items.push(data) } } } else { scanResult.success = false; scanResult.message = "标签信息不能为空"; } }) scanResult.success = true; } else { //扫描的是条码,直接返回接收到的内容 scanResult.success = false; scanResult.message = "标签分隔符错误"; } } } catch (ex) { scanResult.success = false; scanResult.message = "解析遇到异常" + ex.message; } } return scanResult; }