Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/service/ForeignProxyDisinfectionManagerImpl.java =================================================================== diff -u -r15568 -r15886 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/service/ForeignProxyDisinfectionManagerImpl.java (.../ForeignProxyDisinfectionManagerImpl.java) (revision 15568) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/service/ForeignProxyDisinfectionManagerImpl.java (.../ForeignProxyDisinfectionManagerImpl.java) (revision 15886) @@ -232,7 +232,7 @@ String tousseDefinitionName = CssdUtils .filterDisinfectGoodsName(tousseName); fixedBarcode = tousseInstanceManager - .getTousseDefinitionFixedBarcode(tousseDefinitionName); + .getTousseDefinitionFixedBarcode(td.getAncestorID()); } if (td.isForeignTousse() || td.isSplit()) { Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r15798 -r15886 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 15798) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 15886) @@ -1757,10 +1757,11 @@ } /** * 获取器械包定义固定条码 - * @param tousseName + * @param tousseName 器械包定义名称 * @return */ @Override + @Deprecated public String getTousseDefinitionFixedBarcode(String tousseName) { if (StringUtils.isNotBlank(tousseName)) { String sql = "where po.tousseName = '" @@ -1790,6 +1791,40 @@ } /** + * 获取器械包定义固定条码 + * @param tousseDefinitionId 器械包定义id + * @return + */ + @Override + public String getTousseDefinitionFixedBarcode(Long tousseDefinitionId) { + if (DatabaseUtil.isPoIdValid(tousseDefinitionId)) { + String sql = "where po.tousseDefinition.id = '" + + tousseDefinitionId + + "' and po.unTraceableTousse = 1 and po.tousseFixedBarcode = 1 order by id asc"; + TousseInstance instance = (TousseInstance) objectDao.getBySql( + TousseInstance.class.getSimpleName(), sql); + if(instance == null){ + TousseDefinition td = (TousseDefinition)objectDao.getByProperty(TousseDefinition.class.getSimpleName(), "id", tousseDefinitionId); + if(td != null){ + //否则创建固定条码器械包实例,并返回该固定器械包条码 + instance = new TousseInstance(); + instance.setTousseName(td.getName()); + instance.setTousseDefinition(td); + String barcodeStr = serialNumManager + .getSerialNumberStr(SerialNum.TYPE_BARCODE); + instance.setBarcode(barcodeStr); + instance.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + instance.setUnTraceableTousse(true); + instance.setTousseFixedBarcode(true); + objectDao.saveOrUpdate(instance); + } + } + return instance == null ? null : instance.getBarcode(); + } + return null; + } + + /** * 根据首尾器械包条码或虚拟篮筐别名查询相应的器械包实例(在审核打包、灭菌管理、发货计划等模块都可能会调用此方法) * 参数约束条件及返回值释义 * 1.basketOrInstanceNotFound 篮筐或器械包实例未找到 Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java =================================================================== diff -u -r15717 -r15886 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java (.../PackingAction.java) (revision 15717) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java (.../PackingAction.java) (revision 15886) @@ -469,7 +469,7 @@ if (!isTraceable) { String tName = td.getName(); fixedBarcode = tousseInstanceManager - .getTousseDefinitionFixedBarcode(tName); + .getTousseDefinitionFixedBarcode(td.getId()); } retObj.put("success", true); retObj.put("message", "保存成功"); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java =================================================================== diff -u -r15573 -r15886 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 15573) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 15886) @@ -264,7 +264,7 @@ TousseDefinition td = tousseDefinitionManager .getTousseDefinitionById(td_id); if (td != null) { - barcode = tousseInstanceManager.getTousseDefinitionFixedBarcode(td.getName()); + barcode = tousseInstanceManager.getTousseDefinitionFixedBarcode(td.getId()); } } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r15859 -r15886 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 15859) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 15886) @@ -498,10 +498,16 @@ int workloadAmount = getWorkloadAmount(td); td.setTousseAmount(workloadAmount); + + if(ancestorID != null){ + td.setAncestorID(ancestorID); + } + saveOrUpdate(td); + //改为不管器械是否追溯,都创建一个固定条码的实例,由不追溯改为追溯时也不删除此固定条码的器械包实例 // if(TousseDefinition.STR_NO.equals(td.getIsTraceable())){ if(td.getForDisplay()){ - String oldBarcode = tousseInstanceManager.getTousseDefinitionFixedBarcode(td.getName()); + String oldBarcode = tousseInstanceManager.getTousseDefinitionFixedBarcode(td.getId()); if(StringUtils.isBlank(oldBarcode)){ TousseInstance tousseInstance = new TousseInstance(); tousseInstance.setTousseName(td.getName()); @@ -517,10 +523,6 @@ } // } - if(ancestorID != null){ - td.setAncestorID(ancestorID); - } - saveOrUpdate(td); if(!save){ //如果修改前的名称与修改后的名称不一致,则修改器械包定义的器械包名称为相应修改其它相关表的器械包名称 if(td.getOrginalName() != null && !td.getOrginalName().equals(td.getName())){ Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r15717 -r15886 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 15717) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 15886) @@ -676,7 +676,7 @@ if (!isTraceable) { //String tousseDefinitionName = CssdUtils.filterDisinfectGoodsName(tousseName); String tousseDefinitionName = tousseName; - fixedBarcode = tousseInstanceManager.getTousseDefinitionFixedBarcode(tousseDefinitionName); + fixedBarcode = tousseInstanceManager.getTousseDefinitionFixedBarcode(td.getAncestorID()); } if (td.isForeignTousse() || td.isSplit()) { @@ -2089,8 +2089,17 @@ String bigPackage = td.getIsBigPackage(); String fixedBarcode = ""; if (!isTraceable) { - String tousseDefinitionName = CssdUtils.filterDisinfectGoodsName(tousseName); - fixedBarcode = tousseInstanceManager.getTousseDefinitionFixedBarcode(tousseDefinitionName); + Long ancestorId = td.getAncestorID(); + if(DatabaseUtil.isPoIdValid(ancestorId)){ + fixedBarcode = tousseInstanceManager.getTousseDefinitionFixedBarcode(ancestorId); + if(StringUtils.isBlank(fixedBarcode)){ + String tousseDefinitionName = CssdUtils.filterDisinfectGoodsName(tousseName); + fixedBarcode = tousseInstanceManager.getTousseDefinitionFixedBarcode(tousseDefinitionName); + } + }else{ + String tousseDefinitionName = CssdUtils.filterDisinfectGoodsName(tousseName); + fixedBarcode = tousseInstanceManager.getTousseDefinitionFixedBarcode(tousseDefinitionName); + } } JSONObject toolAndImplantAmount = tousseDefinitionManager.getToolAndImplantAmount(td); @@ -3442,7 +3451,7 @@ String fixedBarcode = ""; if (!isTraceable) { fixedBarcode = tousseInstanceManager - .getTousseDefinitionFixedBarcode(td.getName()); + .getTousseDefinitionFixedBarcode(td.getAncestorID()); } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java =================================================================== diff -u -r15798 -r15886 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 15798) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 15886) @@ -164,8 +164,21 @@ public List getByIDs_ForUpdate(String ids); + /** + * 获取器械包定义固定条码(该方法已废弃,不再使用) + * @param tousseName 器械包名称 + * @return + */ + @Deprecated public String getTousseDefinitionFixedBarcode(String tousseName); + /** + * 获取器械包定义固定条码 + * @param tousseDefinitionId 器械包定义id + * @return + */ + public String getTousseDefinitionFixedBarcode(Long tousseDefinitionId); + /** * 签收发货单中未签收的所有物品,因为签收发货单已经进行过参数校验,所以此方法不做参数校验,由调用者做参数校验 * @param ids 发货单id * @param signer 签收人