Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManagerImpl.java =================================================================== diff -u -r12730 -r12731 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManagerImpl.java (.../GodownEntryManagerImpl.java) (revision 12730) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManagerImpl.java (.../GodownEntryManagerImpl.java) (revision 12731) @@ -360,6 +360,43 @@ saveGodownEntry_internal(entrys, result); } + private DisposableGoodsBatch newDisposableGoodsBatch(DisposableGoods diposableGoods,Long warehouseID,String warehouseName,GodownEntryItem godownEntryItem){ + DisposableGoodsBatch disposableGoodsBatch = new DisposableGoodsBatch(); + disposableGoodsBatch.setDiposableGoods(diposableGoods); + disposableGoodsBatch.setBatchNumber(godownEntryItem.getBatchNumber()); + diposableGoodsManager.saveOrUpdate(disposableGoodsBatch); + return disposableGoodsBatch; + } + + private DisposableGoodsBatchStock newDisposableGoodsBatchStock( + DisposableGoods disposableGoods, + DisposableGoodsStock disposableGoodsStock, + DisposableGoodsBatch disposableGoodsBatch, Long warehouseID, + String warehouseName, GodownEntryItem godownEntryItem) { + DisposableGoodsBatchStock disposableGoodsBatchStock = new DisposableGoodsBatchStock(); + disposableGoodsBatchStock.setDiposableGoods(disposableGoodsStock); + disposableGoodsStock.getGoodsBatchs().add(disposableGoodsBatchStock); + disposableGoodsBatchStock.setBarcode(disposableGoodsBatch.getBarcode()); + disposableGoodsBatchStock.setDisposableGoodsID(disposableGoods.getId()); + disposableGoodsBatchStock + .setDisposableGoodsBatchID(disposableGoodsBatch.getId()); + disposableGoodsBatchStock.setBatchNumber(godownEntryItem + .getBatchNumber()); + disposableGoodsBatchStock.setCost(godownEntryItem.getCost()); + disposableGoodsBatchStock.setExpDate(godownEntryItem.getExpDate()); + disposableGoodsBatchStock.setManufacturer(godownEntryItem + .getManufacturer()); + disposableGoodsBatchStock.setSterileBatchNumber(godownEntryItem + .getSterileBatchNumber()); + disposableGoodsBatchStock.setSupplierName(godownEntryItem + .getSupplierName()); + disposableGoodsBatchStock.setProducingArea(godownEntryItem + .getProducingArea()); + disposableGoodsBatchStock.setWarehouseID(warehouseID); + disposableGoodsBatchStock.setWarehouseName(warehouseName); + diposableGoodBatchStockManager.saveOrUpdate(disposableGoodsBatchStock); + return disposableGoodsBatchStock; + } /** * @param entry * @param idToDiposableGoodsMap @@ -389,64 +426,61 @@ GodownEntryItem godownEntryItem = itemList.get(i); Long disposableGoodsID = godownEntryItem.getDisposableGoodsID(); Long disposableGoodsStockID = godownEntryItem.getDisposableGoodsStockID(); - DisposableGoods diposableGoods = idToDisposableGoodsMap.get(disposableGoodsID); + DisposableGoods disposableGoods = idToDisposableGoodsMap.get(disposableGoodsID); DisposableGoodsStock disposableGoodsStock = idToDisposableGoodsStockMap.get(disposableGoodsStockID); String batchNumber = godownEntryItem.getBatchNumber(); if(StringUtils.isBlank(batchNumber)){ throw new RuntimeException("批次号不能为空!"); } // 查找批次定义 - + DisposableGoodsBatch disposableGoodsBatch = diposableGoodsManager.getDisposableGoodsBatchByBatchNumber(disposableGoodsID, batchNumber); + if(disposableGoodsBatch == null){ + disposableGoodsBatch = newDisposableGoodsBatch(disposableGoods,warehouseID, warehouseName, godownEntryItem); + } + // 查找批次库存 + DisposableGoodsBatchStock disposableGoodsBatchStock = diposableGoodsManager.getDisposableGoodsStockByBatchNumber(warehouseID, disposableGoodsID, batchNumber); // 保存时,每一项都是新建标识号对象 Long disposableGoodsBatchID = godownEntryItem.getDisposableGoodsBatchID(); Long disposableGoodsBatchStockID = godownEntryItem.getDisposableGoodsBatchStockID(); - DisposableGoodsBatchStock batchStock = null; - if(disposableGoodsBatchStockID == null){ - // 有可能该批次已经存在,尝试根据批次获取 - batchStock = getDiposableGoodBatchStockByBatchNumber(disposableGoodsStockID,batchNumber); - if(batchStock == null){ - // 新建 批次 - batchStock = new DisposableGoodsBatchStock(); - batchStock.setDiposableGoods(disposableGoodsStock); - disposableGoodsStock.getGoodsBatchs().add(batchStock); - disposableGoodsStock.setWarehouseID(entry.getWarehouseID()); - disposableGoodsStock.setWarehouseName(entry.getWarehouseName()); - diposableGoodBatchStockManager.saveOrUpdate(batchStock); - - newBatch = true; - } - idToBatchStockMap.put(batchStock.getId(), batchStock); - }else{ - // 更新批次 - batchStock = idToBatchStockMap.get(disposableGoodsBatchStockID); - if(batchStock == null){ - // 批次已经不存在 - throw new RuntimeException("批次已被删除!"); - } + if(disposableGoodsBatchStock == null){ + // 新建 批次 + disposableGoodsBatchStock = newDisposableGoodsBatchStock(disposableGoods, disposableGoodsStock, disposableGoodsBatch, warehouseID, warehouseName, godownEntryItem); + + newBatch = true; + idToBatchStockMap.put(disposableGoodsBatchStock.getId(), disposableGoodsBatchStock); } - // 更新批次相关信息 - batchStock.setDisposableGoodsID(disposableGoodsID); - batchStock.setDisposableGoodsBatchID(disposableGoodsBatchID); - batchStock.setBatchNumber(godownEntryItem.getBatchNumber()); - batchStock.setCost(godownEntryItem.getCost()); - batchStock.setExpDate(godownEntryItem.getExpDate()); - batchStock.setManufacturer(godownEntryItem.getManufacturer()); - batchStock.setSterileBatchNumber(godownEntryItem.getSterileBatchNumber()); - batchStock.setSupplierName(godownEntryItem.getSupplierName()); - batchStock.setProducingArea(godownEntryItem.getProducingArea()); - batchStock.setWarehouseID(entry.getWarehouseID()); - batchStock.setWarehouseName(entry.getWarehouseName()); + // 更新一次性物品定义 + disposableGoods.setReferencePrice(godownEntryItem.getCost()); + // 更新批次定义 + disposableGoodsBatch.setCost(godownEntryItem.getCost()); + disposableGoodsBatch.setExpDate(godownEntryItem.getExpDate()); + disposableGoodsBatch.setManufacturer(godownEntryItem.getManufacturer()); + disposableGoodsBatch.setSterileBatchNumber(godownEntryItem.getSterileBatchNumber()); + disposableGoodsBatch.setSupplierName(godownEntryItem.getSupplierName()); + disposableGoodsBatch.setProducingArea(godownEntryItem.getProducingArea()); + // 更新批次库存相关信息 +// disposableGoodsBatchStock.setDisposableGoodsID(disposableGoodsID); +// disposableGoodsBatchStock.setDisposableGoodsBatchID(disposableGoodsBatch.getId()); +// disposableGoodsBatchStock.setBatchNumber(godownEntryItem.getBatchNumber()); + disposableGoodsBatchStock.setCost(godownEntryItem.getCost()); + disposableGoodsBatchStock.setExpDate(godownEntryItem.getExpDate()); + disposableGoodsBatchStock.setManufacturer(godownEntryItem.getManufacturer()); + disposableGoodsBatchStock.setSterileBatchNumber(godownEntryItem.getSterileBatchNumber()); + disposableGoodsBatchStock.setSupplierName(godownEntryItem.getSupplierName()); + disposableGoodsBatchStock.setProducingArea(godownEntryItem.getProducingArea()); +// disposableGoodsBatchStock.setWarehouseID(entry.getWarehouseID()); +// disposableGoodsBatchStock.setWarehouseName(entry.getWarehouseName()); // 新建标识号对象 IdentificationOfDisposableGoods identification = new IdentificationOfDisposableGoods(); identification.setDisposableGoodsID(disposableGoodsID); - identification.setDisposableGoodsBatchID(disposableGoodsBatchID); - identification.setDisposableGoodsStockID(disposableGoodsStockID); - identification.setBatchStock(batchStock); - batchStock.getIdentifications().add(identification); + identification.setDisposableGoodsBatchID(disposableGoodsBatch.getId()); + identification.setDisposableGoodsStockID(disposableGoodsStock.getId()); + identification.setBatchStock(disposableGoodsBatchStock); + disposableGoodsBatchStock.getIdentifications().add(identification); identification.adjustAmount(godownEntryItem.getAmount()); - identification.setBatchStock(batchStock); + identification.setBatchStock(disposableGoodsBatchStock); identification.setConclusion(godownEntryItem.getConclusion()); identification.setEntryDate(entry.getTime()); identification.setIdentification("");// 暂时为空,待确定生成规则 @@ -457,7 +491,7 @@ godownEntryItem.setNewBatch(newBatch); // 设置godownEntryItem和批次,标识号关联的信息 - godownEntryItem.setDisposableGoodsBatchStockID(batchStock.getId()); + godownEntryItem.setDisposableGoodsBatchStockID(disposableGoodsBatchStock.getId()); godownEntryItem.setIdentificationID(identification.getId()); godownEntryItem.setDisposableGoodsStockID(disposableGoodsStock.getId()); godownEntryItem.setDiposableGoods(disposableGoodsStock); @@ -467,12 +501,11 @@ objectDao.update(godownEntryItem);// 更新关联信息 // 新建项需要修改一次性物品价格 disposableGoodsStock.setReferencePrice(godownEntryItem.getCost()); - - objectDao.update(batchStock); + objectDao.update(disposableGoods); objectDao.update(disposableGoodsStock); - + objectDao.update(disposableGoodsBatch); + objectDao.update(disposableGoodsBatchStock); } - } public void updateGodownEntry_TRANS_REQUIRED(GodownEntry original, GodownEntry entry, Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManager.java =================================================================== diff -u -r12730 -r12731 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManager.java (.../DiposableGoodsManager.java) (revision 12730) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManager.java (.../DiposableGoodsManager.java) (revision 12731) @@ -82,4 +82,6 @@ public void update_TRANS_REQUIRED(DisposableGoodsStock disposableGoodsStock); public DisposableGoodsStock createDisposableGoodsStock(Long warehouseID,String warehouseName,DisposableGoods disposableGoods); + + public void saveOrUpdate(DisposableGoodsBatch disposableGoodsBatch); } Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java =================================================================== diff -u -r12730 -r12731 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java (.../DiposableGoodsManagerImpl.java) (revision 12730) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java (.../DiposableGoodsManagerImpl.java) (revision 12731) @@ -28,18 +28,17 @@ import org.hibernate.LockMode; import org.hibernate.Query; import org.hibernate.Session; -import org.springframework.transaction.interceptor.TransactionAspectSupport; import com.forgon.attachfile.service.AttachFileManager; import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.model.BarcodeDevice; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.diposablegoods.util.DiposableGoodsUtils; -import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodsInstance; 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.DiposableGoodsInstance; import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryItem; import com.forgon.disinfectsystem.entity.assestmanagement.IdentificationOfDisposableGoods; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; @@ -62,6 +61,8 @@ import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.vo.PriceAmount; import com.forgon.security.tools.Util; +import com.forgon.serialnumber.model.SerialNum; +import com.forgon.serialnumber.service.SerialNumManager; import com.forgon.systemsetting.model.HttpOption; import com.forgon.systemsetting.service.HttpOptionManager; import com.forgon.tools.Constants; @@ -89,6 +90,8 @@ private InitDbConnection dbConnection; + private SerialNumManager serialNumManager; + public void setAttachFileManager(AttachFileManager attachFileManager) { this.attachFileManager = attachFileManager; } @@ -120,6 +123,10 @@ this.dbConnection = dbConnection; } + public void setSerialNumManager(SerialNumManager serialNumManager) { + this.serialNumManager = serialNumManager; + } + public void saveOrUpdate(DisposableGoodsStock disposableGoodsStock) { // 处理“” if (StringUtils.isBlank(disposableGoodsStock.getSpecification())) { @@ -1320,4 +1327,18 @@ objectDao.save(disposableGoodsStock); return disposableGoodsStock; } + + public void saveOrUpdate(DisposableGoodsBatch disposableGoodsBatch){ + if(disposableGoodsBatch == null){ + return; + } + if (StringUtils.isBlank(disposableGoodsBatch.getBarcode())) { + String barcode = serialNumManager + .getSerialNumberStr(SerialNum.TYPE_BARCODE); + disposableGoodsBatch.setBarcode(barcode); + disposableGoodsBatch + .setType(BarcodeDevice.BARCODE_TYPE_DIPOSABLEGOODS); + } + objectDao.saveOrUpdate(disposableGoodsBatch); + } }