Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dwr/InventoryTableManager.java =================================================================== diff -u -r13710 -r14216 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dwr/InventoryTableManager.java (.../InventoryTableManager.java) (revision 13710) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dwr/InventoryTableManager.java (.../InventoryTableManager.java) (revision 14216) @@ -62,8 +62,10 @@ } else if (GodownEntry.TYPE_RETURN.equals(type)) { jsonResult = inventoryManager.prepareSyncReturnEntry( jsonParamStr, storageEntrys); + //退货单的类型改为入库单 + type = GodownEntry.TYPE_IN; } else { - throw new Exception(); + throw new RuntimeException("type参数非法"); } //只对入库和退库进行处理,退货不处理 Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/InventoryManagerImpl.java =================================================================== diff -u -r14169 -r14216 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/InventoryManagerImpl.java (.../InventoryManagerImpl.java) (revision 14169) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/InventoryManagerImpl.java (.../InventoryManagerImpl.java) (revision 14216) @@ -131,14 +131,19 @@ result = CollectionUtils.select(result, new Predicate() { @Override public boolean evaluate(StorageEntry arg0) { + //同步的单类型如果退货单,将对应的入/退库单类型为入库单 + String typeCondition = type; + if(GodownEntry.TYPE_RETURN.equals(type)){ + typeCondition = GodownEntry.TYPE_IN; + } // 若找到同一单号的一次性物品入库单或材料入库单,则应被过滤 - String sql = String.format(" WHERE po.serialNumber='%s' AND po.type='%s'", arg0.getSerialNumber(), type); + String sql = String.format(" WHERE po.serialNumber='%s' AND po.type='%s'", arg0.getSerialNumber(), typeCondition); GodownEntry godownEntry = (GodownEntry) objectDao.getBySql( GodownEntry.class.getSimpleName(), sql); if(godownEntry != null) return false; - sql = String.format(" WHERE po.serialNumber='%s' AND po.type='%s'", arg0.getSerialNumber(), type); + sql = String.format(" WHERE po.serialNumber='%s' AND po.type='%s'", arg0.getSerialNumber(), typeCondition); MaterialEntry materialEntry = (MaterialEntry) objectDao.getBySql( MaterialEntry.class.getSimpleName(), sql); if(materialEntry != null) @@ -216,8 +221,18 @@ return jsonObject; } - // 检测待同步的入库单的数据是否正确 - // 返回值包含可能有问题的入库单物品明细项,交由用户处理 + /** + * 检测待同步的入库单的数据是否正确 + * 返回值包含可能有问题的入库单物品明细项,交由用户处理 + * @param jsonParamStr 参数json,含单号、物资信息(类型、物资编码、失效期等)等,格式如下: + * { + "entrySerialNumbers":["03-20160380007"], + "itemTypeMap":{"1104102051":"器械材料","1104102052":"器械材料","1104102053":"器械材料"}, + "itemCategoryMap":{}, + "itemExpDateMap":{"1104102051":"2017-03-17","1104102052":"2017-03-16","1104102053":"2017-03-16"} + } + * @param outParam_inEntrys 入库单集合(调用时默认传入空集合) + */ @Override public JsonObject prepareSyncInEntry(String jsonParamStr, Collection outParam_inEntrys) { JsonObject jsonParam = (JsonObject)new JsonParser().parse(jsonParamStr); @@ -244,6 +259,7 @@ outParam_inEntrys.clear(); for(String inEntrySerialNumber: inEntrySerialNumbers){ + //按单号查询入库单基础数据 StorageEntry inEntry = findStorageEntryBySerialNumber(inEntrySerialNumber, GodownEntry.TYPE_IN); inEntry.setItems(new ArrayList()); outParam_inEntrys.add(inEntry); @@ -596,11 +612,11 @@ returnEntrySerialNumber, inventory.getDisplayName())); } - // 检查库存 - if(inventory.getDisposableGoods().getAmount() < item.getAmount()){ + // 检查库存(退货单不用检查库存) + /*if(inventory.getDisposableGoods().getAmount() < item.getAmount()){ throw new DataCheckException(String.format("退货单%s中物品【%s】的库存不足!", returnEntrySerialNumber, inventory.getDisplayName())); - } + }*/ } if(inventory.getMaterialDefinition() != null){ @@ -615,11 +631,11 @@ returnEntrySerialNumber, inventory.getDisplayName())); } - // 检查库存 - if(inventory.getMaterialDefinition().getStorage() < item.getAmount()){ + // 检查库存(退货单不用检查库存) + /*if(inventory.getMaterialDefinition().getStorage() < item.getAmount()){ throw new DataCheckException(String.format("退货单%s中物品【%s】的库存不足!", returnEntrySerialNumber, inventory.getDisplayName())); - } + }*/ } // 到达此处代表此物品校验成功 @@ -705,8 +721,8 @@ godownEntry.setSerialNumber(returnEntry.getSerialNumber()); //单号 godownEntry.setOperator(AcegiHelper.getLoginUser().getUserFullName()); //操作员 godownEntry.setTime(returnEntry.getTime()); // 入库/退库/退货时间 - godownEntry.setRemark(returnEntry.getRemark()); //备注 - godownEntry.setType(GodownEntry.TYPE_RETURN); + godownEntry.setRemark("根据退货单生成." + returnEntry.getRemark()); //备注 + godownEntry.setType(GodownEntry.TYPE_IN); objectDao.saveOrUpdate(godownEntry); if(CollectionUtils.isNotEmpty(returnEntry.getItems())){