Commit 8caed643 by 毛勇泽

扫描解析

parent f93bbf76
......@@ -72,4 +72,35 @@ export class BzhxDao extends BaseTable<Bzhx> {
wp.orderByAsc('LSM');
return this.query(wp, this.getTableColumns())
}
async selectHXList(hx_map?: any): Promise<Bzhx[]> {
let wp = this.getPredicates();
if (hx_map) {
wp.equalTo('pmdmSix', hx_map['wzdm']);
wp.or()
wp.in('pmdmSix',[`${hx_map['pmdm_hxmc']}`])
wp.or()
wp.equalTo('pmdmten',hx_map['wzdm']);
wp.or()
wp.beginWrap()
wp.equalTo('wzpm', hx_map['wzdm'])
wp.and()
wp.equalTo("pmdmten","0000")
wp.or()
wp.in("pmdmten",[`${hx_map['pmdm_hxmc']}`])
wp.endWrap()
wp.or()
wp.beginWrap()
wp.equalTo('wzpm', hx_map['wzdm'])
wp.and()
wp.beginWrap()
wp.equalTo('hxmc', "无号配号")
wp.or()
wp.in('hxmc', [`${hx_map['pmdm_hxmc']}`])
wp.endWrap()
wp.endWrap()
}
console.log("执行语句==="+JSON.stringify(hx_map))
console.log("执行语句==="+JSON.stringify(wp))
return this.query(wp, this.getTableColumns())
}
}
\ No newline at end of file
import HashMap from '@ohos.util.HashMap';
interface ParserResult {
data?: any,
success: boolean,
status: number,
msg?: string
}
const JsonResult = {
EXCEPTION_CODE: 500,
SUCCESS_CODE: 200
}
export class ScanParser {
/**
* @param bqData 待解析的标签数据
*/
async analysisQrCode(bqData: string,): Promise<ParserResult> {
var str = bqData
let result: ParserResult;
//是否为货架码
if (str.indexOf('hjguid') !== -1 && str.indexOf('hwh') !== -1) {
result.data = [JSON.parse(bqData)];
result.success = true;
result.status = JsonResult.SUCCESS_CODE;
return result
}
//是否为包裹码
if (str.indexOf('SF') !== -1 || str.indexOf('YZ') !== -1 || str.indexOf('JD') !== -1) {
result.data = [{
ddh: bqData,
bgzt: '待上架'
}];
result.success = true;
result.status = JsonResult.SUCCESS_CODE;
return result
}
//数据对象
let bqObj = { wzdm: '', pmdm: '', pmsl: 0 };
//数量键值对象
let bqMap = new HashMap();
//若信息包含A909说明是15所标签
if (str.indexOf("A909") !== -1) {
const indexOfA002 = str.indexOf("A002");
const res1 = str.substring(indexOfA002 + 4, indexOfA002 + 4 + 9);
//设置品名代码
bqObj.pmdm = res1;
const indexOfA051 = str.indexOf("A051");
if (indexOfA051 == -1) {
result.msg = "标签解析异常,请扫描正确的标签"
result.success = false
result.status = JsonResult.EXCEPTION_CODE
return result;
}
const strA051 = str.substring(indexOfA051 + 4, str.length);
const indexOfA = strA051.indexOf("A");
const tmpPmsl = parseInt(strA051.substring(0, indexOfA));
//设置数量
bqObj.pmsl = tmpPmsl;
//品名代码与数量映射
bqMap.set(bqObj.pmdm, tmpPmsl);
} else {
//单品标签GM
if (str.indexOf("A950") !== -1 && str.indexOf("A010") !== -1 && str.indexOf("A005") !== -1) {
str = str.replace("07A950", "BZDPGM|")
.replace("A002", "|")
.replace("A006", "|")
.replace("A010", "|")
.replace("A005", "|");
}
//单品标签QR
if (str.indexOf("A001") !== -1 && str.indexOf("A010") !== -1 && str.indexOf("A061") == -1) {
str = str.replace("07A001", "BZDPQR|")
.replace("A002", "|")
.replace("A006", "|")
.replace("A010", "|")
.replace("A005", "|");
}
// //内包标签GM
// if (str.indexOf("A950") !== -1 && str.indexOf("A005") !== -1 && str.indexOf("A010") == -1) {
// str = str.replace("07A950", "BZNBZGM|").replace("A002", "|").replace("A006", "|").replace("A005", "|");
// }
//内包标签QR
if (str.indexOf("A950") !== -1 && str.indexOf("A001") !== -1) {
str = str.replace("07A950", "BZNBZQR|")
.replace("A001", "|")
.replace("A002", "|")
.replace("A006", "|")
.replace("A005", "|");
}
//中包标签GM
if (str.indexOf("A950") !== -1 && str.indexOf("A051") !== -1 && str.indexOf("A010") == -1) {
let s = str.replace("07A950", "BZZBZGM|").replace("A002", "|").replace("A006", "|").replace("A051",
"|");
let res = s.split("|");
//BZZBZGM|品名代码|物资标识码:数量
str = res[0] + "|" + res[1] + "|" + res[2] + ":" + res[4];
}
//中包标签QR
if (str.indexOf("A001") !== -1 && str.indexOf("A051") !== -1 && str.indexOf("A010") == -1) {
let s = str.replace("07A001", "BZZBZQR|").replace("A002", "|").replace("A006", "|").replace("A051",
"|");
let res = s.split("|");
let wzbsm = res[4].split(':');
if (wzbsm.length > 1) {
str = res[0] + "|" + res[1] + "|" + res[4];
} else {
//BZZBZQR|品名名称|物资标识码:数量
str = res[0] + "|" + res[1] + "|" + res[2] + ":" + res[4];
}
}
//外包标签GM
if (str.indexOf("A950") !== -1 && str.indexOf("A051") !== -1) {
let s = str.replace("07A950", "BZWBZGM|")
.replace("A002", "|")
.replace("A006", "|")
.replace("A051", "|")
.replace("A061", "|")
.replace("A010", "|")
.replace("A015", "|");
let res = s.split("|");
//BZWBZGM|品名代码|物资标识码:数量
str = res[0] + "|" + res[1] + "|" + res[2] + ":" + res[4];
}
//外包(混)标签GM
if (str.indexOf("A951") !== -1 && str.indexOf("A015") !== -1) {
let s = str.replace("07A951", "BZWBZGM|").replace("A061", "|").replace("A010", "|").replace("A015",
"|");
let res = s.split("|");
let wzbsm = res[1].split(":"); //获取物资标识码:数量
let sql = "select wzdm from tab_xtwh_jcsj_wzdm where lsm = " + wzbsm[0] + "";
// 查询数据库
let wzdm = await bzhxModal.queryLsm(wzbsm[0])
//BZWBZGM|品名代码|物资标识码:数量
str = res[0] + "|" + wzdm['wzdm'] + "|" + res[1] + "|" + res[2] + "|" + res[4];
}
//外包标签QR
if (str.indexOf("A051") !== -1 && str.indexOf("A005") !== -1) {
let s = str.replace("07A001", "BZWBZQR|")
.replace("A002", "|")
.replace("A006", "|")
.replace("A051", "|")
.replace("A061", "|")
.replace("A010", "|")
.replace("A005", "|");
let res = s.split("|");
//BZWBZGM|品名代码|物资标识码:数量
str = res[0] + "|" + res[1] + "|" + res[2] + ":" + res[4];
}
//外包(混)标签QR
if (str.indexOf("A001") !== -1 && str.indexOf("A951") !== -1) {
str = str.replace("07A001", "BZWBZQR|")
.replace("A951", "|")
.replace("A061", "|")
.replace("A010", "|")
.replace("A005", "|");
}
//外包装/中包装/内包装按照|截取标签数据
let res = str.split("|");
//res[0]-取标签识别头信息
//res[1]-物资名称|物资代码
//res[2]-物资识别码:数量|号型:数量
//res[3]-
let firstRes = res[0];
//解析外包装和中包装二维码数据
//外包装--BZWBZGM|502118|865825756:5;864609135:2;867395786:3;861051856:1;861260280:1|600|500|480|18|20190304|3Y|2018-ZZ-被装-ZHTJ-2046|68993514
//外包装--BZWBZQR|17作战靴|280:5;270:2;265:3;260:1;250:1|18|20190304|3514工厂
//中包装--BZZBZGM|501469|869982051:20|68993514-----BZZBZQR|07A内手套|大号:20|3514工厂
if (firstRes.indexOf("BZWBZGM") !== -1 || firstRes.indexOf("BZWBZQR") !== -1 || firstRes.indexOf(
"BZZBZGM") !== -1 || firstRes.indexOf("BZZBZQR") !== -1) {
//外包装/中包装/截取品名代码或者品名名称
//var res1 = res[1];
bqObj.wzdm = res[1];
//res[2]类似这样:865825756:5;864609135:2;867395786:3;861051856:1;861260280:1
let res2 = res[2].split(";");
for (let i = 0; i < res2.length; i++) {
//物资识别码:数量
let ss = res2[i].split(":");
//把物资标识码(号型名称)和号型数量放入Map
//拼接物资标识码(号型名称)
//设置Map,键:物资识别码|号型,值:数量
bqMap.set(ss[0], ss[1]);
if (bqObj.pmdm) {
bqObj.pmdm += ",'" + ss[0] + "'";
} else {
bqObj.pmdm = "'" + ss[0] + "'";
}
//合计号型数量
let tmp1 = bqObj.pmsl;
tmp1 += parseInt(ss[1]);
bqObj.pmsl = tmp1;
//测试没问题可以用
//bqMap.pmsl += parseInt(ss[1]);
}
//解析内包装二维码数据
//内包装GM--BZNBZGM|503719|861859749|4号|68993543-----
//内包装QR--BZNBZQR|07陆下士肩章|861859749|4号|3543工厂
} else if (firstRes.indexOf("BZNBZGM") !== -1 || firstRes.indexOf("BZNBZQR") !== -1) {
//外包装/中包装/内包装截取品名代码或者品名名称
//把物资标识码(号型名称)和号型数量放入Map,内包的默认数量1
bqMap.set(res[3], 1)
bqObj.pmdm = "'" + res[3] + "'";
bqObj.pmsl += 1;
} else if (firstRes.indexOf(
"BZDPGM") !== -1 || firstRes.indexOf("BZDPQR") !== -1) {
//外包装/中包装/内包装截取品名代码或者品名名称
bqObj.wzdm = res[1];
//把物资标识码(号型名称)和号型数量放入Map,内包的默认数量1
bqMap.set(res[2], 1);
bqObj.pmdm = "'" + res[2] + "'";
bqObj.pmsl += 1;
} else if (str.length == 6 || str.length == 9 || str.length == 10) {
//6位为无号配号,9位为物资标识代码,10位为带号型号码
//一维码标签截取物资标识码或者号型代码
//res1 = str;
bqObj.wzdm = str;
//解析内包装一维码标签数据
//把物资标识码/号型代码和数量放入Map,内包装一维码标签默认数量1
bqMap.set(str, 1);
bqObj.pmdm = "'" + str + "'";
bqObj.pmsl += 1;
}
}
return result;
}
getHjInfo(str: string) {
}
}
\ No newline at end of file
......@@ -266,8 +266,8 @@ async function analysisQrCode(bqData:string, isData:boolean = false) {
Object.keys(hx_map).forEach((item) => {
if (item == wzdm["LSM"] || item == wzdm["HXMC"] || item == wzdm["HXDM"]) {
let Pzmx = {
pmdm: wzdm.wzdm,
pmdmcode: wzdm.hxdm,
pmdm: wzdm.pmdmSix,
pmdmcode: wzdm.pmdmTen,
srsl: hx_map[item],
wzpm: wzdm.wzpm,
hxmc: wzdm.hxmc
......
......@@ -39,8 +39,8 @@ class BzhxModel {
Logger.info("查询LSM结果"+JSON.stringify(res))
return res;
}
async queryHXlist(hx_map?: any):Promise<Wzhxdm[]> {
let res = await SQLiteContext.with(WzhxdmDao).selectHXList(hx_map);
async queryHXlist(hx_map?: any):Promise<Bzhx[]> {
let res = await SQLiteContext.with(BzhxDao).selectHXList(hx_map);
return res;
}
// 清空表
......
......@@ -226,8 +226,8 @@ struct UHFScanPage{
showList(epc?:string){
this.doneEpcsList.push(epc)
try {
// this.handleanalysisQrCode("050400000000000016033C62BF2A111F0000A10040E220419000");
this.handleanalysisQrCode(epc);
this.handleanalysisQrCode("050400000000000016033C62BF2A111F0000A10040E220419000");
// this.handleanalysisQrCode(epc);
}catch (err){
Logger.info("解析失败1"+epc+JSON.stringify(err))
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论