Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/idCardForm.js =================================================================== diff -u -r34765 -r35347 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/idCardForm.js (.../idCardForm.js) (revision 34765) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/idCardForm.js (.../idCardForm.js) (revision 35347) @@ -67,7 +67,6 @@ IDCard = Ext.data.Record.create(idCardFields); var TraceableMaterial = Ext.data.Record.create(traceableMaterialFields); - // 显示标识牌表单 function showIDCardListView() { supplementResult = false; @@ -1102,22 +1101,6 @@ }); } - var tousseIsFirst = true; - - function getTousseName(barcode,item) { - Ext.Ajax.request({ - url: WWWROOT + '/disinfectSystem/recyclingRecordAction!loadTousseInstanceInfo.do', - async: false, - params: { barcode: barcode}, - success: function (response, options) { - var result = Ext.decode(response.responseText); - var tousseName = result.tousseName; - item.set('tousseName',tousseName); - tousseIsFirst = true; - } - }); - } - function writerRFIDCard() { var idCardsRecords = gridPanel.getSelectionModel().getSelections(); if (idCardsRecords.length == 0) { @@ -1183,11 +1166,6 @@ width: 150, menuDisabled: true }, { - header: "用户区数据", - dataIndex: 'userId', - width: 100, - menuDisabled: true - }, { header: "标识牌条码", dataIndex: 'barcode', width: 100, @@ -1232,18 +1210,41 @@ plain: true, items: [recordGrid], buttonAlign: 'center', - listeners : { - 'close':{ - fn: function(){ + listeners: { + 'close': { + fn: function () { stopRFID(); closeRFID(); - setTimeout(function(){ + setTimeout(function () { grid.dwrReload(); - },500); + }, 500); } } }, buttons: [{ + text: '感应范围调节', + handler: function () { + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/rssiRecordAction!loadRssiRecordByIp.do', + success: function (response, options) { + var result = Ext.decode(response.responseText); + var rssiValue = 100; + var id = ''; + if (result.success) { + if (result.data) { + rssiValue = parseInt(result.data.rssiValue); + id = result.data.id; + } + } + updateRSSI(rssiValue, id); + }, + failure: function (response, options) { + var result = Ext.decode(response.responseText); + showResult(result.message); + } + }); + } + }, { text: '连续读取标签', handler: function () { startRFID(); @@ -1268,7 +1269,7 @@ var uid = RFIDStoreRecords[0].data.uid; top.Ext.Msg.confirm('请确认', '是否写入标签?', function (btn) { if (btn == 'yes') { - writeRFID('M' + barcode + 'FF',uid); + writeRFID(barcode, uid); } }) } @@ -1292,53 +1293,127 @@ if (isData) { var arr = value.split(','); var uid = arr[0] || ''; - var userId = arr[1] || ''; - var barcode = ''; - if (userId !== '') { - barcode = userId.substring(userId.indexOf("M") + 1, userId.indexOf("FF")); + var barcode = arr[1] || ''; + if(barcode !== ''){ + barcode = barcode.split('F')[0] || '' } if (RFIDStore.getCount() > 0) { var isHas = false; + var tousseName = ''; + var index = 0; for (var i = 0; i < RFIDStore.getCount(); i++) { if (RFIDStore.getAt(i).data.uid == uid) { - if(userId !== ''){ - RFIDStore.getAt(i).set('userId', userId); + if (barcode !== '') { RFIDStore.getAt(i).set('barcode', barcode); } var count = parseInt(RFIDStore.getAt(i).data.count); - var tousseName = RFIDStore.getAt(i).data.tousseName || ''; - if(tousseName == '' && barcode !== '' && tousseIsFirst){ - tousseIsFirst = false; - getTousseName(barcode,RFIDStore.getAt(i)); - } RFIDStore.getAt(i).set('count', count + 1); isHas = true; + tousseName = RFIDStore.getAt(i).data.tousseName; + index = i; break; } } - if (!isHas) { - if(uid && uid !== 'undefined'){ + if (isHas) { + if (uid && uid !== 'undefined') { + if (barcode !== '' && tousseName == '') { + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/recyclingRecordAction!loadTousseInstanceInfo.do', + async: false, + params: { barcode: barcode }, + success: function (response, options) { + var result = Ext.decode(response.responseText); + if (result.success) { + var tousseName = result.tousseName; + RFIDStore.getAt(index).set('tousseName', tousseName); + } + } + }); + } + } + } else { + if (uid && uid !== 'undefined') { + if (barcode == '') { + var record = new items({ + number: RFIDStore.getCount() + 1, + uid: uid, + barcode: '', + tousseName: '', + count: 1 + }); + RFIDStore.add(record); + } else { + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/recyclingRecordAction!loadTousseInstanceInfo.do', + async: false, + params: { barcode: barcode }, + success: function (response, options) { + var result = Ext.decode(response.responseText); + if (result.success) { + var tousseName = result.tousseName; + var record = new items({ + number: RFIDStore.getCount() + 1, + uid: uid, + barcode: barcode, + tousseName: tousseName, + count: 1 + }); + RFIDStore.add(record); + } else { + var record = new items({ + number: RFIDStore.getCount() + 1, + uid: uid, + barcode: barcode, + count: 1 + }); + RFIDStore.add(record); + } + } + }); + } + } + } + } else { + if (uid && uid !== 'undefined') { + if (barcode == '') { var record = new items({ - number: RFIDStore.getCount() + 1, + number: 1, uid: uid, - userId: userId, - barcode: barcode, + barcode: '', + tousseName: '', count: 1 }); RFIDStore.add(record); + } else { + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/recyclingRecordAction!loadTousseInstanceInfo.do', + async: false, + params: { barcode: barcode }, + success: function (response, options) { + var result = Ext.decode(response.responseText); + if (result.success) { + var tousseName = result.tousseName; + var record = new items({ + number: 1, + uid: uid, + barcode: barcode, + tousseName: tousseName, + count: 1 + }); + RFIDStore.add(record); + } else { + var record = new items({ + number: 1, + uid: uid, + barcode: barcode, + count: 1 + }); + RFIDStore.add(record); + } + } + }); } } - } else { - if(uid && uid !== 'undefined'){ - var record = new items({ - number: 1, - uid: uid, - userId: userId, - barcode: barcode, - count: 1 - }); - RFIDStore.add(record); - } } } else { if (errorStatus == 'msg1') { Index: ssts-web/src/main/webapp/disinfectsystem/packing/setPlugInRFID.js =================================================================== diff -u -r35330 -r35347 --- ssts-web/src/main/webapp/disinfectsystem/packing/setPlugInRFID.js (.../setPlugInRFID.js) (revision 35330) +++ ssts-web/src/main/webapp/disinfectsystem/packing/setPlugInRFID.js (.../setPlugInRFID.js) (revision 35347) @@ -10,6 +10,7 @@ var msg5 = '端口已打开!'; var msg6 = '数据写入成功!'; var msg7 = '数据写入失败,请重新写入!'; +var newRssiValue = -100; //hex转字符串 function hextoString(hex) { @@ -36,6 +37,36 @@ return arr } +function hex_to_bin(str) { + let hex_array = [{ key: 0, val: "0000" }, { key: 1, val: "0001" }, { key: 2, val: "0010" }, { key: 3, val: "0011" }, { key: 4, val: "0100" }, { key: 5, val: "0101" }, { key: 6, val: "0110" }, { key: 7, val: "0111" }, + { key: 8, val: "1000" }, { key: 9, val: "1001" }, { key: 'a', val: "1010" }, { key: 'b', val: "1011" }, { key: 'c', val: "1100" }, { key: 'd', val: "1101" }, { key: 'e', val: "1110" }, { key: 'f', val: "1111" }] + + let value = "" + for (let i = 0; i < str.length; i++) { + for (let j = 0; j < hex_array.length; j++) { + if (str.charAt(i).toLowerCase() == hex_array[j].key) { + value = value.concat(hex_array[j].val) + break + } + } + } + return value +} + +//RSSI计算规则 +function str16ToRSSI(str) { + var str2 = hex_to_bin(str); + if (str2.charAt(0) == 1 || str2.charAt(0) == '1') { + str2 = str2 - 1 + } + var newStr = ''; + for (var i = 0; i < str2.toString().length; i++) { + newStr += (Math.abs(str2.toString()[i] - 1).toString()); + } + var rssi = parseInt(newStr, 2) / 10; + return -rssi; +} + //打开串口并连接 async function openPort(params, callback) { try { @@ -151,11 +182,13 @@ writer = port.writable.getWriter(); //设置循环查询获取用户区的数据 if (usbVendorId == 6790 && usbProductId == 29987) {//桌面式 F5005-H - var data = new Uint8Array([187, 23, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 41, 13, 10]); - await writer.write(data); + // var data = [187, 23, 9, 0, 0, 0, 0, 0, 0, 0, 0, 8, 40, 13, 10]; + var data = [187, 23, 2, 0, 0, 25, 13, 10]; + var startData = new Uint8Array(data); + await writer.write(startData); } else if (usbVendorId == 4292 && usbProductId == 60000) {//手提式 A100 var encoder = new TextEncoder(); - var data = encoder.encode(">x m 1 03 00 09\r\n"); + var data = encoder.encode(">Af\r\n"); await writer.write(data); } else { callback(msg1, false, 'msg1'); @@ -172,6 +205,9 @@ break; } if (value) { + if (sessionStorage.getItem('rssiValue')) { + newRssiValue = 0 - sessionStorage.getItem('rssiValue'); + } var dataString = ""; if (usbVendorId == 6790 && usbProductId == 29987) {//桌面式 F5005-H if (value.length > 20) { @@ -217,29 +253,28 @@ dataString = dataString.toUpperCase(); if (getAllData) { var newTid; - if (dataString.indexOf('BB') >= 0) { - var tid = dataString.substring(36, 60); - if (tid.length == 24 && tid.indexOf('E') == 0) { - newTid = tid || '' + var rssiValue = 0; + if (dataString.indexOf('BB') >= 0 && dataString.length == 64) { + var tid = dataString.substring(34, 58); + var epc = dataString.substring(10, 34); + var rssi = dataString.substring(58, 62); + var newData = hextoString(epc); + var rssiValue = str16ToRSSI(rssi); + newTid = tid + ',' + newData; + if (rssiValue < -20 && rssiValue > -100 && rssiValue > newRssiValue) { + callback(newTid, true); } } - if (dataString.indexOf('4D') > -1 && dataString.indexOf('4646') > -1) { - var newData = hextoString(dataString); - if (newData.indexOf("M") == 0) { - newData = newData.substring(newData.indexOf("M"), newData.indexOf("FF") + 2); - newTid += ',' + newData; - } - } - if (newTid) { - callback(newTid, true); - } } else { - if (dataString.indexOf('4D') > -1 && dataString.indexOf('4646') > -1) { - var newData = hextoString(dataString); - if (newData.indexOf("M") == 0) { - newData = newData.substring(newData.indexOf("M") + 1, newData.indexOf("FF")); - if (barcode !== newData) { - barcode = newData; + if (dataString.indexOf('BB') >= 0 && dataString.length == 64) { + var tid = dataString.substring(34, 58); + var epc = dataString.substring(10, 34); + var rssi = dataString.substring(58, 62); + var newData = hextoString(epc); + var rssiValue = str16ToRSSI(rssi); + if (barcode !== newData) { + barcode = newData; + if (rssiValue < 0 && rssiValue > -100 && rssiValue > newRssiValue) { callback(barcode, true); } } @@ -263,23 +298,21 @@ barcode = '' } } - if (dataString !== '' && dataString.indexOf('M') > 0) { - if (getAllData) { - var arr = dataString.split('M'); - var uid = arr[0].split('R')[1]; - var userId = arr[1]; - userId = hextoString(userId); - if (uid) { - callback(uid + ',' + userId, true); - } - } else { - var newData = dataString.substring(dataString.indexOf('M') + 1, dataString.indexOf('4646')); + if (dataString !== '' && dataString.indexOf('46') > 0) { + var newData = ''; + if (dataString.indexOf('T') == 0) { + newData = dataString.substring(dataString.indexOf('T') + 1, dataString.indexOf('46')); newData = hextoString(newData); - if (newData.indexOf("M") == 0) { - if (barcode !== newData) { - barcode = newData.substring(1, newData.length); - callback(barcode, true); - } + } else if (dataString.indexOf('>T') == 0) { + newData = dataString.substring(dataString.indexOf('>T') + 1, dataString.indexOf('46')); + newData = hextoString(newData); + } + var rssi = dataString.substring(dataString.length - 2, dataString.length); + var rssiValue = parseInt(rssi, 16) - 130; + if (rssiValue < 0 && rssiValue > -100 && rssiValue > newRssiValue) { + if (barcode !== newData) { + barcode = newData; + callback(barcode, true); } } } @@ -336,32 +369,27 @@ if (dataString !== '') { dataString = dataString.toUpperCase(); if (getAllData) { - var newTid; - if (dataString.indexOf('BB') >= 0) { - var tid; - if (dataString.indexOf('4D') > 0) { - tid = dataString.substring(30, dataString.indexOf('4D') - 2); - } else { - tid = dataString.substring(30, dataString.length - 2); + if (dataString.indexOf('BB') >= 0 && dataString.length == 64) { + var tid = dataString.substring(34, 58); + var epc = dataString.substring(10, 34); + var rssi = dataString.substring(58, 62); + var newData = hextoString(epc); + var rssiValue = str16ToRSSI(rssi); + newTid = tid + ',' + newData; + if (rssiValue < 0 && rssiValue > -100 && rssiValue > newRssiValue) { + callback(newTid, true); } - if (tid.length > 10 && tid.indexOf('E') == 0) { - newTid = tid || '' - } } - if (dataString.indexOf('4D') > -1 && dataString.indexOf('4646') > -1) { - var newData = hextoString(dataString); - if (newData.indexOf("M") == 0) { - newData = newData.substring(newData.indexOf("M"), newData.indexOf("FF") + 2); - callback(newTid + ',' + newData, true); - } - } } else { - if (dataString.indexOf('4D') > -1 && dataString.indexOf('4646') > -1) { - var newData = hextoString(dataString); - if (newData.indexOf("M") == 0) { - newData = newData.substring(newData.indexOf("M") + 1, newData.indexOf("FF")); - if (barcode !== newData) { - barcode = newData; + if (dataString.indexOf('BB') >= 0 && dataString.length == 64) { + var tid = dataString.substring(34, 58); + var epc = dataString.substring(10, 34); + var rssi = dataString.substring(58, 62); + var newData = hextoString(epc); + var rssiValue = str16ToRSSI(rssi); + if (barcode !== newData) { + barcode = newData; + if (rssiValue < 0 && rssiValue > -100 && rssiValue > newRssiValue) { callback(barcode, true); } } @@ -385,12 +413,20 @@ barcode = '' } } - if (dataString !== '' && dataString.indexOf('M') > 0) { - var newData = dataString.substring(dataString.indexOf('M') + 1, dataString.indexOf('4646')); - newData = hextoString(newData); - if (newData.indexOf("M") == 0) { + if (dataString !== '' && dataString.indexOf('46') > 0) { + var newData = ''; + if (dataString.indexOf('T') == 0) { + newData = dataString.substring(dataString.indexOf('T') + 1, dataString.indexOf('46')); + newData = hextoString(newData); + } else if (dataString.indexOf('>T') == 0) { + newData = dataString.substring(dataString.indexOf('>T') + 1, dataString.indexOf('46')); + newData = hextoString(newData); + } + var rssi = dataString.substring(dataString.length - 2, dataString.length); + var rssiValue = parseInt(rssi, 16) - 130; + if (rssiValue < 0 && rssiValue > -100 && rssiValue > newRssiValue) { if (barcode !== newData) { - barcode = newData.substring(1, newData.length); + barcode = newData; callback(barcode, true); } } @@ -423,7 +459,7 @@ async function startRFID() { var { usbProductId, usbVendorId } = port.getInfo(); if (usbVendorId == 6790 && usbProductId == 29987 && isStop == true) {//桌面式 F5005-H - var data = [187, 23, 9, 0, 0, 0, 0, 0, 0, 0, 0, 8, 40, 13, 10]; + var data = [187, 23, 2, 0, 0, 25, 13, 10]; var startData = new Uint8Array(data); await writer.write(startData); isStop = false; @@ -460,23 +496,14 @@ } var { usbProductId, usbVendorId } = port.getInfo(); if (usbVendorId == 6790 && usbProductId == 29987) {//桌面式 F5005-H - var barcodeArr = stringtoArr(barcode); - var addArr = []; - if (barcodeArr.length < 18) { - for (var j = 0; j < 18 - barcodeArr.length; j++) { - addArr.push(0); - } - } - // var arr = [187]; - // var arr1 = [26, 42, 0, 0, 0, 0, 1, 0, 12]; - // var arr3 = [3, 0, 0, 0, 9]; + var barcodeArr = stringtoArr(barcode + 'F'); var arr = [187]; - var arr1 = [26, 28, 0, 0, 0, 0, 0, 0, 0]; - var arr3 = [3, 0, 0, 0, 8]; + var arr1 = [26, 24, 0, 0, 0, 0, 0, 0, 0]; + var arr3 = [1, 0, 2, 0, 6]; var resultArr = arr1.concat(arr3).concat(barcodeArr) - if (barcodeArr.length < 16) { - for (var k = 0; k < 16 - barcodeArr.length; k++) { + if (barcodeArr.length < 12) { + for (var k = 0; k < 12 - barcodeArr.length; k++) { resultArr.push(0) } } Index: ssts-web/src/main/webapp/disinfectsystem/packing/packingView.js =================================================================== diff -u -r35148 -r35347 --- ssts-web/src/main/webapp/disinfectsystem/packing/packingView.js (.../packingView.js) (revision 35148) +++ ssts-web/src/main/webapp/disinfectsystem/packing/packingView.js (.../packingView.js) (revision 35347) @@ -2594,6 +2594,33 @@ handler: function () { connectRFIDFun(0); } + }, + { + xtype: 'button', + margin: '0 0 0 10', + hidden: !(sstsConfig.enableRFIDTousseIdCard && !isIE()), + text: '' + '感应范围调节' + '', + handler: function () { + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/rssiRecordAction!loadRssiRecordByIp.do', + success: function (response, options) { + var result = Ext.decode(response.responseText); + var rssiValue = 100; + var id = ''; + if(result.success){ + if(result.data){ + rssiValue = parseInt(result.data.rssiValue); + id = result.data.id; + } + } + updateRSSI(rssiValue,id); + }, + failure: function (response, options) { + var result = Ext.decode(response.responseText); + showResult(result.message); + } + }); + } }] } ]