Index: ssts-web/src/test/java/test/forgon/disinfectsystem/secondsupplyroom/service/TestSecondSupplyRoom.java =================================================================== diff -u -r17427 -r17431 --- ssts-web/src/test/java/test/forgon/disinfectsystem/secondsupplyroom/service/TestSecondSupplyRoom.java (.../TestSecondSupplyRoom.java) (revision 17427) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/secondsupplyroom/service/TestSecondSupplyRoom.java (.../TestSecondSupplyRoom.java) (revision 17431) @@ -24,6 +24,7 @@ import com.forgon.Constants; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.model.BarcodeDevice; +import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; @@ -150,7 +151,12 @@ sterilizationRecord.getStatus()); tousseInstance1 = tousseInstanceManager .getTousseInstanceById(tousseInstance1.getId().toString()); - assertEquals(tousseInstance1.getStatus(), TousseInstance.STATUS_SHIPPED); + //如果config.js配置需要签收才能录使用记录时,则该包自动发货后状态变为已签收(仅针对二级供应室自动发货的情况做如此处理) + if("false".equalsIgnoreCase(CssdUtils.getSystemSetConfigByName("notSignedItemsCanRegistUseRecord"))){ + assertEquals(tousseInstance1.getStatus(), TousseInstance.STATUS_SIGNED); + }else{ + assertEquals(tousseInstance1.getStatus(), TousseInstance.STATUS_SHIPPED); + } UseRecord useRecord = new UseRecord(); useRecord.setDepart(tousseInstance1.getLocationForDisplay()); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseInstance.java =================================================================== diff -u -r17411 -r17431 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseInstance.java (.../TousseInstance.java) (revision 17411) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseInstance.java (.../TousseInstance.java) (revision 17431) @@ -982,15 +982,26 @@ public boolean isDisinfected(){ return StringUtils.equals(STATUS_DISINFECTED, status); } + + /** + * 是否为已发货(只有当状态为已发货才返回true,其它情况都返回false) + * @return + */ @Transient - public boolean isShippedStatus() { + public boolean isShipped() { if (StringUtils.equals(STATUS_SHIPPED, status)) { return true; } return false; } + + /** + * 判断包实例是否发过货 + * 只要状态为已发货或invoice_id不为空就返回true + * @return + */ @Transient - public boolean isShipped() { + public boolean hasShipped() { if (StringUtils.equals(STATUS_SHIPPED, status)) { return true; } @@ -1122,7 +1133,7 @@ * @return */ public boolean canUse(){ - return isShippedStatus() || isSigned(); + return isShipped() || isSigned(); } // 校验关联信息是否正确,使用记录 @@ -1145,7 +1156,7 @@ @Transient public void validateStatusForAddUseRecord() { - if (!isShippedStatus() && !isSigned()) { + if (!isShipped() && !isSigned()) { throw new RuntimeException(String.format( "器械包%s[%s]必须为已发货已签收才能添加使用记录,当前状态为[%s]", getShowTousseName(), getBarcode(), status)); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r17400 -r17431 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 17400) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 17431) @@ -783,7 +783,7 @@ Set tousseInstances = new HashSet(); for(TousseInstance instance :instances){ if(instance.isDiscarded() - || instance.isShippedStatus() + || instance.isShipped() || instance.isUsed()){ continue; } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r17341 -r17431 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 17341) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 17431) @@ -1625,7 +1625,7 @@ List list = foreignProxyDisinfection.getTousseInstanceList(objectDao); if(list != null){ for (TousseInstance tousseInstance : list) { - if(tousseInstance.isShipped() || tousseInstance.isDiscarded()){ + if(tousseInstance.hasShipped() || tousseInstance.isDiscarded()){ }else{ throw new RuntimeException(String.format("%s[%s]状态为%s,不能终止外部代理灭菌申请单!", tousseInstance.getTousseName(),tousseInstance.getBarcode(),tousseInstance.getStatus())); Index: ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java =================================================================== diff -u -r17328 -r17431 --- ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java (.../ReturnGoodsRecordManagerImpl.java) (revision 17328) +++ ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java (.../ReturnGoodsRecordManagerImpl.java) (revision 17431) @@ -854,7 +854,7 @@ "器械包 %s[%s]的包定义已被删除,不能退货!:",tousseInstance.getTousseName(), tousseInstance.getBarcode())); } - if (tousseInstance.isShippedStatus() || tousseInstance.isSigned() + if (tousseInstance.isShipped() || tousseInstance.isSigned() || TousseInstance.STATUS_STERILED .equals(tousseInstance.getStatus())) { if (newItem.isRepacking()) { Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r17342 -r17431 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 17342) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 17431) @@ -479,7 +479,7 @@ + "' and po.depart = '" + depart + "'"; if (StringUtils.isNotBlank(type)) { hql += " and po.type = '" + type + "'"; - hql += " and " + hql += " and po.deliverStatus is not null and " //有not in等反向逻辑时,需要增加对值为null的情况处理 + SqlBuilder.build_IN_Statement( "po.deliverStatus", SqlBuilder.NOT_IN, InvoicePlan.DELIVERSTATUS_DELIVERED, @@ -3594,8 +3594,10 @@ if (remark != null && StringUtils.isNotBlank(remark)) { recyclingApplication.setRemark(remark); } - setApplicationStatus(recyclingApplication, newTousseNameAndAmountMap); + //必须先设置申请项,再计算单的状态 createApplicationItems(recyclingApplication, newTousseNameAndAmountMap); + //设置申请单状态这一句一定要放在设置申请项之后 + setApplicationStatus(recyclingApplication, newTousseNameAndAmountMap); setInstanceCodesToApplication(tousseInstanceMap, recyclingApplication); // 备注里面增加普通器械包的数量 RecyclingApplicationUtils.appendTousseAmountRemark(recyclingApplication); @@ -4410,8 +4412,17 @@ query.setParameter("departName1", "%" + departName + ";%"); query.setParameter("departName2", "%;" + departName + "%"); - Object[] result = (Object[])query.uniqueResult(); - + Object[] result = null; + try{ + result = (Object[])query.uniqueResult(); + }catch(Exception e){ + logger.error("departName=" + departName); + e.printStackTrace(); + List list = query.list(); + if(CollectionUtils.isNotEmpty(list)){ + result = (Object[])list.get(0); + } + } return result; } Index: ssts-web/src/main/java/com/forgon/disinfectsystem/recall/service/RecallRecordManagerImpl.java =================================================================== diff -u -r17430 -r17431 --- ssts-web/src/main/java/com/forgon/disinfectsystem/recall/service/RecallRecordManagerImpl.java (.../RecallRecordManagerImpl.java) (revision 17430) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/recall/service/RecallRecordManagerImpl.java (.../RecallRecordManagerImpl.java) (revision 17431) @@ -589,7 +589,7 @@ TousseInstance instance = tousseInstanceManager .getTousseInstanceById(id); //非聚合包实例,只对状态为已灭菌、已发货和已签收的包变成待召回处理 - if(instance.isSteriled() || instance.isShippedStatus() || instance.isSigned()){ + if(instance.isSteriled() || instance.isShipped() || instance.isSigned()){ instance.setStatus(TousseInstance.STATUS_WAIT_FOR_RECALL); tousseInstanceManager.saveOrUpdate(instance); tousseInstances.add(instance); Index: ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/action/ReturnGoodsRecordAction.java =================================================================== diff -u -r17328 -r17431 --- ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/action/ReturnGoodsRecordAction.java (.../ReturnGoodsRecordAction.java) (revision 17328) +++ ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/action/ReturnGoodsRecordAction.java (.../ReturnGoodsRecordAction.java) (revision 17431) @@ -306,7 +306,7 @@ throw new RuntimeException("["+ tousseInstance.getTousseDefinition() .getName() + "]已退货!"); } - if (!tousseInstance.isShippedStatus() && !tousseInstance.isSigned()) { + if (!tousseInstance.isShipped() && !tousseInstance.isSigned()) { // 验证是否已发货 throw new RuntimeException(String.format("%s为 %s状态,不能退货!", tousseInstance.getTousseName(),tousseInstance.getStatus())); } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java =================================================================== diff -u -r17025 -r17431 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java (.../ProxyDisinfectionManagerImpl.java) (revision 17025) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java (.../ProxyDisinfectionManagerImpl.java) (revision 17431) @@ -569,7 +569,7 @@ for(TousseInstance ti : allTousses){ if(CollectionUtils.isNotEmpty(applyWareHouseIds) && applyWareHouseIds.contains(ti.getWareHouseId())){ //在申请科室,此时只能是已发货状态或者是已签收状态才能修改 - if(!ti.isShippedStatus() && !ti.isSigned()){ + if(!ti.isShipped() && !ti.isSigned()){ throw new RuntimeException("在申请科室的器械包,只有已发货或者是已签收状态的器械包才能修改为二次发货," + ti.getTousseName() + "的状态为" + ti.getStatus()); } if(ti.getTousseDefinition().isDisinfection()){