Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/barcode/service/BarcodeManagerImpl.java =================================================================== diff -u -r20944 -r23983 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/barcode/service/BarcodeManagerImpl.java (.../BarcodeManagerImpl.java) (revision 20944) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/barcode/service/BarcodeManagerImpl.java (.../BarcodeManagerImpl.java) (revision 23983) @@ -7,19 +7,25 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; import net.sf.json.JSONObject; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import com.forgon.directory.model.BarcodeDevice; import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; import com.forgon.disinfectsystem.entity.basedatamanager.sterilisation.Sterilisation; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.disinfectsystem.entity.idcarddefinition.IDCardDefinition; +import com.forgon.disinfectsystem.entity.idcardinstance.IDCardInstance; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.db.InitDbConnection; import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.json.JSONUtil; +import com.forgon.tools.util.ConfigUtils; /** * @author songwei @@ -35,8 +41,45 @@ @Override public BarcodeDevice getBarcodeByBarcode(String barcode) { - return (BarcodeDevice) objectDao.getByProperty(BarcodeDevice.class - .getSimpleName(), "barcode", barcode); + BarcodeDevice barcodeDevice = (BarcodeDevice) objectDao.getByProperty( + BarcodeDevice.class.getSimpleName(), "barcode", barcode); + if (barcodeDevice != null) { + return barcodeDevice; + } + // 新疆医院的需求,需要扫描器械包名字来使用标识牌 + boolean scanIdCardByTousseName = ConfigUtils + .getSystemSetConfigByNameBool("scanIdCardByTousseName"); + if (scanIdCardByTousseName) { + Map params = new HashMap(); + params.put("tousseName", barcode); + params.put("status", IDCardInstance.STATUS_USING); + String sql = String + .format(" where po.tousseName=:tousseName and po.status=:status"); + List list = (List) objectDao + .getCollection(IDCardInstance.class.getSimpleName(), + sql, params, 0, 0); + if (CollectionUtils.isNotEmpty(list)) { + Map params2 = new HashMap(); + Set idCardDefinitionIdSet = list + .stream() + .map(idCardInstance -> idCardInstance + .getIdCardDefinitionID()) + .collect(Collectors.toSet()); + params2.put("idCardDefinitionIds", idCardDefinitionIdSet); + String sql2 = String + .format(" where po.idCardDefinitionID in(select id from %s where id in(:idCardDefinitionIds) and deleted!='%s') and po.status='%s'", + IDCardDefinition.class.getSimpleName(), + IDCardDefinition.INT_STATUS_DISCARDED, + IDCardInstance.STATUS_USING); + list = objectDao + .getCollection(IDCardInstance.class.getSimpleName(), + sql2, params2, 0, 0); + } + if (CollectionUtils.isNotEmpty(list)) { + return list.get(0); + } + } + return null; } @SuppressWarnings("unchecked") Index: ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js =================================================================== diff -u -r23939 -r23983 --- ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js (.../recycleForTouchScreen.js) (revision 23939) +++ ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js (.../recycleForTouchScreen.js) (revision 23983) @@ -708,27 +708,12 @@ */ var barcodeGloble = ''; function showKeyDown(){ - if(event.keyCode == 48 || event.keyCode == 96){ - barcodeGloble += '0'; - }else if(event.keyCode == 49 || event.keyCode == 97){ - barcodeGloble += '1'; - }else if(event.keyCode == 50 || event.keyCode == 98){ - barcodeGloble += '2'; - }else if(event.keyCode == 51 || event.keyCode == 99){ - barcodeGloble += '3'; - }else if(event.keyCode == 52 || event.keyCode == 100){ - barcodeGloble += '4'; - }else if(event.keyCode == 53 || event.keyCode == 101){ - barcodeGloble += '5'; - }else if(event.keyCode == 54 || event.keyCode == 102){ - barcodeGloble += '6'; - }else if(event.keyCode == 55 || event.keyCode == 103){ - barcodeGloble += '7'; - }else if(event.keyCode == 56 || event.keyCode == 104){ - barcodeGloble += '8'; - }else if(event.keyCode == 57 || event.keyCode == 105){ - barcodeGloble += '9'; - }else if(event.keyCode == 13){ + var isCRLF = (event.char == '\n' || event.char == '\r'); + if(!isCRLF){ + barcodeGloble += event.char; + } + + if(isCRLF){ loadBarcodeDevice(barcodeGloble); } @@ -741,6 +726,7 @@ return false; } + /** * 判断此标识牌条码是否已经入筐. * @param barcode @@ -1049,7 +1035,7 @@ * @param barcodeTemp */ function loadBarcodeDevice(barcodeTemp){ - if(barcodeTemp.length >= 9){ + if(barcodeTemp.length >= 1){ //var barcode = barcodeTemp.substring(barcodeTemp.length-9,barcodeTemp.length); //由于条码可能超过9位,所以取全部 var barcode = barcodeTemp;