Index: forgon-core/src/main/java/com/forgon/security/tools/CssdUtils2.java =================================================================== diff -u -r25246 -r25275 --- forgon-core/src/main/java/com/forgon/security/tools/CssdUtils2.java (.../CssdUtils2.java) (revision 25246) +++ forgon-core/src/main/java/com/forgon/security/tools/CssdUtils2.java (.../CssdUtils2.java) (revision 25275) @@ -203,7 +203,7 @@ return storeCodeJsonArray.optJSONObject(0).optString("storeCode"); } for (int j = 0; j < storeCodeJsonArray.size(); j++) { - JSONObject storeCodeJsonObject = storeCodeJsonArray.optJSONObject(i); + JSONObject storeCodeJsonObject = storeCodeJsonArray.optJSONObject(j); if(storeCodeJsonObject != null){ if(storeCodeJsonObject.optBoolean("isPublic")){ return storeCodeJsonObject.optString("storeCode"); Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/WriteBackInventoryManagerImpl.java =================================================================== diff -u -r25246 -r25275 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/WriteBackInventoryManagerImpl.java (.../WriteBackInventoryManagerImpl.java) (revision 25246) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/WriteBackInventoryManagerImpl.java (.../WriteBackInventoryManagerImpl.java) (revision 25275) @@ -821,16 +821,17 @@ } } - if (CollectionUtils.isEmpty(items)) + if (CollectionUtils.isEmpty(items)){ return 0L; + } - /*writeBackInventoryDao.insertWriteBackEntryForReturnGoods(entry); // 回写时自动获取到自动生成的ID + writeBackInventoryDao.insertWriteBackEntryForReturnGoods(entry); // 回写时自动获取到自动生成的ID entry.setItems(items); for(WriteBackEntryItem item : items){ item.setWriteBackEntryId(entry.getId()); item.setSerialNumber(entry.getSerialNumber()); } - writeBackInventoryDao.insertWriteBackEntryItemForReturnGoods(entry);*/ + writeBackInventoryDao.insertWriteBackEntryItemForReturnGoods(entry); String projectCode = returnGoodsRecord.getProjectCode(); //如果项目dao存在的话并且projectCode也存在时 Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/InventoryManagerImpl.java =================================================================== diff -u -r25246 -r25275 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/InventoryManagerImpl.java (.../InventoryManagerImpl.java) (revision 25246) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/InventoryManagerImpl.java (.../InventoryManagerImpl.java) (revision 25275) @@ -706,33 +706,35 @@ //根据供应室同步编码获得仓库 if(orgUnit!=null){ if(StringUtils.isNotBlank(orgUnit.getOrgUnitCoding())){ - wareHouse = wareHouseManager.getDefaultWareHouseByUnitCode(orgUnit.getOrgUnitCoding()); + wareHouse = wareHouseManager.getDefaultWareHouseByUnitCode(orgUnit.getOrgUnitCoding()); } } } } + if(wareHouse == null){ + throw new DataCheckException(String.format("退库单%s中获取不到仓库!",outEntrySerialNumber)); + } for(StorageEntryItem item : items){ // 一旦检测出任一物品明细项有问题,则可立即报错 Inventory inventory = item.getInventory(); // 先按物资编码查找一次性物品定义 DisposableGoods disposableGoods = diposableGoodsManager.getDisposableGoodsByInventorySerialNumber(inventory.getSerialNumber()); - // 先按物资编码查找一次性物品库存 - DisposableGoodsStock disposableGoodsStock=diposableGoodsManager.getDiposableGoodsByInventorySerialNumber(inventory.getSerialNumber()); if(disposableGoods == null){ // 再按名称和规格查找一次性物品定义 disposableGoods = diposableGoodsManager.get(inventory.getName(), inventory.getSpecification()); } - if(disposableGoodsStock==null){ - if(wareHouse == null){ - throw new DataCheckException(String.format("退库单%s中获取不到仓库!",outEntrySerialNumber)); - } - //再按名称和规格查找一次性物品库存 - disposableGoodsStock=diposableGoodsManager.getDisposableGoodsStockByName(wareHouse.getId(), inventory.getName(), inventory.getSpecification()); - } + + DisposableGoodsStock disposableGoodsStock = null; if(disposableGoods != null){ inventory.setDisposableGoods(disposableGoods); + // 先按物资编码查找一次性物品库存 + disposableGoodsStock=diposableGoodsManager.getDisposableGoodsStockByDisposableGoodsID(wareHouse.getId(), disposableGoods.getId()); + if(disposableGoodsStock==null){ + //再按名称和规格查找一次性物品库存 + disposableGoodsStock=diposableGoodsManager.getDisposableGoodsStockByName(wareHouse.getId(), inventory.getName(), inventory.getSpecification()); + } } else { // 若不是一次性物品则查找器械材料定义 // 先按物资编码查找器械材料定义 @@ -756,7 +758,7 @@ outEntrySerialNumber, inventory.getDisplayName())); } - if(inventory.getDisposableGoods() != null){ + if(inventory.getDisposableGoods() != null && disposableGoodsStock != null){ // 一次性物品退库需有批次号 if (StringUtils.isBlank(item.getBatchNumber())) { throw new DataCheckException(String.format("退库单%s中物品【%s】的批号不能为空!", @@ -772,9 +774,10 @@ //器械材料库存 List goodsstock=goodsStockManager.getMaterialStock(wareHouse.getId(),inventory.getMaterialDefinition().getId()); Long amount=0L; - for(GoodsStock gs:goodsstock){ + for(GoodsStock gs : goodsstock){ String suppliers =goodsStockManager.getGoodsStockSupplier(gs); - if(gs.getPrice().equals(item.getUnitPrice())&& suppliers.equals(item.getSupplierName())){//材料库存根据同供应商同价格获取 + if(gs.getPrice().equals(item.getUnitPrice()) + && (StringUtils.isBlank(suppliers) && StringUtils.isBlank(item.getSupplierName()) || StringUtils.equals(suppliers , item.getSupplierName()))){//材料库存根据同供应商同价格获取 amount+=gs.getAmount(); } }