Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r40700 -r40702 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 40700) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 40702) @@ -6716,7 +6716,7 @@ bindImageVideoWithTousseInstance(packingTaskIdToTousseInstanceIdMap); //生成器械包集合码 createSetCode(packingPara, tousseNameAmountMap, toussesArray, json); - JSONObject autoResult = autobasketInsertion(tousseInstanceList, containerBindingInfo); + JSONObject autoResult = autobasketInsertion(tousseInstanceList, containerBindingInfo, null, false); if(autoResult != null){ json.put("containerStatusMsgs", autoResult.optString("containerStatusMsgs")); json.put("successIntoBasket", autoResult.optString("successIntoBasket")); @@ -6764,38 +6764,151 @@ //if(true){throw new RuntimeException("装配速度测试 ");} return json.toString(); } + @Override + public Map handleComTousseInstanceAutobasketInsertionData(List comboTousseInstances, Map comboToStContainer){ + Iterator it = comboTousseInstances.iterator(); + Set allBasketIds = new HashSet(); + Map> childInstancesMap = new HashMap>(); + while(it.hasNext()){ + TousseInstance comboTousseInstance = it.next(); + List childInstances = tousseInstanceManager.getChildTousseInstance(comboTousseInstance.getId()); + if (CollectionUtils.isEmpty(childInstances)) { + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_PACKING, Log.TYPE_UPDATE + , comboTousseInstance.getTousseName() + "装配后自动审核入筐查询不到聚合包内的包 不审核入筐"); + it.remove(); + continue; + } + // 找出子包实例的所有篮筐ID + Set basketIds = findCommonClassifyBasketIds(childInstances); + if (CollectionUtils.isEmpty(basketIds)) { + it.remove(); + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_PACKING, Log.TYPE_UPDATE + , comboTousseInstance.getTousseName() + "装配后自动审核入筐有子包没有清洗篮筐 不审核入筐"); + continue; + } + allBasketIds.addAll(basketIds); + childInstancesMap.put(comboTousseInstance.getId(), childInstances); + } + if(CollectionUtils.isEmpty(allBasketIds)){ + return null; + } + Map containerBindingInfo = getContainerBindingInfo(allBasketIds); + if(MapUtils.isEmpty(containerBindingInfo)){ + return null; + } + Iterator it2 = comboTousseInstances.iterator(); + while(it2.hasNext()){ + TousseInstance comboTousseInstance = it2.next(); + List childInstances = childInstancesMap.get(comboTousseInstance.getId()); + Set basketIds = findCommonClassifyBasketIds(childInstances); + Set stCcontainerIds = new HashSet(); + for (Long basketId : basketIds) { + Long stCcontainerId = containerBindingInfo.get(basketId); + if(!DatabaseUtil.isPoIdValid(stCcontainerId)){ + it2.remove(); + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_PACKING, Log.TYPE_UPDATE + , comboTousseInstance.getTousseName() + "装配后自动审核入筐找不到绑定的灭菌篮筐 不审核入筐"); + stCcontainerIds.clear(); + break; + } + stCcontainerIds.add(stCcontainerId); + } + if(stCcontainerIds.size() > 1){ + it2.remove(); + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_PACKING, Log.TYPE_UPDATE + , comboTousseInstance.getTousseName() + "装配后自动审核入筐子包绑定了不同的灭菌篮筐 不审核入筐"); + continue; + }else if(stCcontainerIds.size() == 1){ + for (Long stCcontainerId : stCcontainerIds) { + comboToStContainer.put(comboTousseInstance.getId(), stCcontainerId); + } + } + } + return containerBindingInfo; + } + /** + * 找出子包实例的所有篮筐ID + * 如果子包存在未入清洗筐的包 那么返回空Set + * @param instances + * @return + */ + private Set findCommonClassifyBasketIds(List instances) { + Set basketIds = new HashSet(); + for (TousseInstance instance : instances) { + if (!DatabaseUtil.isPoIdValid(instance.getClassifyBasket_id())) { + basketIds.clear(); + break;//有子包没有清洗篮筐 也不给审核入筐 + } + basketIds.add(instance.getClassifyBasket_id()); + } + return basketIds; + } + /** + * 按灭菌容器分组包实例 + * 一个一个灭菌容器进行处理 + * @param tousseInstances + * @param groups 按灭菌篮筐分组消息 + * @param cntainerBindingInfo 容器绑定关系 + * @param packageTypes 包装类型 + * @param comboToStContainer 聚合包大包要装进灭菌容器的信息 + */ + private void groupTousseInstances(List tousseInstances, Map> groups + , Map cntainerBindingInfo, Set packageTypes, Map comboToStContainer){ + for (TousseInstance tousseInstance : tousseInstances) { + if(DatabaseUtil.isPoIdValid(tousseInstance.getComboTousseInstanceId())){ + continue;//聚合包内的小包需另外处理 + } + TousseDefinition td = tousseInstance.getTousseDefinition(); + if(!TousseDefinition.PACKAGE_TYPE_COMBO.equals(td.getTousseType())){ + if(tousseInstance.getClassifyBasket_id() == null || !td.cleanedEntirely()){ + continue; + } + } + Long stContainerId = null; + if(TousseDefinition.PACKAGE_TYPE_COMBO.equals(td.getTousseType())){ + stContainerId = comboToStContainer.get(tousseInstance.getId()); + }else{ + stContainerId = cntainerBindingInfo.get(tousseInstance.getClassifyBasket_id()); + } + if(!DatabaseUtil.isPoIdValid(stContainerId)){ + continue; + } + if(StringUtils.isNotBlank(tousseInstance.getPackageType())){ + packageTypes.add(tousseInstance.getPackageType()); + } + List tis = null; + if(groups.containsKey(stContainerId)){ + tis = groups.get(stContainerId); + }else{ + tis = new ArrayList<>(); + groups.put(stContainerId, tis); + } + tis.add(tousseInstance); + } + } @Override - public JSONObject autobasketInsertion(List tousseInstances, Map cntainerBindingInfo) { - if(CollectionUtils.isEmpty(tousseInstances) || MapUtils.isEmpty(cntainerBindingInfo)){ + public JSONObject autobasketInsertion(List tousseInstances, Map cntainerBindingInfo, Map comboToStContainer, Boolean isCombo) { + //先按篮筐分组 + if(CollectionUtils.isEmpty(tousseInstances)){ return null; } + if(isCombo != null && isCombo){ + if(MapUtils.isEmpty(comboToStContainer)){ + return null; + } + }else{ + if(MapUtils.isEmpty(cntainerBindingInfo)){ + return null; + } + } + Map> groups = new HashMap>(); + Set packageTypes = new HashSet(); List containerStatusMsgs = new ArrayList(); JSONObject obj = new JSONObject(); try{ - //先按篮筐分组 - Map> groups = new HashMap<>(); - Set packageTypes = new HashSet(); - for (TousseInstance tousseInstance : tousseInstances) { - TousseDefinition td = tousseInstance.getTousseDefinition(); - if(tousseInstance.getClassifyBasket_id() != null && td.cleanedEntirely()) { - Long stContainerId = cntainerBindingInfo.get(tousseInstance.getClassifyBasket_id()); - if(!DatabaseUtil.isPoIdValid(stContainerId)){ - continue; - } - if(StringUtils.isNotBlank(tousseInstance.getPackageType())){ - packageTypes.add(tousseInstance.getPackageType()); - } - List tis = null; - if(groups.containsKey(stContainerId)){ - tis = groups.get(stContainerId); - }else{ - tis = new ArrayList<>(); - groups.put(stContainerId, tis); - } - tis.add(tousseInstance); - } - } + groupTousseInstances(tousseInstances, groups, cntainerBindingInfo, packageTypes, comboToStContainer); + List statusLogMsgs = new ArrayList(); boolean haveSuccessMsgs = false; if(MapUtils.isNotEmpty(groups)){ @@ -10332,6 +10445,8 @@ //待发送刷新消息的任务组集合 List waitSendRefreshMessageTaskGroupList = new ArrayList(); String departCoding = JSONUtil.optString(paramsObj, "departCoding", ""); + //本次装配的聚合包集合 会在handleComTousseInstanceAutobasketInsertionData中移除一些不能自动审核入筐的实例 后续要修改这个集合的信息 需注意着一点 + List comboTousseInstances = new ArrayList(); for (int i = 0; i < comboTousseJsonArray.size(); i++) { JSONObject comboTousseJson = comboTousseJsonArray.optJSONObject(i); @@ -10371,14 +10486,24 @@ comboTousseInstance.setMaterialAmount(tousseDefinitionManager.queryMaterialInstanceCountOfComboTousseInstance(comboTousseInstance.getId())); comboTousseInstance.setMaterialSplitAmount(tousseDefinitionManager.queryMaterialInstanceSplitAmountOfComboTousseInstance(comboTousseInstance.getId())); objectDao.saveOrUpdate(comboTousseInstance); + comboTousseInstances.add(comboTousseInstance); //页面返回值处理 JSONObject result = buildReturnResult(comboTousseInstance,systemConfig,comboTousseJson); jsonArray.add(result); } //日志记录 appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_PACKING, Log.TYPE_ADD, params); - + JSONObject printJson = new JSONObject(); + if(CssdUtils.getSystemSetConfigByNameBool("enbaleLoadAutomaticallyIntoBasketsAfterAssembly", false)){ + Map comboToStContainer = new HashMap(); + Map containerBindingInfo = handleComTousseInstanceAutobasketInsertionData(comboTousseInstances, comboToStContainer); + JSONObject autoResult = autobasketInsertion(comboTousseInstances, containerBindingInfo, comboToStContainer, true); + if(autoResult != null){ + printJson.put("containerStatusMsgs", autoResult.optString("containerStatusMsgs")); + printJson.put("successIntoBasket", autoResult.optString("successIntoBasket")); + } + } String taskGroup = JSONUtil.optString(paramsObj, "taskGroup", null); //1.调用websocket消息推送(向该装配任务组推送,以便于其它客户端同时也在访问该装配任务组页面时可以收到待装配任务刷新的消息) WebSocketServer.noticeSendMessage(websocketSessionId,AcegiHelper.getCurrentOrgUnitCode(), @@ -10391,7 +10516,7 @@ }); } - JSONObject printJson = new JSONObject(); + printJson.put("success", true); printJson.put("message", "保存成功"); printJson.put("tousses", jsonArray); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerTests.java =================================================================== diff -u -r40701 -r40702 --- ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerTests.java (.../PackingManagerTests.java) (revision 40701) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerTests.java (.../PackingManagerTests.java) (revision 40702) @@ -16,6 +16,7 @@ import net.sf.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; +import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.StringUtils; import org.junit.Test; @@ -2096,7 +2097,7 @@ cb116.setContainerBarcode(rContainer116.getBarcode()); objectDao.save(cb116); ClassifyBasket cb117 = new ClassifyBasket(); - cb116.setContainerBarcode(rContainer117.getBarcode()); + cb117.setContainerBarcode(rContainer117.getBarcode()); objectDao.save(cb117); TousseDefinition td_Test开胸包 = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); @@ -2139,7 +2140,7 @@ tis.add(ti1); tis.add(ti2); tis.add(ti3); - JSONObject result = packingManager.autobasketInsertion(tis, cntainerBindingInfo); + JSONObject result = packingManager.autobasketInsertion(tis, cntainerBindingInfo, null ,false); assertNotNull(result); assertEquals("装配成功,已自动装载到灭菌篮筐中。",result.optString("successIntoBasket")); objectDao.refresh(ti1); @@ -2155,5 +2156,182 @@ ReviewedBasket reviewedBasket3 = (ReviewedBasket)objectDao.getById(ReviewedBasket.class.getSimpleName(), ti1.getReviewBasket_id()); assertEquals(sContainer01.getId(),reviewedBasket3.getContainer().getId()); } - + /** + * 测试聚合包自动审核入筐 + * 准备1个聚合包 3个子包 绑定同一个灭菌容器 + * 允许审核入筐 + */ + @Test + public void autobasketInsertion2(){ + //准备数据 + + Container sContainer01 = containerManager.getContainer("灭菌筐01"); + Container rContainer116 = containerManager.getContainer("清洗筐116"); + Container rContainer117 = containerManager.getContainer("清洗筐117"); + String cleaningContainerIds = rContainer116.getId() + ";" + rContainer117.getId(); + containerManager.saveOrUpdate(sContainer01, cleaningContainerIds); + + ClassifyBasket cb116 = new ClassifyBasket(); + cb116.setContainerBarcode(rContainer116.getBarcode()); + objectDao.save(cb116); + ClassifyBasket cb117 = new ClassifyBasket(); + cb117.setContainerBarcode(rContainer117.getBarcode()); + objectDao.save(cb117); + TousseDefinition td_Test聚合包 = tousseDefinitionManager.getTousseDefinitionByName("Test聚合包"); + TousseDefinition td_Test开胸包 = tousseDefinitionManager.getTousseDefinitionByName("Test聚合包"); + TousseDefinition td_Test缝合包 = tousseDefinitionManager.getTousseDefinitionByName("Test缝合包"); + TousseDefinition td_Test开口包 = tousseDefinitionManager.getTousseDefinitionByName("Test开口包"); + String orgUnitCoding = AcegiHelper.getLoginUser().getOrgUnitCodingFromSupplyRoomConfig(); + + TousseInstance ti0 = new TousseInstance(); + ti0.setTousseFixedBarcode(false); + ti0.setTousseDefinition(td_Test聚合包); + ti0.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + ti0.setTousseName(td_Test聚合包.getName()); + ti0.setStatus(TousseInstance.STATUS_REVIEWED); + ti0.setOrgUnitCoding(orgUnitCoding); + objectDao.saveOrUpdate(ti0); + + TousseInstance ti1 = new TousseInstance(); + ti1.setTousseFixedBarcode(false); + ti1.setTousseDefinition(td_Test开胸包); + ti1.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + ti1.setTousseName(td_Test开胸包.getName()); + ti1.setClassifyBasket_id(cb116.getId()); + ti1.setStatus(TousseInstance.STATUS_REVIEWED); + ti1.setOrgUnitCoding(orgUnitCoding); + ti1.setComboTousseInstanceId(ti0.getId()); + ti1.setComboTousseDefinitionId(td_Test聚合包.getId()); + objectDao.saveOrUpdate(ti1); + + TousseInstance ti2 = new TousseInstance(); + ti2.setTousseFixedBarcode(false); + ti2.setTousseDefinition(td_Test缝合包); + ti2.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + ti2.setTousseName(td_Test缝合包.getName()); + ti2.setClassifyBasket_id(cb116.getId()); + ti2.setStatus(TousseInstance.STATUS_REVIEWED); + ti2.setOrgUnitCoding(orgUnitCoding); + ti2.setComboTousseInstanceId(ti0.getId()); + ti2.setComboTousseDefinitionId(td_Test聚合包.getId()); + objectDao.saveOrUpdate(ti2); + + TousseInstance ti3 = new TousseInstance(); + ti3.setTousseFixedBarcode(false); + ti3.setTousseDefinition(td_Test开口包); + ti3.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + ti3.setTousseName(td_Test开口包.getName()); + ti3.setClassifyBasket_id(cb117.getId()); + ti3.setStatus(TousseInstance.STATUS_REVIEWED); + ti3.setOrgUnitCoding(orgUnitCoding); + ti3.setComboTousseInstanceId(ti0.getId()); + ti3.setComboTousseDefinitionId(td_Test聚合包.getId()); + objectDao.saveOrUpdate(ti3); + List tis = new ArrayList(); + tis.add(ti0); + Map comboToStContainer = new HashMap(); + + Map containerBindingInfo = packingManager.handleComTousseInstanceAutobasketInsertionData(tis, comboToStContainer); + assertTrue("聚合包要入筐到的灭菌篮筐信息有值", MapUtils.isNotEmpty(comboToStContainer)); + JSONObject result = packingManager.autobasketInsertion(tis, containerBindingInfo, comboToStContainer, true); + assertNotNull(result); + assertEquals("装配成功,已自动装载到灭菌篮筐中。",result.optString("successIntoBasket")); + objectDao.refresh(ti0); + objectDao.refresh(ti1); + objectDao.refresh(ti2); + objectDao.refresh(ti3); + assertNotNull("检验入筐是否成功",ti0.getReviewBasket_id()); + assertNotNull("检验入筐是否成功",ti1.getReviewBasket_id()); + assertNotNull("检验入筐是否成功",ti2.getReviewBasket_id()); + assertNotNull("检验入筐是否成功",ti3.getReviewBasket_id()); + ReviewedBasket reviewedBasket0 = (ReviewedBasket)objectDao.getById(ReviewedBasket.class.getSimpleName(), ti0.getReviewBasket_id()); + assertEquals(sContainer01.getId(),reviewedBasket0.getContainer().getId()); + ReviewedBasket reviewedBasket1 = (ReviewedBasket)objectDao.getById(ReviewedBasket.class.getSimpleName(), ti1.getReviewBasket_id()); + assertEquals(sContainer01.getId(),reviewedBasket1.getContainer().getId()); + ReviewedBasket reviewedBasket2 = (ReviewedBasket)objectDao.getById(ReviewedBasket.class.getSimpleName(), ti1.getReviewBasket_id()); + assertEquals(sContainer01.getId(),reviewedBasket2.getContainer().getId()); + ReviewedBasket reviewedBasket3 = (ReviewedBasket)objectDao.getById(ReviewedBasket.class.getSimpleName(), ti1.getReviewBasket_id()); + assertEquals(sContainer01.getId(),reviewedBasket3.getContainer().getId()); + } + /** + * 测试聚合包自动审核入筐 + * 准备1个聚合包 3个子包 但是绑定不同的个灭菌容器 + * 不审核入筐 + */ + @Test + public void autobasketInsertion3(){ + //准备数据 + + Container sContainer01 = containerManager.getContainer("灭菌筐01"); + Container sContainer02 = containerManager.getContainer("灭菌筐02"); + Container rContainer116 = containerManager.getContainer("清洗筐116"); + Container rContainer117 = containerManager.getContainer("清洗筐117"); + String cleaningContainerIds = rContainer116.getId()+""; + containerManager.saveOrUpdate(sContainer01, cleaningContainerIds); + String cleaningContainerIds2 = rContainer117.getId()+""; + containerManager.saveOrUpdate(sContainer02, cleaningContainerIds2); + ClassifyBasket cb116 = new ClassifyBasket(); + cb116.setContainerBarcode(rContainer116.getBarcode()); + objectDao.save(cb116); + + + ClassifyBasket cb117 = new ClassifyBasket(); + cb117.setContainerBarcode(rContainer117.getBarcode()); + objectDao.save(cb117); + TousseDefinition td_Test聚合包 = tousseDefinitionManager.getTousseDefinitionByName("Test聚合包"); + TousseDefinition td_Test开胸包 = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); + TousseDefinition td_Test缝合包 = tousseDefinitionManager.getTousseDefinitionByName("Test缝合包"); + TousseDefinition td_Test开口包 = tousseDefinitionManager.getTousseDefinitionByName("Test开口包"); + String orgUnitCoding = AcegiHelper.getLoginUser().getOrgUnitCodingFromSupplyRoomConfig(); + + TousseInstance ti0 = new TousseInstance(); + ti0.setTousseFixedBarcode(false); + ti0.setTousseDefinition(td_Test聚合包); + ti0.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + ti0.setTousseName(td_Test聚合包.getName()); + ti0.setStatus(TousseInstance.STATUS_REVIEWED); + ti0.setOrgUnitCoding(orgUnitCoding); + objectDao.saveOrUpdate(ti0); + + TousseInstance ti1 = new TousseInstance(); + ti1.setTousseFixedBarcode(false); + ti1.setTousseDefinition(td_Test开胸包); + ti1.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + ti1.setTousseName(td_Test开胸包.getName()); + ti1.setClassifyBasket_id(cb116.getId()); + ti1.setStatus(TousseInstance.STATUS_REVIEWED); + ti1.setOrgUnitCoding(orgUnitCoding); + ti1.setComboTousseInstanceId(ti0.getId()); + ti1.setComboTousseDefinitionId(td_Test聚合包.getId()); + objectDao.saveOrUpdate(ti1); + + TousseInstance ti2 = new TousseInstance(); + ti2.setTousseFixedBarcode(false); + ti2.setTousseDefinition(td_Test缝合包); + ti2.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + ti2.setTousseName(td_Test缝合包.getName()); + ti2.setClassifyBasket_id(cb116.getId()); + ti2.setStatus(TousseInstance.STATUS_REVIEWED); + ti2.setOrgUnitCoding(orgUnitCoding); + ti2.setComboTousseInstanceId(ti0.getId()); + ti2.setComboTousseDefinitionId(td_Test聚合包.getId()); + objectDao.saveOrUpdate(ti2); + + TousseInstance ti3 = new TousseInstance(); + ti3.setTousseFixedBarcode(false); + ti3.setTousseDefinition(td_Test开口包); + ti3.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + ti3.setTousseName(td_Test开口包.getName()); + ti3.setClassifyBasket_id(cb117.getId()); + ti3.setStatus(TousseInstance.STATUS_REVIEWED); + ti3.setOrgUnitCoding(orgUnitCoding); + ti3.setComboTousseInstanceId(ti0.getId()); + ti3.setComboTousseDefinitionId(td_Test聚合包.getId()); + objectDao.saveOrUpdate(ti3); + List tis = new ArrayList(); + tis.add(ti0); + Map comboToStContainer = new HashMap(); + packingManager.handleComTousseInstanceAutobasketInsertionData(tis, comboToStContainer); + assertTrue("指向不同的灭菌篮筐时 不入筐", MapUtils.isEmpty(comboToStContainer)); + } } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r40639 -r40702 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 40639) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 40702) @@ -3246,6 +3246,12 @@ } return null; } + @Override + public List getChildTousseInstance( + Long comboTousseInstanceId) { + String sql = String.format("where %s", SqlUtils.getLongFieldPredicate("po.comboTousseInstanceId", comboTousseInstanceId)); + return objectDao.findBySql(TousseInstance.class.getSimpleName(), sql); + } /** * 包要接收了才能进行灭菌装载GDSZYY-131 * @param tousseInstanceBarcodes Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java =================================================================== diff -u -r40700 -r40702 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 40700) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 40702) @@ -496,12 +496,22 @@ public Map getContainerBindingInfo(Set classifyBasketIDs); /** - * 自动入筐 - * @param tis - * @param cntainerBindingInfo + * 自动审核入筐 + * @param tis 包实例 + * @param cntainerBindingInfo 容器绑定信息 key ClassifyBasket_id value 灭菌容器id ContainerId + * @param comboToStContainer 聚合包要入筐到的灭菌篮筐信息 key 聚合包大包实例id value 灭菌容器id + * @param isCombo 是否聚合包 true时 tis都是聚合包大包 false时 都是非聚合包 */ - public JSONObject autobasketInsertion(List tis, Map cntainerBindingInfo); + public JSONObject autobasketInsertion(List tis, Map cntainerBindingInfo, Map comboToStContainer, Boolean isCombo); /** + * 处理 聚合包自动审核入筐的数据 + * 查询聚合包的容器绑定关系 移除一些不能自动入筐审核的聚合包 + * @param comboTousseInstances 聚合包 + * @param comboToStContainer key 聚合包实例id 要入筐到的灭菌容器id + * @return containerBindingInfo 容器绑定关系 key ClassifyBasket_id value 灭菌容器id ContainerId + */ + public Map handleComTousseInstanceAutobasketInsertionData(List comboTousseInstances, Map comboToStContainer); + /** * 获取装配任务的申请单 * @param packingTask * @return Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java =================================================================== diff -u -r40548 -r40702 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 40548) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 40702) @@ -1481,5 +1481,11 @@ * @param tiStatus 包实例状态的过滤 */ public List getTousseInstancesByForeignTousseApplicationAndTdIdOfTousseItems(Long invoicePlanId , Set tdIds , Set tiStatus); + /** + * 获取聚合包内的子包 + * @param comboTousseInstanceId 聚合包实例id + * @return + */ + public List getChildTousseInstance(Long comboTousseInstanceId); }