Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r30278 -r30307 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 30278) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 30307) @@ -2291,6 +2291,14 @@ if(CollectionUtils.isEmpty(canDelId)){ return null; } + //聚合包子包 + String hql = "select po from TousseInstance po where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.comboTousseInstanceId", canDelId); + List comboTiList = objectDao.findByHql(hql); + if(CollectionUtils.isNotEmpty(comboTiList)){ + for (TousseInstance tousseInstance : comboTiList) { + canDelId.add(tousseInstance.getId()); + } + } //包实例相关灭菌信息置空 objectDao.executeUpdate(getReturnSql(canDelId)); //篮筐状态回滚 @@ -5350,6 +5358,21 @@ /*String findTousseInsSql = "select ti.id,ti.type from TousseInstance ti join barcodeDevice bd on bd.id = ti.id where bd.barcode " +" in (" + StringUtils.join(tousseInstanceBarcodesInclude.toArray() , ",") + ")" + "and status = '已审核'";*/ + //新增器械包如果是聚合包,就需要把聚合包的子包也灭菌 + if(CollectionUtils.isNotEmpty(tiList)){ + List comboTousseIdList = new ArrayList(); + for (TousseInstance tousseInstance : tiList) { + if(tousseInstance.isComboTousse()){ + comboTousseIdList.add(tousseInstance.getId()); + } + } + if(CollectionUtils.isNotEmpty(comboTousseIdList)){ + List comboTousseList = objectDao.getCollection(TousseInstance.class.getSimpleName(), "comboTousseInstanceId", comboTousseIdList); + if(CollectionUtils.isNotEmpty(comboTousseList)){ + tiList.addAll(comboTousseList); + } + } + } String insertSql = "insert into sterilization_tousseInstance (sterilizationRecord_id,tousseInstance_id) values (%s,%s)"; //ResultSet rs = null; try { @@ -5374,7 +5397,10 @@ tousseInstanceManager.setTousseSterilingMode(ti , sterilingTypeToSterilingModeMap); ti.setSterilingType(sr.getSterilizationType()); objectDao.saveOrUpdate(ti); - objectDao.excuteSQL(String.format(insertSql, sr.getId(),ti.getId()));//中间表插入数据 + //聚合包子包不直接和灭菌记录关联,只有聚合包和灭菌记录关联 + if(!DatabaseUtil.isPoIdValid(ti.getComboTousseInstanceId())){ + objectDao.excuteSQL(String.format(insertSql, sr.getId(),ti.getId()));//中间表插入数据 + } if(defaultWareHouse != null){ goodsStockManager.addToList(inStockTousseList, ti, defaultWareHouse); tousseInstanceManager.setToWarehouse(ti, defaultWareHouse); @@ -5406,6 +5432,9 @@ continue;//跳过不删除的器械包 } TousseInstance ti = entry.getKey(); + if(DatabaseUtil.isPoIdValid(ti.getComboTousseInstanceId())){ + continue; + } if(TousseInstance.STATUS_SHIPPED.equals(ti.getStatus()) || TousseInstance.STATUS_SIGNED.equals(ti.getStatus()) || TousseInstance.STATUS_USED.equals(ti.getStatus()) @@ -5423,8 +5452,8 @@ ti.setSterileFrequency(null); ti.setSterilingType(null); try { - objectDao.saveOrUpdate(ti); - objectDao.excuteSQL(String.format(deleteSql, ti.getId()));//断掉灭菌记录和包实例中间表的关系 + objectDao.saveOrUpdate(ti); + objectDao.excuteSQL(String.format(deleteSql, ti.getId()));//断掉灭菌记录和包实例中间表的关系 } catch (Exception e) { e.printStackTrace(); result.put(JSONUtil.JSON_KEY_SUCCESS, false); @@ -5469,6 +5498,20 @@ if(CollectionUtils.isNotEmpty(newReviewedBasketList)){ for (ReviewedBasket rb : newReviewedBasketList) { List tiList = objectDao.findByProperty(TousseInstance.class.getSimpleName(), "reviewBasket_id", rb.getId()+""); + if(CollectionUtils.isNotEmpty(tiList)){ + List comboTousseIdList = new ArrayList(); + for (TousseInstance tousseInstance : tiList) { + if(tousseInstance.isComboTousse()){ + comboTousseIdList.add(tousseInstance.getId()); + } + } + if(CollectionUtils.isNotEmpty(comboTousseIdList)){ + List comboTousseList = objectDao.findByIds(TousseInstance.class.getSimpleName(), comboTousseIdList); + if(CollectionUtils.isNotEmpty(comboTousseList)){ + tiList.addAll(comboTousseList); + } + } + } //循环每一个篮筐下的包 for (TousseInstance ti : tiList) { if(TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(ti.getType())){ @@ -5539,6 +5582,20 @@ if(delReviewedBasket.contains(rb)){ continue; } + if(CollectionUtils.isNotEmpty(tis)){ + List comboTousseIdList = new ArrayList(); + for (TousseInstance tousseInstance : tis) { + if(tousseInstance.isComboTousse()){ + comboTousseIdList.add(tousseInstance.getId()); + } + } + if(CollectionUtils.isNotEmpty(comboTousseIdList)){ + List comboTousseList = objectDao.findByIds(TousseInstance.class.getSimpleName(), comboTousseIdList); + if(CollectionUtils.isNotEmpty(comboTousseList)){ + tis.addAll(comboTousseList); + } + } + } for (TousseInstance ti : tis) { ti.setSterileEndTime(null); ti.setStatus(TousseInstance.STATUS_REVIEWED);