Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r37177 -r37351 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 37177) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 37351) @@ -7593,7 +7593,13 @@ String barcode = params.optString("barcode"); String status = extraParam.optString("status"); //调用物品存取的方法 - String result = tousseInstanceManager.scanBarcodeAndAddTousseToStorage(barcode, storageLocationBarcode, status); + String result = JSONUtil.buildJsonObject(true).toString(); + try { + result = tousseInstanceManager.scanBarcodeAndAddTousseToStorage(barcode, storageLocationBarcode, status); + } catch (Exception e) { + e.printStackTrace(); + result = JSONUtil.buildJsonObject(false, e.getMessage()).toString(); + } /*if(barcode.endsWith("01")){ //模拟接口返回数据(返回失败) result = JSONObject.fromObject("{\"success\":false,\"message\":\"测试失败的场景\"}"); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r37324 -r37351 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 37324) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 37351) @@ -10961,25 +10961,15 @@ BarcodeDevice barcodeDevice = barcodeManager.getBarcodeByBarcode(barcode); // 找不到条码对应的对象信息 if (barcodeDevice == null) { - json.put("message", barcode + "为无效条码!"); - return json.toString(); + throw new SystemException(barcode + "为无效条码!"); } String currentOrgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); if (barcodeDevice instanceof StorageLocation) { // 扫描库位条码,返回库位信息 StorageLocation storageLocation = (StorageLocation) barcodeDevice; - // 不是当前登陆用户所属科室的库位,不允许进行物品存取操作 - if(!StringUtils.equals(currentOrgUnitCode, storageLocation.getOrgUnitCode())) { - json.put("message", storageLocation.getName() + "不属于本科室,请扫描本科室的库位!"); - return json.toString(); - } - // 不是抽屉(叶子节点),不允许存入物品 - boolean isLeaf = storageLocationManager.storageLocationIsLeaf(storageLocation.getId().toString()); - if (!isLeaf) { - json.put("message", storageLocation.getName() + ",该位置不允许放入物品,请重新选择或扫描!"); - return json.toString(); - } + // 检查库位是否可以使用 + valideStorageLocation(currentOrgUnitCode, storageLocation); // 上级库位 String parentStorageLocationPath = storageLocationManager.getParentStorageLocationNameById(storageLocation.getId()); // 扫描的库位信息 @@ -10995,8 +10985,7 @@ // 扫描了器械包条码 if (StringUtils.isEmpty(storageBarcode)) { // 先扫描物品条码,提示错误信息 - json.put("message", "请先扫描库位条码!"); - return json.toString(); + throw new SystemException("请先扫描库位条码!"); } else { // 先扫描库位条码,再扫描物品条码,保存新的库存信息 // 器械包实例 @@ -11005,61 +10994,9 @@ StorageLocation storageLocation = (StorageLocation) barcodeManager.getBarcodeByBarcode(storageBarcode); // 保存库存记录 if (StorageRecord.IN.equals(status)) { - // 支持可追溯的消毒包(器械包和消毒物品),不支持不追溯的消毒包; - /*if (!ti.getTousseDefinition().traceable()) { - json.put("message", ti.getTousseName() + "是不追溯的消毒包,库位管理不支持该类物品!"); - return json.toString(); - } - // 包的状态必须为已发货或者已签收 - if (!(StringUtils.equals(ti.getStatus(), TousseInstance.STATUS_SIGNED) || StringUtils.equals(ti.getStatus(), TousseInstance.STATUS_SHIPPED))) { - json.put("message", ti.getTousseName() + "不是“已发货”或“已签收”状态!"); - return json.toString(); - } - // 只能存入与登录用户相同科室的包 - String currentOrgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); - if (!StringUtils.equals(ti.getLocation(), currentOrgUnitCode)) { - json.put("message", "只能存入与登录用户相同科室的包!"); - return json.toString(); - } - // 判断物品是否为库位限制存放的物品 - List tdList = storageLocation.getTousseDefinitionList(); - if (CollectionUtils.isNotEmpty(tdList) && !tdList.contains(ti.getTousseDefinition())) { - json.put("message", ti.getTousseName() + "不允许存入" + storageLocation.getName()); - return json.toString(); - } - // 查询是否存在存放该物品的库存记录 - StorageLocation inStorageLocation = storageLocationManager.getInStorageLocationByTousseInstanceId(ti.getId()); - if(inStorageLocation != null){ - json.put("message", ti.getTousseDefinitionName() + "已存入!"); - json.put("message", "存入失败," + ti.getTousseDefinitionName() + "已位于“" + inStorageLocation.getWareHouseName() + "”的“" + inStorageLocation.getName() + " " + inStorageLocation.getStorageLocationCode() + "”。"); - json.put("returnType", "errorStatus"); - return json.toString(); - } - - SupplyRoomConfig systemParamsObj = supplyRoomConfigManager.getSystemParamsObj(); - if(systemParamsObj != null - && StringUtils.equals(systemParamsObj.getAutoSignAfterPutInStorage(), Constants.STR_YES)){ - //新增对存入的器械包进行自动签收操作GDSRMYY-557 - String msg = autoSignTousseInstanceAfterPutInStorage(ti); - if(msg != null){ - json.put("message", ti.getTousseName() + "不允许存入" + storageLocation.getName() + "。" + msg); - return json.toString(); - } - } - boolean enableWarehousePositionAndSurgicalInstrumentsCanBeOperatedInTandemFunction = - ConfigUtils.getSystemSetConfigByNameBool("enableWarehousePositionAndSurgicalInstrumentsCanBeOperatedInTandemFunction"); - if(enableWarehousePositionAndSurgicalInstrumentsCanBeOperatedInTandemFunction){ - //启用此配置项时,若物品已经产生了流转记录,此时通过【库位管理】的“物品存取”功能进行“存入”操作,则自动将该物品的流转记录进行到最初所在的位置;GDSRMYY-557 - autoReturnTousseInstanceAfterPutInStorage(ti); - }*/ - try { - List tousseInstances = new ArrayList(); - tousseInstances.add(ti); - batchPutTousseInstanceIntoStorageLoaction(tousseInstances, storageLocation, currentOrgUnitCode, StorageRecord.OPERATE_DETAIL_IN_MANUAL); - } catch (Exception e) { - json.put("message", e.getMessage()); - return json.toString(); - } + List tousseInstances = new ArrayList(); + tousseInstances.add(ti); + batchPutTousseInstanceIntoStorageLoaction(tousseInstances, storageLocation, currentOrgUnitCode, StorageRecord.OPERATE_DETAIL_IN_MANUAL); } else if (StorageRecord.OUT.equals(status)) { // 查询是否存在存放该物品的库存记录 int inStorageAmount = storageLocationManager.getInStorageAmountByTousseIdAndStorageLocationId(ti.getId(), storageLocation.getId()); @@ -11091,8 +11028,7 @@ DisposableGoodsBatchStock disposableGoodsBatchStock = (DisposableGoodsBatchStock) objectDao.getByProperty(DisposableGoodsBatchStock.class.getSimpleName(), "barcode", barcode); if (disposableGoodsBatchStock != null) { - json.put("message", disposableGoodsBatchStock.getDiposableGoods().getName() + "属于一次性物品,库位管理不支持一次性物品!"); - return json.toString(); + throw new SystemException(disposableGoodsBatchStock.getDiposableGoods().getName() + "属于一次性物品,库位管理不支持一次性物品!"); } // 扫描到非库位、非器械包条码 json.put("message", barcode + "为无效条码!"); @@ -11102,6 +11038,28 @@ return json.toString(); } + /** + * 检查当前库位是否可以使用 + * @param currentOrgUnitCode + * @param storageLocation + * @return + */ + private boolean valideStorageLocation(String currentOrgUnitCode, StorageLocation storageLocation) { + if(storageLocation == null || StringUtils.isBlank(currentOrgUnitCode)){ + throw new SystemException("参数异常"); + } + // 不是当前登陆用户所属科室的库位,不允许进行物品存取操作 + if(!StringUtils.equals(currentOrgUnitCode, storageLocation.getOrgUnitCode())) { + throw new SystemException(storageLocation.getName() + "不属于本科室,请扫描本科室的库位!"); + } + // 不是抽屉(叶子节点),不允许存入物品 + boolean isLeaf = storageLocationManager.storageLocationIsLeaf(storageLocation.getId().toString()); + if (!isLeaf) { + throw new SystemException(storageLocation.getName() + ",该位置不允许放入物品,请重新选择或扫描!"); + } + return true; + } + @Override public List getTousseInstancesBySetCode(String setCode) { return getTousseInstancesBySetCode(setCode, null, null); @@ -12643,14 +12601,7 @@ StorageLocation storageLocation, OrgUnit orgUnit) { // 不是当前登陆用户所属科室的库位,不允许进行物品存取操作 - if(!StringUtils.equals(orgUnit.getOrgUnitCoding(), storageLocation.getOrgUnitCode())) { - throw new SystemException(storageLocation.getName() + "不属于" + orgUnit.getName() + ",请扫描本科室的库位!"); - } - // 不是抽屉(叶子节点),不允许存入物品 - boolean isLeaf = storageLocationManager.storageLocationIsLeaf(storageLocation.getId().toString()); - if (!isLeaf) { - throw new SystemException(storageLocation.getName() + ",该位置不允许放入物品,请重新选择或扫描!"); - } + valideStorageLocation(orgUnit.getOrgUnitCoding(), storageLocation); Set tousseAncestorIdSet = new HashSet(); List tdList = storageLocation.getTousseDefinitionList();