Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/invoice/service/SubmitInvoiceItem.java =================================================================== diff -u -r20253 -r20831 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/invoice/service/SubmitInvoiceItem.java (.../SubmitInvoiceItem.java) (revision 20253) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/invoice/service/SubmitInvoiceItem.java (.../SubmitInvoiceItem.java) (revision 20831) @@ -4,6 +4,7 @@ import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatch; import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveDisposablegoods; +import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoodsInstance; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; /** @@ -40,6 +41,7 @@ private TousseInstance scannedTousseInstance; private TousseInstance scannedFixedBarcodeTousseInstance; private ExpensiveDisposablegoods scannedExpensiveDisposablegoods; + private ExpensiveGoodsInstance expensiveGoodsInstance; private DisposableGoodsBatch scannedDisposableGoodsBatch; private List tousseInstanceListBelongsToScannedFixedBarcode; @@ -95,6 +97,15 @@ return scannedExpensiveDisposablegoods; } + public ExpensiveGoodsInstance getExpensiveGoodsInstance() { + return expensiveGoodsInstance; + } + + public void setExpensiveGoodsInstance( + ExpensiveGoodsInstance expensiveGoodsInstance) { + this.expensiveGoodsInstance = expensiveGoodsInstance; + } + public DisposableGoodsBatch getScannedDisposableGoodsBatch() { return scannedDisposableGoodsBatch; } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoiceItem.java =================================================================== diff -u -r17643 -r20831 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoiceItem.java (.../InvoiceItem.java) (revision 17643) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoiceItem.java (.../InvoiceItem.java) (revision 20831) @@ -18,6 +18,7 @@ import com.forgon.Constants; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveDisposablegoods; +import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoodsInstance; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.idpredicate.IDAble; @@ -94,6 +95,11 @@ private Long disposableGoodsBatchId ;// 批次id private Long disposableGoodsBatchStockId ;// 批次库存id + private Long expensiveGoodsId ; + private Long expensiveGoodsInstanceId; + private Long expensiveGoodsStockId; + private List expensiveGoodsInstanceList = new LinkedList(); + private List expensiveDisposablegoods = new LinkedList(); public static final String DIPOSABLE_YES = "是";//一次性物品 public static final String DIPOSABLE_NO = "否"; //包 @@ -184,6 +190,40 @@ this.expensiveDisposablegoodsId = expensiveDisposablegoodsId; } + public Long getExpensiveGoodsId() { + return expensiveGoodsId; + } + + public Long getExpensiveGoodsInstanceId() { + return expensiveGoodsInstanceId; + } + + public Long getExpensiveGoodsStockId() { + return expensiveGoodsStockId; + } + + @Transient + public List getExpensiveGoodsInstanceList() { + return expensiveGoodsInstanceList; + } + + public void setExpensiveGoodsId(Long expensiveGoodsId) { + this.expensiveGoodsId = expensiveGoodsId; + } + + public void setExpensiveGoodsInstanceId(Long expensiveGoodsInstanceId) { + this.expensiveGoodsInstanceId = expensiveGoodsInstanceId; + } + + public void setExpensiveGoodsStockId(Long expensiveGoodsStockId) { + this.expensiveGoodsStockId = expensiveGoodsStockId; + } + + public void setExpensiveGoodsInstanceList( + List expensiveGoodsInstanceList) { + this.expensiveGoodsInstanceList = expensiveGoodsInstanceList; + } + public String getExpensiveDGBarcode() { return expensiveDGBarcode; } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/ExpensiveGoodsItem.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/ExpensiveGoodsItem.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/ExpensiveGoodsItem.java (revision 20831) @@ -0,0 +1,402 @@ +package com.forgon.disinfectsystem.entity.invoicemanager; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Index; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.persistence.Transient; + +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; + +import com.forgon.tools.db.DatabaseUtil; + +/** + * @author jeffli 2017年11月14日 下午7:36:15 + * + */ +@Entity +@Table(name = "ExpensiveGoodsItem", indexes = { + @Index(columnList = "invoice_id", name = "invoice_id_index"), + @Index(columnList = "name", name = "name_index"), + @Index(columnList = "barcode", name = "barcode_index"), + @Index(columnList = "expensiveGoodsId", name = "expensiveGoodsId_index"), + @Index(columnList = "expensiveGoodsStockId", name = "expensiveGoodsStockId_index"), + @Index(columnList = "expensiveGoodsInstanceId", name = "expensiveGoodsInstanceId_index"), + @Index(columnList = "returnGoodsRecordId", name = "returnGoodsRecordId_index"), + @Index(columnList = "invoiceItemId", name = "invoiceItemId_index"), + @Index(columnList = "returnGoodsItemId", name = "returnGoodsItemId_index") }) +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class ExpensiveGoodsItem { + + private Long id; + + private String name; + + private Integer amount; + + private Long returnedAmount; + + private String barcode; + + private Long expensiveGoodsId; + private Long expensiveGoodsStockId; + private Long expensiveGoodsInstanceId; + + private Long returnGoodsRecordId;// 退货记录的ID + + private Long invoiceItemId;// 明细汇总的ID + + private Long returnGoodsItemId;// 退货明细汇总的id + + private Long sendOutExpensiveGoodsItemId;// 发货明细的id + + private Double price; // 单价 + + private Double fluctuationPrice;// 浮动价格 + + private Invoice invoice; + + /** + * 装配记录id + */ + private Long packingRecordId; + + /** + * 装配扣减明细id + */ + private Long packingRecordOutItemId; + + private String type = InvoiceItem.TYPE_APPLICATION; + + public ExpensiveGoodsItem() { + + } + + public ExpensiveGoodsItem(ExpensiveGoodsItem item) { + this.name = item.name; + this.amount = item.amount; + this.returnedAmount = item.returnedAmount; + this.barcode = item.barcode; + this.expensiveGoodsId = item.expensiveGoodsId; + this.expensiveGoodsStockId = item.expensiveGoodsStockId; + this.expensiveGoodsInstanceId = item.expensiveGoodsInstanceId; + this.returnGoodsRecordId = item.returnGoodsRecordId; + this.invoiceItemId = item.invoiceItemId; + this.returnGoodsItemId = item.returnGoodsItemId; + this.sendOutExpensiveGoodsItemId = item.sendOutExpensiveGoodsItemId; + this.price = item.price; + this.fluctuationPrice = item.fluctuationPrice; + this.invoice = item.invoice; + this.packingRecordId = item.packingRecordId; + this.packingRecordOutItemId = item.packingRecordOutItemId; + } + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getAmount() { + return amount; + } + + public void setAmount(Integer amount) { + this.amount = amount; + } + + public Long getReturnedAmount() { + return returnedAmount; + } + + public void setReturnedAmount(Long returnedAmount) { + this.returnedAmount = returnedAmount; + } + + public String getBarcode() { + return barcode; + } + + public void setBarcode(String barcode) { + this.barcode = barcode; + } + + public Long getDisposableGoodsID() { + return expensiveGoodsId; + } + + public void setDisposableGoodsID(Long expensiveGoodsId) { + this.expensiveGoodsId = expensiveGoodsId; + } + + public Long getDisposableGoodsStockID() { + return expensiveGoodsStockId; + } + + public void setDisposableGoodsStockID(Long expensiveGoodsStockId) { + this.expensiveGoodsStockId = expensiveGoodsStockId; + } + + public Long getDisposableGoodsBatchStockID() { + return expensiveGoodsInstanceId; + } + + public void setDisposableGoodsBatchStockID(Long expensiveGoodsInstanceId) { + this.expensiveGoodsInstanceId = expensiveGoodsInstanceId; + } + + public Long getReturnGoodsRecordID() { + return returnGoodsRecordId; + } + + public void setReturnGoodsRecordID(Long returnGoodsRecordId) { + this.returnGoodsRecordId = returnGoodsRecordId; + } + + public Long getInvoiceItemID() { + return invoiceItemId; + } + + public void setInvoiceItemID(Long invoiceItemId) { + this.invoiceItemId = invoiceItemId; + } + + public Long getReturnGoodsItemID() { + return returnGoodsItemId; + } + + public void setReturnGoodsItemID(Long returnGoodsItemId) { + this.returnGoodsItemId = returnGoodsItemId; + } + + public Long getExpensiveGoodsId() { + return expensiveGoodsId; + } + + public Long getExpensiveGoodsStockId() { + return expensiveGoodsStockId; + } + + public Long getExpensiveGoodsInstanceId() { + return expensiveGoodsInstanceId; + } + + public Long getReturnGoodsRecordId() { + return returnGoodsRecordId; + } + + public Long getInvoiceItemId() { + return invoiceItemId; + } + + public Long getReturnGoodsItemId() { + return returnGoodsItemId; + } + + public Long getSendOutExpensiveGoodsItemId() { + return sendOutExpensiveGoodsItemId; + } + + public void setExpensiveGoodsId(Long expensiveGoodsId) { + this.expensiveGoodsId = expensiveGoodsId; + } + + public void setExpensiveGoodsStockId(Long expensiveGoodsStockId) { + this.expensiveGoodsStockId = expensiveGoodsStockId; + } + + public void setExpensiveGoodsInstanceId(Long expensiveGoodsInstanceId) { + this.expensiveGoodsInstanceId = expensiveGoodsInstanceId; + } + + public void setReturnGoodsRecordId(Long returnGoodsRecordId) { + this.returnGoodsRecordId = returnGoodsRecordId; + } + + public void setInvoiceItemId(Long invoiceItemId) { + this.invoiceItemId = invoiceItemId; + } + + public void setReturnGoodsItemId(Long returnGoodsItemId) { + this.returnGoodsItemId = returnGoodsItemId; + } + + public void setSendOutExpensiveGoodsItemId(Long sendOutExpensiveGoodsItemId) { + this.sendOutExpensiveGoodsItemId = sendOutExpensiveGoodsItemId; + } + + public Double getPrice() { + return price; + } + + public void setPrice(Double price) { + this.price = price; + } + + @ManyToOne + @JoinColumn(name = "invoice_id") + public Invoice getInvoice() { + return invoice; + } + + public void setInvoice(Invoice invoice) { + this.invoice = invoice; + } + + public Double getFluctuationPrice() { + return fluctuationPrice; + } + + public void setFluctuationPrice(Double fluctuationPrice) { + this.fluctuationPrice = fluctuationPrice; + } + + public Long getPackingRecordId() { + return packingRecordId; + } + + public void setPackingRecordId(Long packingRecordId) { + this.packingRecordId = packingRecordId; + } + + public Long getPackingRecordOutItemId() { + return packingRecordOutItemId; + } + + public void setPackingRecordOutItemId(Long packingRecordOutItemId) { + this.packingRecordOutItemId = packingRecordOutItemId; + } + + public String getType() { + return type; + } + + public void setType(String type) { + if (type != null) { + this.type = type; + } + } + + // 校验关联信息是否正确/发货 + @Transient + public boolean isAssociatedInfoValidForInvoice() { + + if (!DatabaseUtil.isPoIdValid(expensiveGoodsId)) { + return false; + } + if (!DatabaseUtil.isPoIdValid(expensiveGoodsStockId)) { + return false; + } + if (!DatabaseUtil.isPoIdValid(expensiveGoodsInstanceId)) { + return false; + } + + if (invoice == null) { + return false; + } + // if (!DatabaseUtil.isPoIdValid(invoice.getId())) { + // return false; + // } + if (!DatabaseUtil.isPoIdValid(invoiceItemId)) { + return false; + } + return true; + } + + @Transient + public boolean isAssociatedInfoValidForExpensiveDisposablegoodsInvoice() { + + if (!DatabaseUtil.isPoIdValid(expensiveGoodsId)) { + return false; + } + if (!DatabaseUtil.isPoIdValid(expensiveGoodsStockId)) { + return false; + } + + if (!DatabaseUtil.isPoIdValid(expensiveGoodsInstanceId)) { + return false; + } + + if (invoice == null) { + return false; + } + // if (!DatabaseUtil.isPoIdValid(invoice.getId())) { + // return false; + // } + if (!DatabaseUtil.isPoIdValid(invoiceItemId)) { + return false; + } + return true; + } + + // 校验关联信息是否正确/退货 + @Transient + public boolean isAssociatedInfoValidForReturn() { + + if (!DatabaseUtil.isPoIdValid(expensiveGoodsId)) { + return false; + } + if (!DatabaseUtil.isPoIdValid(expensiveGoodsStockId)) { + return false; + } + + if (!DatabaseUtil.isPoIdValid(expensiveGoodsInstanceId)) { + return false; + } + + if (!DatabaseUtil.isPoIdValid(returnGoodsRecordId)) { + return false; + } + if (!DatabaseUtil.isPoIdValid(returnGoodsItemId)) { + return false; + } + if (!DatabaseUtil.isPoIdValid(sendOutExpensiveGoodsItemId)) { + return false; + } + return true; + } + + @Transient + public boolean isAssociatedInfoValidForReturnExpensiveDisposablegoods() { + + if (!DatabaseUtil.isPoIdValid(expensiveGoodsId)) { + return false; + } + if (!DatabaseUtil.isPoIdValid(expensiveGoodsStockId)) { + return false; + } + + if (!DatabaseUtil.isPoIdValid(expensiveGoodsInstanceId)) { + return false; + } + + if (!DatabaseUtil.isPoIdValid(returnGoodsRecordId)) { + return false; + } + if (!DatabaseUtil.isPoIdValid(returnGoodsItemId)) { + return false; + } + if (!DatabaseUtil.isPoIdValid(sendOutExpensiveGoodsItemId)) { + return false; + } + return true; + } + +} Index: ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsStockManagerImpl.java =================================================================== diff -u -r20827 -r20831 --- ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsStockManagerImpl.java (.../ExpensiveGoodsStockManagerImpl.java) (revision 20827) +++ ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsStockManagerImpl.java (.../ExpensiveGoodsStockManagerImpl.java) (revision 20831) @@ -29,6 +29,7 @@ import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoodsStock; import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; import com.forgon.disinfectsystem.expensiveGoods.util.ExpensiveGoodsUtils; +import com.forgon.disinfectsystem.expensivegoods.ExpensiveGoodsServiceContext; import com.forgon.security.tools.Util; import com.forgon.tools.Constants; import com.forgon.tools.SqlBuilder; @@ -337,5 +338,143 @@ } return storage; } + + @Override + public void lockAndGetExpensiveGoodsResources( + ExpensiveGoodsServiceContext expensiveGoodssServiceContext) { + expensiveGoodssServiceContext.validateParams(); + String warehouseId = expensiveGoodssServiceContext.getWarehouseId(); + Set expensiveGoodssIDsSet = expensiveGoodssServiceContext.getExpensiveGoodsIdsSet(); + Set diposableGoodsStockIDsSet = expensiveGoodssServiceContext.getExpensiveGoodsStockIdsSet(); + Set expensiveDisposablegoodsIdsSet = expensiveGoodssServiceContext.getExpensiveExpensiveGoodsIdsSet(); + Set expensiveGoodssBatchIDsSet = expensiveGoodssServiceContext.getExpensiveGoodsBatchIdsSet(); + Set expensiveGoodssBatchStockIDsSet = expensiveGoodssServiceContext.getExpensiveGoodsBatchStockIdsSet(); + Set identificationIdsSet = expensiveGoodssServiceContext.getIdentificationIdsSet(); + Map idToDiposableGoodsMap = expensiveGoodssServiceContext.getIdToExpensiveGoodsMap(); + Map expensiveGoodssIDToExpensiveGoodsStockMap = expensiveGoodssServiceContext.getExpensiveGoodsIDToExpensiveGoodsStockMap(); + Map idToExpensiveGoodsStockMap = expensiveGoodssServiceContext.getIdToExpensiveGoodsStockMap(); + Map idToExpensiveDisposablegoodsMap = expensiveGoodssServiceContext.getIdToExpensiveExpensiveGoodsMap(); + Map barcodeToExpensiveDisposablegoodsMap = expensiveGoodssServiceContext.getBarcodeToExpensiveDisposablegoodsMap(); + Map idToExpensiveGoodsBatchMap = expensiveGoodssServiceContext.getIdToExpensiveGoodsBatchMap(); + Map barcodeToExpensiveGoodsBatchMap = expensiveGoodssServiceContext.getBarcodeToExpensiveGoodsBatchMap(); + Map idToExpensiveGoodsBatchStockMap = expensiveGoodssServiceContext.getIdToExpensiveGoodsBatchStockMap(); + Map barcodeToExpensiveGoodsBatchStockMap = expensiveGoodssServiceContext.getBarcodeToExpensiveGoodsBatchStockMap(); + Map idToIdentificationMap = expensiveGoodssServiceContext.getIdToIdentificationMap(); + + // 锁定一次性物品 + List expensiveGoodssList = getExpensiveGoodsByExpensiveGoodsIDs_ForUpdate(expensiveGoodssIDsSet); + if (expensiveGoodssList == null + || expensiveGoodssList.size() != expensiveGoodssIDsSet.size()) { + throw new RuntimeException("某些物品已被删除!"); + } + for (ExpensiveGoods expensiveGoodss : expensiveGoodssList) { + idToDiposableGoodsMap.put(expensiveGoodss.getId(), expensiveGoodss); + } + // 获取物品库存 + List expensiveGoodssStockList = null; + if(expensiveGoodssServiceContext.sceneInvoiceAutoDeduction()){ + // 发货自动扣减库存,根据物品定义id和仓库来获取物品库存 + Date validUntil = new Date(); + String validUntilSql = " " + + dateQueryAdapter.dateConverAdapter2(com.forgon.Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(validUntil), + "yyyy-mm-dd HH24:MI:SS"); + String validUntilStr = String.format(" ( %s > %s) ", "b.expDate", validUntilSql); + String queryString = String + .format("select distinct po from %s po inner join fetch po.goodsBatchs b inner join fetch b.identifications i where %s and i.amount>0 and po.warehouseID=%s and (%s) ", + ExpensiveGoodsStock.class.getSimpleName(),validUntilStr,warehouseId,SqlUtils.getStringFieldInCollectionsPredicate("po.expensiveGoodssID", expensiveGoodssIDsSet)); + expensiveGoodssStockList = objectDao.findByHql(queryString); + }else{ + if (!diposableGoodsStockIDsSet.isEmpty()) { + expensiveGoodssStockList = getExpensiveGoodsStockByExpensiveGoodsStockIDs(diposableGoodsStockIDsSet); + if (expensiveGoodssStockList == null + || expensiveGoodssStockList.size() != diposableGoodsStockIDsSet + .size()) { + throw new RuntimeException("某些物品库存已被删除!"); + } + } + } + // 设置物品库存到map + if(expensiveGoodssStockList != null){ + expensiveGoodssServiceContext.setExpensiveGoodsStockList(expensiveGoodssStockList); + for (ExpensiveGoodsStock expensiveGoodssStock : expensiveGoodssStockList) { + idToExpensiveGoodsStockMap.put(expensiveGoodssStock.getId(), expensiveGoodssStock); + expensiveGoodssIDToExpensiveGoodsStockMap.put(expensiveGoodssStock.getExpensiveGoodsID(), expensiveGoodssStock); + } + } + + //设置高值耗材 + if (!expensiveDisposablegoodsIdsSet.isEmpty()) { + List expensiveDisposablegoodsList = getExpensiveDisposablegoodsByIds(expensiveDisposablegoodsIdsSet); + if (expensiveDisposablegoodsList == null + || expensiveDisposablegoodsList.size() != expensiveDisposablegoodsIdsSet + .size()) { + throw new RuntimeException("某些高值耗材已被删除!"); + } + expensiveGoodssServiceContext.setExpensiveDisposablegoodsList(expensiveDisposablegoodsList); + if (expensiveDisposablegoodsList != null) { + for (ExpensiveDisposablegoods expensiveDisposablegoods : expensiveDisposablegoodsList) { + barcodeToExpensiveDisposablegoodsMap.put(expensiveDisposablegoods.getBarcode(), expensiveDisposablegoods); + idToExpensiveDisposablegoodsMap.put(expensiveDisposablegoods.getId(), expensiveDisposablegoods); + } + } + } + + // 加载所有的批次定义 + if(!expensiveGoodssBatchIDsSet.isEmpty()){ + String getExpensiveGoodsBatchSql = String.format(" where %s ", + SqlUtils.getNonStringFieldInCollectionsPredicate("po.id", expensiveGoodssBatchIDsSet)); + List expensiveGoodssBatchs = objectDao.findBySql(ExpensiveGoodsBatch.class.getSimpleName(), getExpensiveGoodsBatchSql); + if (expensiveGoodssBatchs == null + || expensiveGoodssBatchs.size() != expensiveGoodssBatchIDsSet + .size()) { + throw new RuntimeException("某些批次定义已被删除!"); + } + if (expensiveGoodssBatchs != null) { + for (ExpensiveGoodsBatch expensiveGoodssBatch : expensiveGoodssBatchs) { + idToExpensiveGoodsBatchMap.put(expensiveGoodssBatch.getId(), expensiveGoodssBatch); + barcodeToExpensiveGoodsBatchMap.put(expensiveGoodssBatch.getBarcode(), expensiveGoodssBatch); + } + } + } + + // 获取批次库存 + if(!expensiveGoodssBatchStockIDsSet.isEmpty()){ + String batchStockSql = String.format(" where %s ", SqlUtils + .getStringFieldInCollectionsPredicate("po.id", + expensiveGoodssBatchStockIDsSet)); + List expensiveGoodssBatchStocks = objectDao + .findBySql(ExpensiveGoodsBatchStock.class.getSimpleName(), + batchStockSql); + + if (expensiveGoodssBatchStocks == null || expensiveGoodssBatchStocks.size() != expensiveGoodssBatchStockIDsSet.size()) { + throw new RuntimeException("某些批次库存已被删除!"); + } + expensiveGoodssServiceContext.setExpensiveGoodsBatchStockList(expensiveGoodssBatchStocks); + for (ExpensiveGoodsBatchStock diposableGoodBatchStock : expensiveGoodssBatchStocks) { + idToExpensiveGoodsBatchStockMap.put(diposableGoodBatchStock.getId(), diposableGoodBatchStock); + barcodeToExpensiveGoodsBatchStockMap.put(diposableGoodBatchStock.getBarcode(), diposableGoodBatchStock); + } + } + + //设置一次性物品标识号 + if (!identificationIdsSet.isEmpty()) { + String getIdentificationSql = String.format(" where %s ", SqlUtils + .getNonStringFieldInCollectionsPredicate("po.id", + identificationIdsSet)); + List identifications = objectDao + .findBySql( + ExpensiveGoodsIdentification.class.getSimpleName(), + getIdentificationSql); + + if (identifications == null + || identifications.size() != identificationIdsSet.size()) { + throw new RuntimeException("某些标识号已被删除!"); + } + for (ExpensiveGoodsIdentification identificationOfDiposableGoods : identifications) { + idToIdentificationMap.put(identificationOfDiposableGoods.getId(), identificationOfDiposableGoods); + } + } + } + } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/Invoice.java =================================================================== diff -u -r20550 -r20831 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/Invoice.java (.../Invoice.java) (revision 20550) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/Invoice.java (.../Invoice.java) (revision 20831) @@ -93,6 +93,8 @@ private List lostMaterialItems; //丢失器械明细 @JsonIgnore private List diposableGoodsItems;// 实际发放的一次性物品 + @JsonIgnore + private List expensiveGoodsItems; private InvoicePlan invoicePlan; // 申请单 @@ -311,6 +313,17 @@ this.diposableGoodsItems = diposableGoodsItems; } + @OneToMany(fetch = FetchType.LAZY) + @Cascade(value = { CascadeType.ALL }) + @JoinColumn(name = "invoice_id") + public List getExpensiveGoodsItems() { + return expensiveGoodsItems; + } + + public void setExpensiveGoodsItems(List expensiveGoodsItems) { + this.expensiveGoodsItems = expensiveGoodsItems; + } + public String getStatus() { return status; }