Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinstance/IDCardInstance.java =================================================================== diff -u -r15819 -r17352 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinstance/IDCardInstance.java (.../IDCardInstance.java) (revision 15819) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinstance/IDCardInstance.java (.../IDCardInstance.java) (revision 17352) @@ -219,7 +219,7 @@ public boolean isCanUse(ObjectDao objectDao, boolean throwException) { if (!isUsing()) { if (throwException) { - throw new RuntimeException(String.format("已丢失 ")); + throw new RuntimeException(String.format("标识牌实例当前状态为%s ",status)); } return false;// 状态不为使用中 } @@ -270,4 +270,12 @@ } return false; } + + @Transient + public boolean isDiscarded() { + if (IDCardDefinition.STATUS_DISCARDED.equals(status)) { + return true; + } + return false; + } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/toussedefinition/service/TousseDefinitionUtils.java =================================================================== diff -u -r17313 -r17352 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/toussedefinition/service/TousseDefinitionUtils.java (.../TousseDefinitionUtils.java) (revision 17313) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/toussedefinition/service/TousseDefinitionUtils.java (.../TousseDefinitionUtils.java) (revision 17352) @@ -216,4 +216,16 @@ return price; } + + public static int getAutoDiscardCount(TousseDefinition td) { + if(td == null){ + return 0; + } + Integer autoDiscardCount = td.getAutoDiscardCount(); + if(autoDiscardCount == null){ + return 0; + } + return autoDiscardCount.intValue(); + } + } Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r17324 -r17352 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 17324) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 17352) @@ -2696,6 +2696,11 @@ throw new RuntimeException(String.format( "条码为%s的标识牌已丢失,不能继续使用!", barcode)); } + // 是否已废弃 + if (idCardInstance.isDiscarded()) { + throw new RuntimeException(String.format( + "条码为%s的标识牌已废弃,不能继续使用!", barcode)); + } TousseDefinition tousseDefinition = tousseDefinitionManager .getTousseDefinitionByIDCardInstance(idCardInstance); if (tousseDefinition == null) { @@ -4084,6 +4089,10 @@ public boolean addTousseInstanceToIdCardInstance( String idCardDefinitionId,String idCardInstanceID, PackingTask packingTask, TousseInstance tousseInstance) { + TousseDefinition tousseDefinition = tousseInstance.getTousseDefinition(); + if(tousseDefinition == null){ + throw new RuntimeException("包定义已不存在!"); + } if(StringUtils.isBlank(idCardDefinitionId)){ throw new RuntimeException("标识牌定义id不能为空!"); } @@ -4100,7 +4109,7 @@ tousseInstance.setIdCardInstanceID(idCardInstance.getId()); tousseInstance.setIdCardInstanceBarcode(idCardInstance.getBarcode()); - + int autoDiscardCount = TousseDefinitionUtils.getAutoDiscardCount(tousseDefinition); Long useAmount = idCardInstance.getUseAmount(); if (useAmount != null){ useAmount += 1; @@ -4119,7 +4128,12 @@ } idCardDefinition.setUseAmount(useAmountOfDef); tousseInstance.setUseAmount(useAmountOfDef); - + // 判断是否超出自动废弃计数 + if(autoDiscardCount > 0){ + if(useAmount >= autoDiscardCount){ + idCardInstance.setStatus(IDCardDefinition.STATUS_DISCARDED); + } + } objectDao.saveOrUpdate(tousseInstance); idCardInstance.safelySetLastTousseInstanceId(tousseInstance.getId()); Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/tousseForm.js =================================================================== diff -u -r17309 -r17352 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/tousseForm.js (.../tousseForm.js) (revision 17309) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/tousseForm.js (.../tousseForm.js) (revision 17352) @@ -1362,7 +1362,7 @@ },{ columnWidth : .25, layout : 'form', - hidden : !sstsConfig.enableIsInvoice, +// hidden : !sstsConfig.enableIsInvoice, items:[{ xtype : 'combo', fieldLabel : '是否发货', @@ -1555,6 +1555,20 @@ anchor : '100%' }] },{ + columnWidth : .25, + layout : 'form', + labelWidth : fontSize == 12 ? 90 : 100, + labelAlign:"right", + items:[{ + xtype : 'numberfield', + fieldLabel : "标识牌废弃次数", + allowBlank : false, + allowNegative:false, + name : 'autoDiscardCount', + id : 'autoDiscardCount', + anchor : '100%' + }] + },{ columnWidth : .25, layout : 'form', labelWidth : fontSize == 12 ? 90 : 120, Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java =================================================================== diff -u -r17273 -r17352 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java (.../TousseDefinition.java) (revision 17273) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java (.../TousseDefinition.java) (revision 17352) @@ -296,7 +296,10 @@ * 是否为:外来器械包当普通器械包 */ private String isForeignTousse; - + /** + * 自动废弃标识牌的次数,为0时表示不自动废弃,大于0时,标识牌实例使用次数达到autoDiscardCount时自动废弃标识牌实例 + */ + private Integer autoDiscardCount = 0; @Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId() { @@ -1239,6 +1242,14 @@ this.isForeignTousse = isForeignTousse; } + public Integer getAutoDiscardCount() { + return autoDiscardCount; + } + + public void setAutoDiscardCount(Integer autoDiscardCount) { + this.autoDiscardCount = autoDiscardCount; + } + public Double getDiscountPrice() { return discountPrice; }