Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r33494 -r33495 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 33494) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 33495) @@ -1468,8 +1468,10 @@ } //按包名称和任务类型taskType分页,taskType不为1要排在最后,加急除外,加急排最前,不按装配任务条数分页,先查询本页的包名称,再去查询这些包的所有装配任务 List tousseNamesAndTaskTypes = null; + SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); + Set queryTousseTypes = getQueryTousseTypes(taskGroup, supplyRoomConfig); if(pageSize != null && pageIndex != null && pageIndex > 0 && pageSize > 0){ - tousseNamesAndTaskTypes = getTousseNamesAndTaskType(taskGroup, basketBarcode, pageIndex, pageSize); + tousseNamesAndTaskTypes = getTousseNamesAndTaskType(taskGroup, basketBarcode, pageIndex, pageSize, queryTousseTypes); } boolean allowForeignToussePartiallyPacking = CssdUtils.getSystemSetConfigByNameBool("allowForeignToussePartiallyPacking"); boolean waitPackingTaskGrid_show_foreignTousse_customSplitBasketAmount = CssdUtils.getSystemSetConfigByNameBool("waitPackingTaskGrid_show_foreignTousse_customSplitBasketAmount"); @@ -1483,7 +1485,6 @@ return null;// 未找到篮筐,异常情况 } } - SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); boolean showRecyclingPeopleColumnInPackingTasksList = CssdUtils.getSystemSetConfigByNameBool("showRecyclingPeopleColumnInPackingTasksList", false); //普通器械包、消毒物品及敷料包的装配任务查询 List taskList = findPackingTaskFromCssdHandleToussesConfig(showRecyclingPeopleColumnInPackingTasksList, taskGroup,basketBarcode,supplyRoomConfig, tousseNamesAndTaskTypes); @@ -1926,23 +1927,68 @@ * @param pageSize 每页条数 * @return */ - public List getTousseNamesAndTaskType(String taskGroup, String basketBarcode, int pageIndex, int pageSize){ - List tousseNamesAndTasks = objectDao.findByHql(String.format("select po.tousseDefinition.name,case when po.taskType="+ PackingTask.TASK_RECYCLINGRECORD +" then 1 else 0 end from %s po left join po.urgentLevelObj where 1=1 %s %s group by po.tousseDefinition.name,case when po.taskType=1 then 1 else 0 end order by max(po.urgentLevelObj.grade) desc, case when po.taskType=1 then 1 else 0 end desc, po.tousseDefinition.name desc " + public List getTousseNamesAndTaskType(String taskGroup, String basketBarcode, int pageIndex, int pageSize, Set queryTousseTypes){ + String tousseTypeAndTaskGroupSql = ""; + if(queryTousseTypes.contains(TousseDefinition.PACKAGE_TYPE_FOREIGN) && queryTousseTypes.contains(TousseDefinition.PACKAGE_TYPE_CUSTOM)){ + tousseTypeAndTaskGroupSql = " and (po.tousseDefinition.tousseType in('"+ TousseDefinition.PACKAGE_TYPE_CUSTOM+ "','"+ TousseDefinition.PACKAGE_TYPE_FOREIGN +"','"+ TousseDefinition.PACKAGE_TYPE_FOREIGN +"') or po.tousseDefinition.ancestorID in(select tousseDefinitionId from CssdHandleTousses where taskGroup='"+ taskGroup +"' ) and po.tousseDefinition.tousseType not in('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"','"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"')) "; //外来器械和自定义器械,有专门获取装配任务 + }else if(queryTousseTypes.contains(TousseDefinition.PACKAGE_TYPE_FOREIGN)){ + tousseTypeAndTaskGroupSql = " and (po.tousseDefinition.tousseType in('"+ TousseDefinition.PACKAGE_TYPE_FOREIGN +"','"+ TousseDefinition.PACKAGE_TYPE_FOREIGN +"') or po.tousseDefinition.ancestorID in(select tousseDefinitionId from CssdHandleTousses where taskGroup='"+ taskGroup +"' ) and po.tousseDefinition.tousseType not in('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"','"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"')) "; //外来器械和自定义器械,有专门获取装配任务 + }else if(queryTousseTypes.contains(TousseDefinition.PACKAGE_TYPE_CUSTOM)){ + tousseTypeAndTaskGroupSql = " and (po.tousseDefinition.tousseType in('"+ TousseDefinition.PACKAGE_TYPE_CUSTOM+ "') or po.tousseDefinition.ancestorID in(select tousseDefinitionId from CssdHandleTousses where taskGroup='"+ taskGroup +"' ) and po.tousseDefinition.tousseType not in('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"','"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"')) "; //外来器械和自定义器械,有专门获取装配任务 + }else{ + tousseTypeAndTaskGroupSql = " and (po.tousseDefinition.ancestorID in(select tousseDefinitionId from CssdHandleTousses where taskGroup='"+ taskGroup +"' ) and po.tousseDefinition.tousseType not in('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"','"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"')) "; + } + List tousseNamesAndTasks = objectDao.findByHql(String.format("select po.tousseDefinition.name,case when po.taskType="+ PackingTask.TASK_RECYCLINGRECORD +" then 1 else 0 end from %s po left join po.urgentLevelObj where " + + " po.orgUnitCoding = '" + + AcegiHelper.getLoginUser().getOrgUnitCodingFromSupplyRoomConfig() + + "' and po.tousseDefinition.ancestorID in (select id from TousseDefinition where (hidePackingTask is null or hidePackingTask<>'是') and forDisplay=1) %s %s group by po.tousseDefinition.name,case when po.taskType=1 then 1 else 0 end order by max(po.urgentLevelObj.grade) desc, case when po.taskType=1 then 1 else 0 end desc, po.tousseDefinition.name desc " , PackingTask.class.getSimpleName() ,StringUtils.isBlank(basketBarcode)?"":" and po.basketBarcode like '%" + basketBarcode + "%' " - ,StringUtils.isBlank(taskGroup)?"":" and po.tousseDefinition.ancestorID in (select id from TousseDefinition where (hidePackingTask is null or hidePackingTask<>'是') and forDisplay=1 and taskGroup='"+ taskGroup +"') ") + ,tousseTypeAndTaskGroupSql) , (pageIndex - 1) * pageSize, pageSize); return tousseNamesAndTasks; } + /** + * 获取是否查询自定义器械包 外来器械包和外来器械拆分小包 + * @param taskGroup 任务组 + * @param supplyRoomConfig + * @return + */ + private Set getQueryTousseTypes(String taskGroup, SupplyRoomConfig supplyRoomConfig){ + Set queryTousseTypes = new HashSet(); + if(supplyRoomConfig != null){ + //外来器械包默认处理科室及任务组 + JSONObject foreignTousseHandleDepartAndTaskGroupJsonobject = supplyRoomConfig.getOneForeignTousseHandleDepartAndTaskGroupByDepartCode(AcegiHelper.getCurrentOrgUnitCode()); + if(foreignTousseHandleDepartAndTaskGroupJsonobject != null && StringUtils.equals(taskGroup, foreignTousseHandleDepartAndTaskGroupJsonobject.optString("taskGroup"))){ + queryTousseTypes.add(TousseDefinition.PACKAGE_TYPE_FOREIGN); + + } + if(StringUtils.equals(taskGroup, supplyRoomConfig.getCustomTousseDefaultTaskGroup())){ + queryTousseTypes.add(TousseDefinition.PACKAGE_TYPE_CUSTOM); + } + } + return queryTousseTypes; + } @Override public int getPackingTaskTousseNameCount(String taskGroup){ + Set queryTousseTypes = getQueryTousseTypes(taskGroup, supplyRoomConfigManager.getSystemParamsObj()); + String tousseTypeAndTaskGroupSql = ""; + if(queryTousseTypes.contains(TousseDefinition.PACKAGE_TYPE_FOREIGN) && queryTousseTypes.contains(TousseDefinition.PACKAGE_TYPE_CUSTOM)){ + tousseTypeAndTaskGroupSql = " and (td.tousseType in('"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"','"+ TousseDefinition.PACKAGE_TYPE_FOREIGN +"','"+ TousseDefinition.PACKAGE_TYPE_FOREIGN +"') or td.ancestorID in(select tousseDefinitionId from CssdHandleTousses where taskGroup='"+ taskGroup +"' ) and td.tousseType not in('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"','"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"') and td.tousseType not in('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"')) "; + }else if(queryTousseTypes.contains(TousseDefinition.PACKAGE_TYPE_FOREIGN)){ + tousseTypeAndTaskGroupSql = " and (td.tousseType in('"+ TousseDefinition.PACKAGE_TYPE_FOREIGN +"','"+ TousseDefinition.PACKAGE_TYPE_FOREIGN +"') or td.ancestorID in(select tousseDefinitionId from CssdHandleTousses where taskGroup='"+ taskGroup +"' ) and td.tousseType not in('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"','"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"') and td.tousseType not in('"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"')) "; + }else if(queryTousseTypes.contains(TousseDefinition.PACKAGE_TYPE_CUSTOM)){ + tousseTypeAndTaskGroupSql = " and (td.tousseType in('"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"') or td.ancestorID in(select tousseDefinitionId from CssdHandleTousses where taskGroup='"+ taskGroup +"' ) and td.tousseType not in('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"','"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"') and td.tousseType not in('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"')) "; + }else{ + tousseTypeAndTaskGroupSql = " and (td.ancestorID in(select tousseDefinitionId from CssdHandleTousses where taskGroup='"+ taskGroup +"' ) and td.tousseType not in('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"','"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"')) "; + } String sql = "select count(distinct td.name) from PackingTask po " + " join TousseDefinition td on td.id=po.tousseDefinition_id " + " join TousseDefinition tdc on tdc.id=td.ancestorID " - + " where (tdc.hidePackingTask is null or tdc.hidePackingTask<>'是') and tdc.forDisplay=1 "; - if(StringUtils.isNotBlank(taskGroup)){ - sql += " and tdc.taskGroup='"+ taskGroup +"'"; - } + + " where po.orgUnitCoding = '" + + AcegiHelper.getLoginUser().getOrgUnitCodingFromSupplyRoomConfig() + + "' and (tdc.hidePackingTask is null or tdc.hidePackingTask<>'是') and tdc.forDisplay=1 " + + tousseTypeAndTaskGroupSql; return objectDao.countBySql(sql); } /**