Index: ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerForGetWaitPackingTaskJsonTests.java =================================================================== diff -u -r40732 -r40779 --- ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerForGetWaitPackingTaskJsonTests.java (.../PackingManagerForGetWaitPackingTaskJsonTests.java) (revision 40732) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerForGetWaitPackingTaskJsonTests.java (.../PackingManagerForGetWaitPackingTaskJsonTests.java) (revision 40779) @@ -4,6 +4,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; import java.util.ArrayList; import java.util.HashSet; @@ -64,6 +65,10 @@ assertNotNull("有装配任务", waitPackingTaskItemVos); assertEquals("装配任务有2个", 2, waitPackingTaskItemVos.size()); } + /** + * 按篮筐获取 + * 一共两个篮筐的装配任务 + */ @Test public void getWaitPackingTaskJsonTest2(){ initCSSDData(); @@ -138,4 +143,58 @@ assertTrue("待打包任务科室列表应包含结算科室[无结算科室汇总]: " + PackingManagerImpl.NULLSETTLEACCOUNTSDEPARTCODINGSTR, containsSettlementDept); } + /** + * 按篮筐获取 + * 一共两个篮筐的装配任务 + * 装配任务在常规组 + * 在别的组扫码 需提示任务在常规组 + */ + @Test + public void getWaitPackingTaskJsonTest4(){ + initCSSDData(); + TousseDefinition td = NewPackingTaskCommon.saveTousseDefinition(objectDao, "包1", TousseDefinition.PACKAGE_TYPE_INSIDE); + NewPackingTaskCommon.newCssdHandleTousses(objectDao, td, Constants.TASKGROUP_CHANGGUZU); + Container container清洗筐116 = containerManager.getContainer("清洗筐116"); + Container container清洗筐117 = containerManager.getContainer("清洗筐117"); + int taskType = 1; + ClassifyBasket classifyBasket清洗筐116 = NewPackingTaskCommon.newClassifyBasket(objectDao, container清洗筐116); + NewPackingTaskCommon.newPackingTask(objectDao, td, classifyBasket清洗筐116, null, taskType, container清洗筐116, Constants.ORG_UNIT_CODE_NEIKE); + + + ClassifyBasket classifyBasket清洗筐117 = NewPackingTaskCommon.newClassifyBasket(objectDao, container清洗筐117); + NewPackingTaskCommon.newPackingTask(objectDao, td, classifyBasket清洗筐117, null, taskType, container清洗筐117, Constants.ORG_UNIT_CODE_NEIKE); + String tousseOrDepart = null; + List waitPackingTaskVoGroupClassifyBaskets = new ArrayList(); + packingManager.getWaitPackingTaskTaskVoList(null, Constants.TASKGROUP_SHUKEZU, basketBarcodes, returnObj, tousseOrDepart, pageIndex, pageSize, waitPackingTaskVoGroupClassifyBaskets, true, null); + assertEquals("没有装配任务",0, waitPackingTaskVoGroupClassifyBaskets.size()); + } + /** + * 按包名获取 + * 一共一种包的装配任务 + * 装配任务在常规组 + * 在别的组扫码 需提示任务在常规组 + */ + @Test + public void getWaitPackingTaskJsonTest5(){ + initCSSDData(); + TousseDefinition td = NewPackingTaskCommon.saveTousseDefinition(objectDao, "包1", TousseDefinition.PACKAGE_TYPE_INSIDE); + NewPackingTaskCommon.newCssdHandleTousses(objectDao, td, Constants.TASKGROUP_CHANGGUZU); + Container container清洗筐116 = containerManager.getContainer("清洗筐116"); + Container container清洗筐117 = containerManager.getContainer("清洗筐117"); + int taskType = 1; + ClassifyBasket classifyBasket清洗筐116 = NewPackingTaskCommon.newClassifyBasket(objectDao, container清洗筐116); + NewPackingTaskCommon.newPackingTask(objectDao, td, classifyBasket清洗筐116, null, taskType, container清洗筐116, Constants.ORG_UNIT_CODE_NEIKE); + + + ClassifyBasket classifyBasket清洗筐117 = NewPackingTaskCommon.newClassifyBasket(objectDao, container清洗筐117); + NewPackingTaskCommon.newPackingTask(objectDao, td, classifyBasket清洗筐117, null, taskType, container清洗筐117, Constants.ORG_UNIT_CODE_NEIKE); + String tousseOrDepart = null; + List waitPackingTaskVoGroupClassifyBaskets = new ArrayList(); + List waitPackingTaskVos = packingManager.getWaitPackingTaskTaskVoList(null, Constants.TASKGROUP_SHUKEZU, basketBarcodes, returnObj, tousseOrDepart, pageIndex, pageSize, waitPackingTaskVoGroupClassifyBaskets, false, null); + assertEquals("没有装配任务",0 , waitPackingTaskVoGroupClassifyBaskets.size()); + assertEquals("没有装配任务",0 , waitPackingTaskVos.size()); + @SuppressWarnings("unused") + Set taskgroups = packingManager.getTaskGroupsOfContainer(container清洗筐116.getBarcode(), Constants.TASKGROUP_SHUKEZU); + assertTrue("篮筐有任务在"+Constants.TASKGROUP_CHANGGUZU+"中应有装配任务",taskgroups.contains(Constants.TASKGROUP_CHANGGUZU)); + } } Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java =================================================================== diff -u -r40731 -r40779 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 40731) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 40779) @@ -524,4 +524,11 @@ * @return 过滤后的列表,只包含符合条件的实例 */ public List filterAutobasketInsertionConfig(List tousseInstances); + /** + * 获取篮筐的装配任务所在的任务组 + * @param containerBarcode 篮筐条码 + * @param filterTaskGroup 过滤不算的任务组 + * @return 任务组 + */ + public Set getTaskGroupsOfContainer(String containerBarcode, String filterTaskGroup); } Index: forgon-tools/src/main/java/com/forgon/tools/hibernate/ObjectDao.java =================================================================== diff -u -r39857 -r40779 --- forgon-tools/src/main/java/com/forgon/tools/hibernate/ObjectDao.java (.../ObjectDao.java) (revision 39857) +++ forgon-tools/src/main/java/com/forgon/tools/hibernate/ObjectDao.java (.../ObjectDao.java) (revision 40779) @@ -409,6 +409,15 @@ */ public Set getStringSet(String sql, String emptyDefaultValue, boolean sort); /** + * 查询数据库一个字符串字段 装入的set返回 + * @param querySql 查询语句 + * @param emptyDefaultValue 空的默认值 + * @param sort 是否需要排序 + * @param filterBlank 是否过滤空值 + * @return + */ + public Set getStringSet(String sql, String emptyDefaultValue, boolean sort, boolean filterBlank); + /** * 查询数据库一个Long字段 装入无序的set返回 * @param querySql 查询语句 * @param emptyDefaultValue 空的默认值 Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r40777 -r40779 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 40777) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 40779) @@ -2697,6 +2697,54 @@ public List getWaitPackingTaskTaskVoList(String taskGroup, String basketBarcode, JSONObject returnObj, String tousseOrDepart, Integer pageIndex, Integer pageSize, String settleAccountsDepartCoding) { return getWaitPackingTaskTaskVoList(null, taskGroup, basketBarcode, returnObj,tousseOrDepart, pageIndex, pageSize, null, null, settleAccountsDepartCoding); } + @Override + public Set getTaskGroupsOfContainer(String containerBarcode, String filterTaskGroup) { + if (StringUtils.isBlank(containerBarcode)) { + return Collections.emptySet(); + } + + SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); + + // 获取外来器械包任务组 + String taskGroupOfForeignTousse = StringUtils.EMPTY; + JSONObject foreignTousseConfig = supplyRoomConfig.getOneForeignTousseHandleDepartAndTaskGroupByDepartCode( + AcegiHelper.getCurrentOrgUnitCode()); + if (foreignTousseConfig != null) { + taskGroupOfForeignTousse = foreignTousseConfig.optString("taskGroup", StringUtils.EMPTY); + } + + // 获取自定义器械包任务组 + String taskGroupOfCustomerTousse = supplyRoomConfig.getCustomTousseDefaultTaskGroup(); + if (StringUtils.isBlank(taskGroupOfCustomerTousse)) { + taskGroupOfCustomerTousse = StringUtils.EMPTY; + } + String sql = "select case when td.tousseType = '" + + TousseDefinition.PACKAGE_TYPE_CUSTOM + +"' then '" + + taskGroupOfCustomerTousse + +"' when td.tousseType in ('" + + TousseDefinition.PACKAGE_TYPE_FOREIGN + +"','"+ TousseDefinition.PACKAGE_TYPE_SPLIT + +"') then '" + + taskGroupOfForeignTousse +"' else cht.taskGroup end taskGroup from " + + PackingTask.class.getSimpleName() + +" po join " + + TousseDefinition.class.getSimpleName() + +" td on td.id=po.tousseDefinition_id " + + "left join " + + CssdHandleTousses.class.getSimpleName() + +" cht on cht.tousseDefinitionId=td.ancestorID where po.orgUnitCoding = '" + + AcegiHelper.getLoginUser().getOrgUnitCodingFromSupplyRoomConfig() + + "' and po.unPackAmount > 0 and po.basketBarcode like '%" + + containerBarcode + + "%' " + + " and (td.hidePackingTask is null or hidePackingTask<>'是')"; + Set taskGroups = objectDao.getStringSet(sql, StringUtils.EMPTY, false, true); + if(StringUtils.isNotBlank(filterTaskGroup) && CollectionUtils.isNotEmpty(taskGroups)){ + taskGroups.remove(filterTaskGroup); + } + return taskGroups; + } /** * 获取待装配任务分页的文件夹的名称和任务类型 任务类型返回1 和 0(此处0为非1的数) * @param orderByWashTime 是否根据清洗时间排序 目的是实现装配任务按超时顺序排序 Index: forgon-tools/src/main/java/com/forgon/tools/hibernate/ObjectDaoImpl.java =================================================================== diff -u -r39869 -r40779 --- forgon-tools/src/main/java/com/forgon/tools/hibernate/ObjectDaoImpl.java (.../ObjectDaoImpl.java) (revision 39869) +++ forgon-tools/src/main/java/com/forgon/tools/hibernate/ObjectDaoImpl.java (.../ObjectDaoImpl.java) (revision 40779) @@ -1834,6 +1834,11 @@ @Override public Set getStringSet(String sql, String emptyDefaultValue, boolean sort) { + return getStringSet(sql, emptyDefaultValue, sort, false); + } + @Override + public Set getStringSet(String sql, String emptyDefaultValue, + boolean sort, boolean filterBlank) { Set set = null; if(sort){ set = new LinkedHashSet(); @@ -1846,6 +1851,9 @@ while(rs.next()){ String value = rs.getString(1); if(StringUtils.isBlank(value)){ + if(filterBlank){ + continue; + } value = emptyDefaultValue; } set.add(value); Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java =================================================================== diff -u -r40694 -r40779 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java (.../PackingAction.java) (revision 40694) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java (.../PackingAction.java) (revision 40779) @@ -795,6 +795,26 @@ String settleAccountsDepartCoding = StrutsParamUtils.getPraramValue("settleAccountsDepartCoding", null); SqlUtils.checkInputParam(settleAccountsDepartCoding); JSONArray taskVos = packingManager.getWaitPackingTaskJson(taskGroup,basketBarcode,returnObj,pageIndex, pageSize, settleAccountsDepartCoding); + Set taskGroups = packingManager.getTaskGroupsOfContainer(basketBarcode, taskGroup); + StringBuilder otherTaskGroupMsgBuilder = new StringBuilder(); + + if (CollectionUtils.isNotEmpty(taskVos)) { + if (CollectionUtils.isNotEmpty(taskGroups)) { + otherTaskGroupMsgBuilder.append("该篮筐在"); + String joinedTaskGroups = String.join("、", taskGroups); + otherTaskGroupMsgBuilder.append(joinedTaskGroups).append("还有装配任务待处理。"); + } + } else { + if (CollectionUtils.isNotEmpty(taskGroups)) { + otherTaskGroupMsgBuilder.append("该篮筐在当前组无待装配任务,在"); + String joinedTaskGroups = String.join("、", taskGroups); + otherTaskGroupMsgBuilder.append(joinedTaskGroups).append("还有装配任务待处理。"); + } else { + otherTaskGroupMsgBuilder.append("该篮筐在所有装配任务组均没有任务"); + } + } + + retObj.put("otherTaskGroupMsg", otherTaskGroupMsgBuilder.toString()); retObj.put("data", taskVos); retObj.put("notWashedInfo", returnObj.optString("notWashedInfo")); JSONUtil.addSuccess(retObj, true);