Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManager.java =================================================================== diff -u -r12655 -r12687 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManager.java (.../GodownEntryManager.java) (revision 12655) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManager.java (.../GodownEntryManager.java) (revision 12687) @@ -1,5 +1,6 @@ package com.forgon.disinfectsystem.diposablegoods.service; +import java.util.Collection; import java.util.List; import java.util.Map; @@ -11,40 +12,33 @@ public interface GodownEntryManager { - public void saveOrUpdate(GodownEntry godownEntry); - public GodownEntry getGodownEntryById(String id); public Map deleteGodownEntryById_TRANS_NEW(String id); public Map deleteGodownOutEntryById_TRANS_NEW(String id); - public void saveOrUpdate(GodownEntryItem godownEntryItem); - public GodownEntryItem getGodownEntryItemByDiposableGoodsNameAndBatchNumber(String diposableGoodsName,String batchNumber); public List getGodownEntryItemByDiposableGoodsId(String diposableGoodsId); public List getGodownEntryItem(String diposableGoodsName,String batchNumber); - public void updateGodownEntryItem(GodownEntryItem godownEntryItem); - public List getGodownEntryItemBySql(String sql); - public boolean saveOrUpdateGodownOutEntry(GodownEntry godownEntry,String id,String items,StringBuilder result); // 保存入库单 public void saveGodownEntry_TRANS_REQUIRED(GodownEntry entry,Map result); public void saveGodownEntry_TRANS_MANDATORY(GodownEntry entry,Map result); - public void saveGodownEntry_TRANS_REQUIRED(Iterable entrys,Map result); - public void saveGodownEntry_TRANS_MANDATORY(Iterable entrys,Map result); + public void saveGodownEntry_TRANS_REQUIRED(Collection entrys,Map result); + public void saveGodownEntry_TRANS_MANDATORY(Collection entrys,Map result); // 更新入库单 public void updateGodownEntry_TRANS_REQUIRED(GodownEntry original,GodownEntry entry,Map result); // 保存退库单 public void saveGodownOutEntry_TRANS_REQUIRED(GodownEntry entry,Map result); public void saveGodownOutEntry_TRANS_NEW(GodownEntry entry,Map result); public void saveGodownOutEntry_TRANS_MANDATORY(GodownEntry entry,Map result); - public void saveGodownOutEntry_TRANS_REQUIRED(Iterable entrys,Map result); - public void saveGodownOutEntry_TRANS_MANDATORY(Iterable entrys,Map result); + public void saveGodownOutEntry_TRANS_REQUIRED(Collection entrys,Map result); + public void saveGodownOutEntry_TRANS_MANDATORY(Collection entrys,Map result); // 更新退库单 public void updateGodownOutEntry_TRANS_REQUIRED(GodownEntry original,GodownEntry entry,Map result); public void updateGodownOutEntry_TRANS_MANDATORY(GodownEntry original,GodownEntry entry,Map result); Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManagerImpl.java =================================================================== diff -u -r12683 -r12687 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManagerImpl.java (.../GodownEntryManagerImpl.java) (revision 12683) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManagerImpl.java (.../GodownEntryManagerImpl.java) (revision 12687) @@ -8,20 +8,16 @@ import java.util.Date; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; -import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.log4j.Logger; -import org.springframework.transaction.interceptor.TransactionAspectSupport; import com.forgon.Constants; import com.forgon.directory.acegi.tools.AcegiHelper; @@ -30,23 +26,21 @@ import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager; -import com.forgon.disinfectsystem.diposablegoods.service.param.AddOrOutStorageParams; import com.forgon.disinfectsystem.diposablegoods.util.DiposableGoodsUtils; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatch; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntry; import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryDiposableGoodsItem; import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryItem; import com.forgon.disinfectsystem.entity.assestmanagement.IdentificationOfDiposableGoods; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; -import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; -import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; import com.forgon.disinfectsystem.entity.invoicemanager.DiposableGoodsItem; import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceItem; import com.forgon.disinfectsystem.entity.returngoodsrecord.ReturnGoodsItem; import com.forgon.disinfectsystem.entity.returngoodsrecord.ReturnGoodsRecord; -import com.forgon.disinfectsystem.entity.sterilizationmanager.foreignproxydisinfection.ForeignProxyDisinfection; import com.forgon.disinfectsystem.inventorymanagement.service.WriteBackInventoryHelper; import com.forgon.disinfectsystem.vo.GodownEntryItemPrintVO; import com.forgon.serialnumber.model.SerialNum; @@ -170,28 +164,29 @@ // 入库单已被删除 throw new RuntimeException("入库单已被删除!"); } - Set diposableGoodsIDsSet = new HashSet();// 一次性物品id集合 - Set batchIdsSet = new HashSet();// 批次id集合 - Set batchNumbersSet = new HashSet();// 批次号集合 - Set identificationIdsSet = new HashSet();// 标识号id集合 - Map idToDiposableGoodsMap = new HashMap(); - Map idToBatchStockMap = new HashMap(); + Set disposableGoodsIDsSet = new HashSet();// 一次性物品id集合 + Set disposableGoodsStockIDsSet = new HashSet();// 一次性物品库存id集合 + Set disposableGoodsBatchIDsSet = new HashSet();// 批次id集合 + Set disposableGoodsBatchStockIDsSet = new HashSet();// 批次库存id集合 + Set disposableGoodsBatchNumberSet = new HashSet();// 批次号集合 + Set identificationIDsSet = new HashSet();// 标识号id集合 + Map idToDisposableGoodsMap = new HashMap(); + Map idToDisposableGoodsStockMap = new HashMap(); + Map idToDisposableGoodsBatchMap = new HashMap(); + Map idToDisposableGoodsBatchStockMap = new HashMap(); Map idToIdentificationMap = new HashMap(); - Set toUpdateBatchStocks = new HashSet(); - Set toUpdateDiposableGoods = new HashSet(); // 汇总信息 - summaryDiposableGoodsInfo(godownEntry, diposableGoodsIDsSet, - batchIdsSet, batchNumbersSet, identificationIdsSet); + summaryDiposableGoodsInfo(godownEntry, disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, + disposableGoodsBatchStockIDsSet, disposableGoodsBatchNumberSet, identificationIDsSet); // 获取并锁定一次性物品相关资源 - lockAndGetDiposableGoodsResources(diposableGoodsIDsSet, - batchIdsSet, batchNumbersSet, identificationIdsSet, - idToDiposableGoodsMap, idToBatchStockMap, - idToIdentificationMap); + lockAndGetDiposableGoodsResources(disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, disposableGoodsBatchStockIDsSet, + disposableGoodsBatchNumberSet, identificationIDsSet, idToDisposableGoodsMap,idToDisposableGoodsStockMap,idToDisposableGoodsBatchMap, + idToDisposableGoodsBatchStockMap, idToIdentificationMap); List itemList = new ArrayList(godownEntry.getItemsList()); for (GodownEntryItem godownEntryItem : itemList) { - deleteGodownEntryItem(godownEntryItem, idToDiposableGoodsMap, - idToBatchStockMap, idToIdentificationMap); + deleteGodownEntryItem(godownEntryItem, idToDisposableGoodsStockMap, + idToDisposableGoodsBatchStockMap, idToIdentificationMap); } // 构造出库参数 delete(godownEntry);// 删除入库单 @@ -214,22 +209,29 @@ if(godownEntry == null){ throw new RuntimeException("出库单已被删除!"); } - Set diposableGoodsIDsSet = new HashSet();// 一次性物品id集合 - Set batchIdsSet = new HashSet();// 批次id集合 - Set batchNumbersSet = new HashSet();// 批次号集合 - Set identificationIdsSet = new HashSet();// 标识号id集合 - Map idToDiposableGoodsMap = new HashMap(); - Map idToBatchStockMap = new HashMap(); - Map idToIdentificationMap = new HashMap(); + Set disposableGoodsIDsSet = new HashSet();// 一次性物品id集合 + Set disposableGoodsStockIDsSet = new HashSet();// 一次性物品库存id集合 + Set disposableGoodsBatchIDsSet = new HashSet();// 批次id集合 + Set disposableGoodsBatchStockIDsSet = new HashSet();// 批次库存id集合 + Set disposableGoodsBatchNumberSet = new HashSet();// 批次号集合 + Set identificationIDsSet = new HashSet();// 标识号id集合 + Map idToDisposableGoodsMap = new HashMap(); + Map idToDisposableGoodsStockMap = new HashMap(); + Map idToDisposableGoodsBatchMap = new HashMap(); + Map idToDisposableGoodsBatchStockMap = new HashMap(); + Map idToIdentificationMap = new HashMap(); // 汇总信息 - summaryDiposableGoodsInfoForGodownOutEntry(godownEntry, diposableGoodsIDsSet, batchIdsSet, batchNumbersSet, identificationIdsSet); + summaryDiposableGoodsInfoForGodownOutEntry(godownEntry, disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, + disposableGoodsBatchStockIDsSet, disposableGoodsBatchNumberSet, identificationIDsSet); // 获取并锁定一次性物品相关资源 - lockAndGetDiposableGoodsResources(diposableGoodsIDsSet, batchIdsSet, batchNumbersSet, identificationIdsSet, idToDiposableGoodsMap, idToBatchStockMap, idToIdentificationMap); + lockAndGetDiposableGoodsResources(disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, disposableGoodsBatchStockIDsSet, + disposableGoodsBatchNumberSet, identificationIDsSet, idToDisposableGoodsMap,idToDisposableGoodsStockMap,idToDisposableGoodsBatchMap, + idToDisposableGoodsBatchStockMap, idToIdentificationMap); ////////// // 删除各个item List itemList = new ArrayList(godownEntry.getItemsList()); for (GodownEntryItem godownEntryItem : itemList) { - deleteGodownOutEntryItem(godownEntryItem, idToDiposableGoodsMap, idToBatchStockMap, idToIdentificationMap); + deleteGodownOutEntryItem(godownEntryItem, idToDisposableGoodsStockMap, idToDisposableGoodsBatchStockMap, idToIdentificationMap); } // 删除退库单 delete(godownEntry); @@ -243,15 +245,7 @@ return result; } - @Override - public void saveOrUpdate(GodownEntryItem godownEntryItem) { - objectDao.saveOrUpdate(godownEntryItem); - objectDao - .excuteSQL("delete from godownEntryItem where godownEntry_id is null"); - } - - @Override public GodownEntryItem getGodownEntryItemByDiposableGoodsNameAndBatchNumber( String diposableGoodsName, String batchNumber) { String sql = "where po.diposableGoods.name = '" + diposableGoodsName @@ -269,13 +263,6 @@ return objectDao.findBySql(GodownEntryItem.class.getSimpleName(), sql); } - @Override - public void updateGodownEntryItem(GodownEntryItem godownEntryItem) { - if (godownEntryItem != null) { - objectDao.saveOrUpdate(godownEntryItem); - } - } - @SuppressWarnings("unchecked") @Override public List getGodownEntryItemByDiposableGoodsId( @@ -296,97 +283,6 @@ return null; } - public boolean saveOrUpdateGodownOutEntry(GodownEntry godownEntry, - String id, String items, StringBuilder result) { - try { - - // 这个ID是退库单的id号,如果有这个id说明是之前已经有这个单了,如果没有这个id则表示是新加进去的 - if (StringUtils.isNotBlank(id) && StringUtils.isNumeric(id)) { - godownEntry = getGodownEntryById(id); - } else { - godownEntry.setSerialNumber(serialNumManager - .getSerialNumberStr(SerialNum.TYPE_INSERT_GODOWN)); - } - List godownEntryItems = new ArrayList(); - JSONArray itemsArray = JSONArray.fromObject(items); - int size = itemsArray.size(); - for (int i = 0; i < size; ++i) { - JSONObject obj = itemsArray.getJSONObject(i); - - if (obj != null) { - String itemId = obj.optString("id"); - GodownEntryItem godownEntryItem = null; - // 如果这个itemiD存在,说明之前有了一个退库单明细,否则是新加进去的 - if (StringUtils.isNotBlank(itemId) - && StringUtils.isNumeric(itemId)) { - godownEntryItem = godownEntryItemManager.getGodownEntryItemById(itemId); - } else { - godownEntryItem = new GodownEntryItem(); - } - String diposableGoodsID = obj.optString("diposableGoodsID");// 这个是一次性物品的id - String batchNumber = obj.optString("batchNumber");// 一次性物品的批号 - DisposableGoodsBatchStock disposableGoodsBatchStock = diposableGoodBatchStockManager - .getDiposableGoodBatchStock(diposableGoodsID, - batchNumber); - if (disposableGoodsBatchStock == null) { - throw new RuntimeException("批次不存在!"); - } - DisposableGoodsStock disposableGoodsStock = diposableGoodsManager - .getDiposableGoodsById(diposableGoodsID); - Long outNumber = Long.parseLong(obj.optString("amount"));// 要退库的数量 - if (StringUtils.isBlank(itemId)) {// 如果itemid为空,表示新增加 - if (disposableGoodsStock.getAmount() < outNumber) {// 如果要申请退库的数量大于一次性物品的总数量了,提示 - throw new RuntimeException("保存失败,库存不足!"); - } - if (disposableGoodsBatchStock.getStorage() < outNumber) {// 如果对应批次的库存量小于退库量,不能退库 - throw new RuntimeException("保存失败,库存不足!"); - } - // changeBatchSockAndIdentifySock(godownEntry, - // godownEntryItems, obj, godownEntryItem, - // diposableGoodBatchStock, diposableGoods, - // outNumber); - } else { - godownEntryItems.add(godownEntryItem); - } - } - - } - - if (StringUtils.isNotBlank(id) && StringUtils.isNumeric(id)) { - List oldItems = godownEntry.getItemsList(); - for (GodownEntryItem oldItem : oldItems) { - if (!godownEntryItems.contains(oldItem)) { - long amount = oldItem.getAmount(); - String batchNum = oldItem.getBatchNumber(); - DisposableGoodsStock disposableGoodsStock = oldItem - .getDiposableGoods(); - String identification = oldItem.getIdentification(); - // onGodownOutEntryItemDelete(amount, diposableGoods, - // batchNum, identification); - } - } - } - godownEntry.setItemsList(godownEntryItems); - saveOrUpdate(godownEntry); - - // 回写物资系统 - if (writeBackInventoryHelper != null) { - writeBackInventoryHelper.writeBackForDiposableGoodsStorageOut( - Collections.singleton(godownEntry.getId()), true); - } - - } catch (Exception e) { - e.printStackTrace(); - result.append(e.getMessage()); - // 将事务标志为回滚 - TransactionAspectSupport.currentTransactionStatus() - .setRollbackOnly(); - return false; - } - result.append("保存成功 !!"); - return true; - } - public void saveGodownEntry_TRANS_REQUIRED(GodownEntry entry, Map result) { setGodownEntrySubType(entry, GodownEntry.SUBTYPE_MANUE_IN); @@ -398,41 +294,45 @@ saveGodownEntry_internal(entry, result); } - public void saveGodownEntry_TRANS_REQUIRED(Iterable entrys, + public void saveGodownEntry_TRANS_REQUIRED(Collection entrys, Map result) { saveGodownEntry_internal(entrys, result); } - public void saveGodownEntry_TRANS_MANDATORY(Iterable entrys, + public void saveGodownEntry_TRANS_MANDATORY(Collection entrys, Map result) { saveGodownEntry_internal(entrys, result); } - private void saveGodownEntry_internal(Iterable entrys, + private void saveGodownEntry_internal(Collection entrys, Map result) { if (entrys == null) { return; } - Set diposableGoodsIDsSet = new HashSet();// 一次性物品id集合 - Set batchIdsSet = new HashSet();// 批次id集合 - Set batchNumbersSet = new HashSet();// 批次号集合 - Set identificationIdsSet = new HashSet();// 标识号id集合 - Map idToDiposableGoodsMap = new HashMap(); - Map idToBatchStockMap = new HashMap(); + Set disposableGoodsIDsSet = new HashSet();// 一次性物品id集合 + Set disposableGoodsStockIDsSet = new HashSet();// 一次性物品库存id集合 + Set disposableGoodsBatchIDsSet = new HashSet();// 批次id集合 + Set disposableGoodsBatchStockIDsSet = new HashSet();// 批次库存id集合 + Set disposableGoodsBatchNumberSet = new HashSet();// 批次号集合 + Set identificationIDsSet = new HashSet();// 标识号id集合 + Map idToDisposableGoodsMap = new HashMap(); + Map idToDisposableGoodsStockMap = new HashMap(); + Map idToDisposableGoodsBatchMap = new HashMap(); + Map idToDisposableGoodsBatchStockMap = new HashMap(); Map idToIdentificationMap = new HashMap(); for (GodownEntry godownEntry : entrys) { // 汇总信息 - summaryDiposableGoodsInfo(godownEntry, diposableGoodsIDsSet, - batchIdsSet, batchNumbersSet, identificationIdsSet); + summaryDiposableGoodsInfo(godownEntry, disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, + disposableGoodsBatchStockIDsSet, disposableGoodsBatchNumberSet, identificationIDsSet); } // 获取并锁定一次性物品相关资源 - lockAndGetDiposableGoodsResources(diposableGoodsIDsSet, batchIdsSet, - batchNumbersSet, identificationIdsSet, idToDiposableGoodsMap, - idToBatchStockMap, idToIdentificationMap); + lockAndGetDiposableGoodsResources(disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, disposableGoodsBatchStockIDsSet, + disposableGoodsBatchNumberSet, identificationIDsSet, idToDisposableGoodsMap,idToDisposableGoodsStockMap,idToDisposableGoodsBatchMap, + idToDisposableGoodsBatchStockMap, idToIdentificationMap); for (GodownEntry godownEntry : entrys) { - saveGodownEntry_internal(godownEntry, idToDiposableGoodsMap, - idToBatchStockMap); + saveGodownEntry_internal(godownEntry, idToDisposableGoodsStockMap, + idToDisposableGoodsBatchStockMap); } } @@ -445,23 +345,30 @@ DisposableGoodsBatchStock.class.getSimpleName(), sql); } // 保存入库单,TODO 代码待重构 - private void saveGodownEntry_internal(GodownEntry entry, Map result) { - Set diposableGoodsIDsSet = new HashSet();// 一次性物品id集合 - Set batchIdsSet = new HashSet();// 批次id集合 - Set batchNumbersSet = new HashSet();// 批次号集合 - Set identificationIdsSet = new HashSet();// 标识号id集合 - Map idToDiposableGoodsMap = new HashMap(); - Map idToBatchStockMap = new HashMap(); - Map idToIdentificationMap = new HashMap(); + private void saveGodownEntry_internal(GodownEntry godownEntry, Map result) { + Set disposableGoodsIDsSet = new HashSet();// 一次性物品id集合 + Set disposableGoodsStockIDsSet = new HashSet();// 一次性物品库存id集合 + Set disposableGoodsBatchIDsSet = new HashSet();// 批次id集合 + Set disposableGoodsBatchStockIDsSet = new HashSet();// 批次库存id集合 + Set disposableGoodsBatchNumberSet = new HashSet();// 批次号集合 + Set identificationIDsSet = new HashSet();// 标识号id集合 + Map idToDisposableGoodsMap = new HashMap(); + Map idToDisposableGoodsStockMap = new HashMap(); + Map idToDisposableGoodsBatchMap = new HashMap(); + Map idToDisposableGoodsBatchStockMap = new HashMap(); + Map idToIdentificationMap = new HashMap(); // 汇总信息 - summaryDiposableGoodsInfo(entry, diposableGoodsIDsSet, batchIdsSet, batchNumbersSet, identificationIdsSet); + summaryDiposableGoodsInfo(godownEntry, disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, + disposableGoodsBatchStockIDsSet, disposableGoodsBatchNumberSet, identificationIDsSet); // 获取并锁定一次性物品相关资源 - lockAndGetDiposableGoodsResources(diposableGoodsIDsSet, batchIdsSet, batchNumbersSet, identificationIdsSet, idToDiposableGoodsMap, idToBatchStockMap, idToIdentificationMap); + lockAndGetDiposableGoodsResources(disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, disposableGoodsBatchStockIDsSet, + disposableGoodsBatchNumberSet, identificationIDsSet, idToDisposableGoodsMap,idToDisposableGoodsStockMap,idToDisposableGoodsBatchMap, + idToDisposableGoodsBatchStockMap, idToIdentificationMap); - saveGodownEntry_internal(entry, idToDiposableGoodsMap, - idToBatchStockMap); + saveGodownEntry_internal(godownEntry, idToDisposableGoodsStockMap, + idToDisposableGoodsBatchStockMap); // 设置GodownEntryItem详细列表 - setReturnDetails(entry, idToBatchStockMap,result); + setReturnDetails(godownEntry, idToDisposableGoodsBatchStockMap,result); } /** @@ -489,7 +396,7 @@ boolean newBatch = false; GodownEntryItem godownEntryItem = itemList.get(i); Long diposableGoodsID = godownEntryItem.getDiposableGoodsID(); - DisposableGoodsStock disposableGoodsStock = idToDiposableGoodsMap.get(diposableGoodsID); + DisposableGoodsStock diposableGoods = idToDiposableGoodsMap.get(diposableGoodsID); String batchNumber = godownEntryItem.getBatchNumber(); // 保存时,每一项都是新建标识号对象 Long batchID = godownEntryItem.getBatchID(); @@ -501,10 +408,10 @@ if(batchStock == null){ // 新建 批次 batchStock = new DisposableGoodsBatchStock(); - batchStock.setDiposableGoods(disposableGoodsStock); - disposableGoodsStock.getGoodsBatchs().add(batchStock); - disposableGoodsStock.setWareHouseID(entry.getWareHouseId()); - disposableGoodsStock.setWareHouseName(entry.getWareHouseName()); + batchStock.setDiposableGoods(diposableGoods); + diposableGoods.getGoodsBatchs().add(batchStock); + diposableGoods.setWareHouseID(entry.getWareHouseId()); + diposableGoods.setWareHouseName(entry.getWareHouseName()); diposableGoodBatchStockManager.saveOrUpdate(batchStock); newBatch = true; @@ -547,17 +454,17 @@ // 设置godownEntryItem和批次,标识号关联的信息 godownEntryItem.setBatchID(batchStock.getId()); godownEntryItem.setIdentificationID(identification.getId()); - godownEntryItem.setDiposableGoodsID(disposableGoodsStock.getId()); - godownEntryItem.setDiposableGoods(disposableGoodsStock); + godownEntryItem.setDiposableGoodsID(diposableGoods.getId()); + godownEntryItem.setDiposableGoods(diposableGoods); if(!godownEntryItem.isAssociatedInfoValidForInEntry()){ throw new RuntimeException("关联信息不正确!"); } objectDao.update(godownEntryItem);// 更新关联信息 // 新建项需要修改一次性物品价格 - disposableGoodsStock.setReferencePrice(godownEntryItem.getCost()); + diposableGoods.setReferencePrice(godownEntryItem.getCost()); objectDao.update(batchStock); - objectDao.update(disposableGoodsStock); + objectDao.update(diposableGoods); } @@ -574,7 +481,7 @@ // 删除该项 Long diposableGoodsID = godownEntryItem.getDiposableGoodsID(); - DisposableGoodsStock disposableGoodsStock = idToDiposableGoodsMap.get(diposableGoodsID); + DisposableGoodsStock diposableGoods = idToDiposableGoodsMap.get(diposableGoodsID); // 保存时,每一项都是新建标识号对象 Long batchID = godownEntryItem.getBatchID(); Long identificationID = godownEntryItem.getIdentificationID(); @@ -594,7 +501,7 @@ identification.adjustAmount(amountChange);// 调整库存 objectDao.update(identification); objectDao.update(batchStock); - objectDao.update(disposableGoodsStock); + objectDao.update(diposableGoods); // 删除godownEntryItem // 删除godownEntryItem godownEntryItem.getGodownEntry().getItemsList().remove(godownEntryItem); @@ -604,26 +511,32 @@ // 更新入库单,TODO 代码待重构 private void updateGodownEntry_internal(GodownEntry original, GodownEntry entry, Map result){ - Set diposableGoodsIDsSet = new HashSet();// 一次性物品id集合 - Set batchIdsSet = new HashSet();// 批次id集合 - Set batchNumbersSet = new HashSet();// 批次号集合 - Set identificationIdsSet = new HashSet();// 标识号id集合 - Map idToDiposableGoodsMap = new HashMap(); - Map idToBatchStockMap = new HashMap(); - Map idToIdentificationMap = new HashMap(); - Set toUpdateBatchStocks = new HashSet(); - Set toUpdateDiposableGoods = new HashSet(); + Set disposableGoodsIDsSet = new HashSet();// 一次性物品id集合 + Set disposableGoodsStockIDsSet = new HashSet();// 一次性物品库存id集合 + Set disposableGoodsBatchIDsSet = new HashSet();// 批次id集合 + Set disposableGoodsBatchStockIDsSet = new HashSet();// 批次库存id集合 + Set disposableGoodsBatchNumberSet = new HashSet();// 批次号集合 + Set identificationIDsSet = new HashSet();// 标识号id集合 + Map idToDisposableGoodsMap = new HashMap(); + Map idToDisposableGoodsStockMap = new HashMap(); + Map idToDisposableGoodsBatchMap = new HashMap(); + Map idToDisposableGoodsBatchStockMap = new HashMap(); + Map idToIdentificationMap = new HashMap(); // 汇总信息 - summaryDiposableGoodsInfo(original, diposableGoodsIDsSet, batchIdsSet, batchNumbersSet, identificationIdsSet); - summaryDiposableGoodsInfo(entry, diposableGoodsIDsSet, batchIdsSet, batchNumbersSet, identificationIdsSet); + summaryDiposableGoodsInfo(original, disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, + disposableGoodsBatchStockIDsSet, disposableGoodsBatchNumberSet, identificationIDsSet); + summaryDiposableGoodsInfo(entry, disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, + disposableGoodsBatchStockIDsSet, disposableGoodsBatchNumberSet, identificationIDsSet); // 锁定并获取入库单 GodownEntry curGodownEntry = getGodownEntryById_ForUpdate(original.getId().toString()); if(curGodownEntry == null){ // 入库单已被删除 throw new RuntimeException("入库单已被删除!"); } // 获取并锁定一次性物品相关资源 - lockAndGetDiposableGoodsResources(diposableGoodsIDsSet, batchIdsSet, batchNumbersSet, identificationIdsSet, idToDiposableGoodsMap, idToBatchStockMap, idToIdentificationMap); + lockAndGetDiposableGoodsResources(disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, disposableGoodsBatchStockIDsSet, + disposableGoodsBatchNumberSet, identificationIDsSet, idToDisposableGoodsMap,idToDisposableGoodsStockMap,idToDisposableGoodsBatchMap, + idToDisposableGoodsBatchStockMap, idToIdentificationMap); List originalItemList = original.getItemsList(); List itemList = entry.getItemsList(); @@ -652,15 +565,15 @@ } Long diposableGoodsID = godownEntryItem.getDiposableGoodsID(); - DisposableGoodsStock disposableGoodsStock = idToDiposableGoodsMap.get(diposableGoodsID); + DisposableGoodsStock diposableGoods = idToDisposableGoodsStockMap.get(diposableGoodsID); // 保存时,每一项都是新建标识号对象 Long batchID = godownEntryItem.getBatchID(); Long identificationID = godownEntryItem.getIdentificationID(); String batchNumber = godownEntryItem.getBatchNumber(); if(identificationID == null){ throw new RuntimeException("标识号不能为空,请升级数据!"); } - DisposableGoodsBatchStock batchStock = idToBatchStockMap.get(batchID); + DisposableGoodsBatchStock batchStock = idToDisposableGoodsBatchStockMap.get(batchID); if(batchStock == null){ batchStock = getDiposableGoodBatchStockByBatchNumber(diposableGoodsID,batchNumber); if(batchStock == null){ @@ -743,11 +656,11 @@ } // 是否更新批次 if(updateBatchStock){ - toUpdateBatchStocks.add(batchStock); + objectDao.update(batchStock); } // 是否更新一次性物品对象 if(updateDiposableGoods){ - toUpdateDiposableGoods.add(disposableGoodsStock); + objectDao.update(diposableGoods); } } // 处理新增 @@ -760,7 +673,7 @@ boolean newBatch = false; // 可能需要新建批次,一定会新建标识号 Long diposableGoodsID = godownEntryItem.getDiposableGoodsID(); - DisposableGoodsStock disposableGoodsStock = idToDiposableGoodsMap.get(diposableGoodsID); + DisposableGoodsStock diposableGoods = idToDisposableGoodsStockMap.get(diposableGoodsID); String batchNumber = godownEntryItem.getBatchNumber(); // 保存时,每一项都是新建标识号对象 Long batchID = godownEntryItem.getBatchID(); @@ -771,15 +684,15 @@ if(batchStock == null){ // 新建 批次 batchStock = new DisposableGoodsBatchStock(); - batchStock.setDiposableGoods(disposableGoodsStock); - disposableGoodsStock.getGoodsBatchs().add(batchStock); + batchStock.setDiposableGoods(diposableGoods); + diposableGoods.getGoodsBatchs().add(batchStock); diposableGoodBatchStockManager.saveOrUpdate(batchStock); newBatch = true; } - idToBatchStockMap.put(batchStock.getId(), batchStock); + idToDisposableGoodsBatchStockMap.put(batchStock.getId(), batchStock); }else{ // 更新批次 - batchStock = idToBatchStockMap.get(batchID); + batchStock = idToDisposableGoodsBatchStockMap.get(batchID); if(batchStock == null){ // 批次已经不存在 throw new RuntimeException("批次已被删除!"); @@ -811,16 +724,16 @@ godownEntryItem.setIdentificationID(identification.getId()); godownEntryItem.setDiposableGoodsID(batchStock.getDiposableGoods().getId()); godownEntryItem.setNewBatch(newBatch); - godownEntryItem.setDiposableGoods(disposableGoodsStock); + godownEntryItem.setDiposableGoods(diposableGoods); godownEntryItem.setGodownEntry(curGodownEntry); if(!godownEntryItem.isAssociatedInfoValidForInEntry()){ throw new RuntimeException("关联信息不正确!"); } // 新建项需要修改一次性物品价格 - disposableGoodsStock.setReferencePrice(godownEntryItem.getCost()); + diposableGoods.setReferencePrice(godownEntryItem.getCost()); - toUpdateBatchStocks.add(batchStock); - toUpdateDiposableGoods.add(disposableGoodsStock); + objectDao.update(batchStock); + objectDao.update(diposableGoods); // 保存godownEntryItem @@ -847,14 +760,14 @@ } // 删除该项 Long diposableGoodsID = originalGodownEntryItem.getDiposableGoodsID(); - DisposableGoodsStock disposableGoodsStock = idToDiposableGoodsMap.get(diposableGoodsID); + DisposableGoodsStock diposableGoods = idToDisposableGoodsStockMap.get(diposableGoodsID); // 保存时,每一项都是新建标识号对象 Long batchID = originalGodownEntryItem.getBatchID(); Long identificationID = originalGodownEntryItem.getIdentificationID(); if(identificationID == null){ throw new RuntimeException("标识号不能为空,请升级数据!"); } - DisposableGoodsBatchStock batchStock = idToBatchStockMap.get(batchID); + DisposableGoodsBatchStock batchStock = idToDisposableGoodsBatchStockMap.get(batchID); if(batchStock == null){ throw new RuntimeException("批次已被删除!"); } @@ -866,10 +779,10 @@ Long amountChange = -originalAmount; identification.adjustAmount(amountChange); - toUpdateBatchStocks.add(batchStock); - disposableGoodsStock.setWareHouseID(entry.getWareHouseId()); - disposableGoodsStock.setWareHouseName(entry.getWareHouseName()); - toUpdateDiposableGoods.add(disposableGoodsStock); + objectDao.update(batchStock); + objectDao.update(diposableGoods); + diposableGoods.setWareHouseID(entry.getWareHouseId()); + diposableGoods.setWareHouseName(entry.getWareHouseName()); // TODO 如果标识号库存为0了,并且没有入库单引用它,那么可以删除标识号 // if(false){ // batchStock.getIdentifications().remove(identification); @@ -879,13 +792,6 @@ curItemList.remove(curGodownEntryItem); objectDao.delete(curGodownEntryItem); } - // 更新一次性物品信息 - for (DisposableGoodsBatchStock batchStock : toUpdateBatchStocks) { - objectDao.update(batchStock); - } - for (DisposableGoodsStock disposableGoodsStock : toUpdateDiposableGoods) { - objectDao.update(disposableGoodsStock); - } // 更新入库单属性 updateGodownEntryProperties(original, entry, curGodownEntry); //setGodownEntryDefaultWareHouse(curGodownEntry); @@ -894,7 +800,7 @@ // 更新入库单对象 saveOrUpdate(curGodownEntry); // 设置GodownEntryItem详细列表 - setReturnDetails(curGodownEntry, idToBatchStockMap,result); + setReturnDetails(curGodownEntry, idToDisposableGoodsBatchStockMap,result); } /** * 同步入库单、出库单、调拨单的物品的仓库,使之与单的对应属性一致 @@ -910,30 +816,30 @@ } } // 获取并锁定一次性物品相关资源 - private void lockAndGetDiposableGoodsResources(Set diposableGoodsIDsSet, - Set batchIdsSet, Set batchNumbersSet, + private void lockAndGetDiposableGoodsResources(Set diposableGoodsIDsSet,Set diposableGoodsStockIDsSet,Set disposableGoodsBatchIDsSet, + Set disposableGoodsBatchStockIDsSet, Set batchNumbersSet, Set identificationIdsSet, - Map idToDiposableGoodsMap, - Map idToBatchStockMap, + Map idToDiposableGoodsMap,Map idToDisposableGoodsStockMap, + Map idToDisposableGoodsBatchMap ,Map idToBatchStockMap, Map idToIdentificationMap) { // 锁定一次性物品 String diposableGoodsIDsStr = SqlUtils - .joinToWhereInConditionForNonStringProperties(diposableGoodsIDsSet); + .joinToWhereInConditionForNonStringProperties(diposableGoodsStockIDsSet); String diposableGoodsIDsSql = String.format(" where po.id in (%s) ", diposableGoodsIDsStr); List allDiposableGoods = diposableGoodsManager .getDiposableGoodsBySql_ForUpdate(diposableGoodsIDsSql); if (allDiposableGoods == null - || allDiposableGoods.size() != diposableGoodsIDsSet.size()) { + || allDiposableGoods.size() != diposableGoodsStockIDsSet.size()) { throw new RuntimeException("某些物品已被删除!"); } - for (DisposableGoodsStock disposableGoodsStock : allDiposableGoods) { - idToDiposableGoodsMap.put(disposableGoodsStock.getId(), disposableGoodsStock); + for (DisposableGoodsStock diposableGoods : allDiposableGoods) { + idToDisposableGoodsStockMap.put(diposableGoods.getId(), diposableGoods); } // 获取相关批次和标识号 List batchStocks = null; String batchStockIDsStr = SqlUtils - .joinToWhereInConditionForNonStringProperties(batchIdsSet); + .joinToWhereInConditionForNonStringProperties(disposableGoodsBatchStockIDsSet); if (StringUtils.isNotBlank(batchStockIDsStr)) { String batchStockSql = String.format(" where po.id in (%s) ", batchStockIDsStr); @@ -946,9 +852,9 @@ // throw new RuntimeException("某些批次已被删除!"); // } if (batchStocks != null){ - for (DisposableGoodsBatchStock disposableGoodsBatchStock : batchStocks) { - idToBatchStockMap.put(disposableGoodsBatchStock.getId(), - disposableGoodsBatchStock); + for (DisposableGoodsBatchStock diposableGoodBatchStock : batchStocks) { + idToBatchStockMap.put(diposableGoodBatchStock.getId(), + diposableGoodBatchStock); } } @@ -976,8 +882,8 @@ } } - private void summaryDiposableGoodsInfo(GodownEntry entry, - Set diposableGoodsIDsSet, Set batchIdsSet, + private void summaryDiposableGoodsInfo(GodownEntry entry,Set disposableGoodsIDsSet, + Set diposableGoodsIDsSet, Set disposableGoodsBatchIDsSet,Set batchIdsSet, Set batchNumbersSet, Set identificationIdsSet) { if(entry == null){ return; @@ -1011,7 +917,7 @@ Double totalPrice = 0.0; String supplierName = null; for (GodownEntryItem godownEntryItem : items) { - DisposableGoodsStock disposableGoodsStock = godownEntryItem.getDiposableGoods(); + DisposableGoodsStock diposableGoods = godownEntryItem.getDiposableGoods(); totalPrice += (godownEntryItem.getCost() * godownEntryItem.getAmount()); if(supplierName == null){ @@ -1020,8 +926,8 @@ String specification = ""; String barcode = ""; - if(disposableGoodsStock != null){ - specification = disposableGoodsStock.getSpecification(); + if(diposableGoods != null){ + specification = diposableGoods.getSpecification(); if (StringUtils.isBlank(specification)){ specification = ""; } @@ -1031,12 +937,12 @@ Long diposableGoodsID = godownEntryItem.getDiposableGoodsID(); String batchNumber = godownEntryItem.getBatchNumber(); if(!DatabaseUtil.isPoIdValid(diposableGoodsID)){ - if(disposableGoodsStock != null){ - diposableGoodsID = disposableGoodsStock.getId();// 旧数据 + if(diposableGoods != null){ + diposableGoodsID = diposableGoods.getId();// 旧数据 } } if(DatabaseUtil.isPoIdValid(diposableGoodsID) && StringUtils.isNotBlank(batchNumber)){ - batchStock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(disposableGoodsStock.getId().toString(), godownEntryItem.getBatchNumber()); + batchStock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(diposableGoods.getId().toString(), godownEntryItem.getBatchNumber()); } } if(batchStock != null){ @@ -1196,61 +1102,69 @@ saveGodownOutEntry_internal(entry, result); } - public void saveGodownOutEntry_TRANS_REQUIRED(Iterable entrys, + public void saveGodownOutEntry_TRANS_REQUIRED(Collection entrys, Map result) { saveGodownOutEntry_internal(entrys, result); } public void saveGodownOutEntry_TRANS_MANDATORY( - Iterable entrys, Map result) { + Collection entrys, Map result) { saveGodownOutEntry_internal(entrys, result); } - private void saveGodownOutEntry_internal(Iterable entrys, + private void saveGodownOutEntry_internal(Collection entrys, Map result) { if(entrys == null){ return; } - Set diposableGoodsIDsSet = new HashSet();// 一次性物品id集合 - Set batchIdsSet = new HashSet();// 批次id集合 - Set batchNumbersSet = new HashSet();// 批次号集合 - Set identificationIdsSet = new HashSet();// 标识号id集合 - Map idToDiposableGoodsMap = new HashMap(); - Map idToBatchStockMap = new HashMap(); + Set disposableGoodsIDsSet = new HashSet();// 一次性物品id集合 + Set disposableGoodsStockIDsSet = new HashSet();// 一次性物品库存id集合 + Set disposableGoodsBatchIDsSet = new HashSet();// 批次id集合 + Set disposableGoodsBatchStockIDsSet = new HashSet();// 批次库存id集合 + Set disposableGoodsBatchNumberSet = new HashSet();// 批次号集合 + Set identificationIDsSet = new HashSet();// 标识号id集合 + Map idToDisposableGoodsMap = new HashMap(); + Map idToDisposableGoodsStockMap = new HashMap(); + Map idToDisposableGoodsBatchMap = new HashMap(); + Map idToDisposableGoodsBatchStockMap = new HashMap(); Map idToIdentificationMap = new HashMap(); for (GodownEntry godownEntry : entrys) { // 汇总信息 - summaryDiposableGoodsInfoForGodownOutEntry(godownEntry, diposableGoodsIDsSet, batchIdsSet, - batchNumbersSet, identificationIdsSet); + summaryDiposableGoodsInfoForGodownOutEntry(godownEntry, disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, + disposableGoodsBatchStockIDsSet, disposableGoodsBatchNumberSet, identificationIDsSet); } // 获取并锁定一次性物品相关资源 - lockAndGetDiposableGoodsResources(diposableGoodsIDsSet, batchIdsSet, - batchNumbersSet, identificationIdsSet, idToDiposableGoodsMap, - idToBatchStockMap, idToIdentificationMap); + lockAndGetDiposableGoodsResources(disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, disposableGoodsBatchStockIDsSet, + disposableGoodsBatchNumberSet, identificationIDsSet, idToDisposableGoodsMap,idToDisposableGoodsStockMap,idToDisposableGoodsBatchMap, + idToDisposableGoodsBatchStockMap, idToIdentificationMap); for (GodownEntry godownEntry : entrys) { - saveGodownOutEntry_internal(godownEntry, idToDiposableGoodsMap, idToBatchStockMap); + saveGodownOutEntry_internal(godownEntry, idToDisposableGoodsStockMap, idToDisposableGoodsBatchStockMap); } } - private void saveGodownOutEntry_internal(GodownEntry entry, + private void saveGodownOutEntry_internal(GodownEntry godownEntry, Map result) { - Set diposableGoodsIDsSet = new HashSet();// 一次性物品id集合 - Set batchIdsSet = new HashSet();// 批次id集合 - Set batchNumbersSet = new HashSet();// 批次号集合 - Set identificationIdsSet = new HashSet();// 标识号id集合 - Map idToDiposableGoodsMap = new HashMap(); - Map idToBatchStockMap = new HashMap(); + Set disposableGoodsIDsSet = new HashSet();// 一次性物品id集合 + Set disposableGoodsStockIDsSet = new HashSet();// 一次性物品库存id集合 + Set disposableGoodsBatchIDsSet = new HashSet();// 批次id集合 + Set disposableGoodsBatchStockIDsSet = new HashSet();// 批次库存id集合 + Set disposableGoodsBatchNumberSet = new HashSet();// 批次号集合 + Set identificationIDsSet = new HashSet();// 标识号id集合 + Map idToDisposableGoodsMap = new HashMap(); + Map idToDisposableGoodsStockMap = new HashMap(); + Map idToDisposableGoodsBatchMap = new HashMap(); + Map idToDisposableGoodsBatchStockMap = new HashMap(); Map idToIdentificationMap = new HashMap(); // 汇总信息 - summaryDiposableGoodsInfoForGodownOutEntry(entry, diposableGoodsIDsSet, batchIdsSet, - batchNumbersSet, identificationIdsSet); + summaryDiposableGoodsInfoForGodownOutEntry(godownEntry, disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, + disposableGoodsBatchStockIDsSet, disposableGoodsBatchNumberSet, identificationIDsSet); // 获取并锁定一次性物品相关资源 - lockAndGetDiposableGoodsResources(diposableGoodsIDsSet, batchIdsSet, - batchNumbersSet, identificationIdsSet, idToDiposableGoodsMap, - idToBatchStockMap, idToIdentificationMap); + lockAndGetDiposableGoodsResources(disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, disposableGoodsBatchStockIDsSet, + disposableGoodsBatchNumberSet, identificationIDsSet, idToDisposableGoodsMap,idToDisposableGoodsStockMap,idToDisposableGoodsBatchMap, + idToDisposableGoodsBatchStockMap, idToIdentificationMap); - saveGodownOutEntry_internal(entry, idToDiposableGoodsMap, - idToBatchStockMap); + saveGodownOutEntry_internal(godownEntry, idToDisposableGoodsStockMap, + idToDisposableGoodsBatchStockMap); } /** @@ -1274,14 +1188,14 @@ if (diposableGoodsID == null) { throw new RuntimeException("一次性物品ID为空!"); } - DisposableGoodsStock disposableGoodsStock = idToDiposableGoodsMap + DisposableGoodsStock diposableGoods = idToDiposableGoodsMap .get(diposableGoodsID); - if (disposableGoodsStock == null) { + if (diposableGoods == null) { throw new RuntimeException("物品已被删除!"); } newGodownEntryDiposableGoodsItem(entry, idToDiposableGoodsMap, idToBatchStockMap, godownEntryItem); - godownEntryItem.setDiposableGoods(disposableGoodsStock);// 和一次性物品关联 + godownEntryItem.setDiposableGoods(diposableGoods);// 和一次性物品关联 objectDao.update(godownEntryItem); } // 回写物资系统 @@ -1299,7 +1213,7 @@ Map idToBatchStockMap, GodownEntryItem godownEntryItem) { Long diposableGoodsID = godownEntryItem.getDiposableGoodsID(); - DisposableGoodsStock disposableGoodsStock = idToDiposableGoodsMap + DisposableGoodsStock diposableGoods = idToDiposableGoodsMap .get(diposableGoodsID); Long batchID = godownEntryItem.getBatchID(); String batchNumber = godownEntryItem.getBatchNumber(); @@ -1354,7 +1268,7 @@ identification.adjustAmount(-curOutAmount); objectDao.update(identification); objectDao.update(batchStock); - objectDao.update(disposableGoodsStock); + objectDao.update(diposableGoods); objectDao.save(diposableGoodsItem);// 保存diposableGoodsItem outAmount -= curOutAmount; @@ -1391,9 +1305,9 @@ if (diposableGoodsID == null) { throw new RuntimeException("一次性物品ID为空!"); } - DisposableGoodsStock disposableGoodsStock = idToDiposableGoodsMap + DisposableGoodsStock diposableGoods = idToDiposableGoodsMap .get(diposableGoodsID); - if (disposableGoodsStock == null) { + if (diposableGoods == null) { throw new RuntimeException("物品已被删除!"); } Long batchID = godownEntryItem.getBatchID(); @@ -1420,7 +1334,7 @@ identification.adjustAmount(amount);// 增加库存 objectDao.update(identification);// 更新库存 objectDao.update(batchStock); - objectDao.update(disposableGoodsStock); + objectDao.update(diposableGoods); objectDao.delete(diposableGoodsItem);// 删除明细项 } @@ -1429,8 +1343,8 @@ objectDao.delete(godownEntryItem); } - private void summaryDiposableGoodsInfoForGodownOutEntry(GodownEntry entry, - Set diposableGoodsIDsSet, Set batchIdsSet, + private void summaryDiposableGoodsInfoForGodownOutEntry(GodownEntry entry,Set disposableGoodsIDsSet, + Set diposableGoodsIDsSet, Set disposableGoodsBatchIDsSet,Set batchIdsSet, Set batchNumbersSet, Set identificationIdsSet) { List itemList = entry.getItemsList(); for (GodownEntryItem godownEntryItem : itemList) { @@ -1485,26 +1399,32 @@ private void updateGodownOutEntry_internal(GodownEntry original, GodownEntry entry, Map result) { - Set diposableGoodsIDsSet = new HashSet();// 一次性物品id集合 - Set batchIdsSet = new HashSet();// 批次id集合 - Set batchNumbersSet = new HashSet();// 批次号集合 - Set identificationIdsSet = new HashSet();// 标识号id集合 - Map idToDiposableGoodsMap = new HashMap(); - Map idToBatchStockMap = new HashMap(); - Map idToIdentificationMap = new HashMap(); - Set toUpdateBatchStocks = new HashSet(); - Set toUpdateDiposableGoods = new HashSet(); + Set disposableGoodsIDsSet = new HashSet();// 一次性物品id集合 + Set disposableGoodsStockIDsSet = new HashSet();// 一次性物品库存id集合 + Set disposableGoodsBatchIDsSet = new HashSet();// 批次id集合 + Set disposableGoodsBatchStockIDsSet = new HashSet();// 批次库存id集合 + Set disposableGoodsBatchNumberSet = new HashSet();// 批次号集合 + Set identificationIDsSet = new HashSet();// 标识号id集合 + Map idToDisposableGoodsMap = new HashMap(); + Map idToDisposableGoodsStockMap = new HashMap(); + Map idToDisposableGoodsBatchMap = new HashMap(); + Map idToDisposableGoodsBatchStockMap = new HashMap(); + Map idToIdentificationMap = new HashMap(); // 汇总信息 - summaryDiposableGoodsInfoForGodownOutEntry(original, diposableGoodsIDsSet, batchIdsSet, batchNumbersSet, identificationIdsSet); - summaryDiposableGoodsInfoForGodownOutEntry(entry, diposableGoodsIDsSet, batchIdsSet, batchNumbersSet, identificationIdsSet); + summaryDiposableGoodsInfoForGodownOutEntry(original, disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, + disposableGoodsBatchStockIDsSet, disposableGoodsBatchNumberSet, identificationIDsSet); + summaryDiposableGoodsInfoForGodownOutEntry(entry, disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, + disposableGoodsBatchStockIDsSet, disposableGoodsBatchNumberSet, identificationIDsSet); // 锁定并获取退库单 GodownEntry curGodownEntry = getGodownEntryById_ForUpdate(original.getId().toString()); if(curGodownEntry == null){ // 退库单已被删除 throw new RuntimeException("退库单已被删除!"); } // 获取并锁定一次性物品相关资源 - lockAndGetDiposableGoodsResources(diposableGoodsIDsSet, batchIdsSet, batchNumbersSet, identificationIdsSet, idToDiposableGoodsMap, idToBatchStockMap, idToIdentificationMap); + lockAndGetDiposableGoodsResources(disposableGoodsIDsSet,disposableGoodsStockIDsSet,disposableGoodsBatchIDsSet, disposableGoodsBatchStockIDsSet, + disposableGoodsBatchNumberSet, identificationIDsSet, idToDisposableGoodsMap,idToDisposableGoodsStockMap,idToDisposableGoodsBatchMap, + idToDisposableGoodsBatchStockMap, idToIdentificationMap); List originalItemList = original.getItemsList(); List itemList = entry.getItemsList(); @@ -1522,18 +1442,18 @@ if (diposableGoodsID == null) { throw new RuntimeException("一次性物品ID为空!"); } - DisposableGoodsStock disposableGoodsStock = idToDiposableGoodsMap + DisposableGoodsStock diposableGoods = idToDisposableGoodsStockMap .get(diposableGoodsID); - if (disposableGoodsStock == null) { + if (diposableGoods == null) { throw new RuntimeException("物品已被删除!"); } // 保存godownEntryItem godownEntryItem.setGodownEntry(curGodownEntry); - godownEntryItem.setDiposableGoods(disposableGoodsStock); + godownEntryItem.setDiposableGoods(diposableGoods); curItemList.add(godownEntryItem); objectDao.save(godownEntryItem); - newGodownEntryDiposableGoodsItem(curGodownEntry, idToDiposableGoodsMap, idToBatchStockMap, godownEntryItem); + newGodownEntryDiposableGoodsItem(curGodownEntry, idToDisposableGoodsStockMap, idToDisposableGoodsBatchStockMap, godownEntryItem); } // 处理删除项 for (int i = 0; i < originalItemList.size(); ++i) { @@ -1553,7 +1473,7 @@ continue; } // 删除该项 - deleteGodownOutEntryItem(curGodownEntryItem, idToDiposableGoodsMap, idToBatchStockMap, idToIdentificationMap); + deleteGodownOutEntryItem(curGodownEntryItem, idToDisposableGoodsStockMap, idToDisposableGoodsBatchStockMap, idToIdentificationMap); } // 更新入库单属性 updateGodownEntryProperties(original, entry, curGodownEntry); @@ -1616,20 +1536,20 @@ for (GodownEntry godownEntry : godownEntrys) { List tousseList = godownEntry.getItemsList(); for (GodownEntryItem godownEntryItem : tousseList) { - DisposableGoodsStock disposableGoodsStock = godownEntryItem + DisposableGoodsStock diposableGoods = godownEntryItem .getDiposableGoods(); - DisposableGoodsBatchStock disposableGoodsBatchStock = godownEntryItem.getDiposableGoodBatchStock(objectDao); + DisposableGoodsBatchStock diposableGoodBatchStock = godownEntryItem.getDiposableGoodBatchStock(objectDao); GodownEntryItemPrintVO tempVo = new GodownEntryItemPrintVO(); - tempVo.setCode(disposableGoodsStock.getExternalCode()); + tempVo.setCode(diposableGoods.getExternalCode()); tempVo.setAmount(godownEntryItem.getAmount()); - tempVo.setName(disposableGoodsStock.getName()); - tempVo.setSpecification(disposableGoodsStock.getSpecification()); - tempVo.setInventorySerialNumber(disposableGoodsStock.getInventorySerialNumber()); - if(disposableGoodsBatchStock != null){ - tempVo.setProducingArea(disposableGoodsBatchStock.getProducingArea()); - tempVo.setSupplierName(disposableGoodsBatchStock.getSupplierName()); + tempVo.setName(diposableGoods.getName()); + tempVo.setSpecification(diposableGoods.getSpecification()); + tempVo.setInventorySerialNumber(diposableGoods.getInventorySerialNumber()); + if(diposableGoodBatchStock != null){ + tempVo.setProducingArea(diposableGoodBatchStock.getProducingArea()); + tempVo.setSupplierName(diposableGoodBatchStock.getSupplierName()); } - tempVo.setUnit(disposableGoodsStock.getUnit()); + tempVo.setUnit(diposableGoods.getUnit()); tempVo.setAmount(godownEntryItem.getAmount()); tempVo.setPrice(godownEntryItem.getCost()); tempVo.setRowPrice(godownEntryItem.getCost()