Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r33915 -r33932 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 33915) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 33932) @@ -1513,22 +1513,22 @@ if(tdOfPackingTask == null || !TousseDefinition.PACKAGE_TYPE_FOREIGN.equals(tdOfPackingTask.getTousseType()) && !TousseDefinition.PACKAGE_TYPE_SPLIT.equals(tdOfPackingTask.getTousseType()) && !TousseDefinition.PACKAGE_TYPE_CUSTOM.equals(tdOfPackingTask.getTousseType())){ - taskList = findPackingTaskFromCssdHandleToussesConfig(packingTaskId, showRecyclingPeopleColumnInPackingTasksList, taskGroup,basketBarcode,supplyRoomConfig, tousseNamesAndTaskTypes); + taskList = findPackingTaskFromCssdHandleToussesConfig(packingTaskId, showRecyclingPeopleColumnInPackingTasksList, taskGroup,basketBarcode,supplyRoomConfig, tousseNamesAndTaskTypes, tousseOrDepart); } if(supplyRoomConfig != null){ //外来器械包默认处理科室及任务组 JSONObject foreignTousseHandleDepartAndTaskGroupJsonobject = supplyRoomConfig.getOneForeignTousseHandleDepartAndTaskGroupByDepartCode(AcegiHelper.getCurrentOrgUnitCode()); if(tdOfPackingTask != null && TousseDefinition.PACKAGE_TYPE_FOREIGN.equals(tdOfPackingTask.getTousseType()) || foreignTousseHandleDepartAndTaskGroupJsonobject != null && StringUtils.equals(taskGroup, foreignTousseHandleDepartAndTaskGroupJsonobject.optString("taskGroup"))){ //外来器械包的装配任务查询 - List foreignTousseTaskList = findForeignToussePackingTask(packingTaskId, showRecyclingPeopleColumnInPackingTasksList, basketBarcode, enableUrgentFunction, tousseNamesAndTaskTypes); + List foreignTousseTaskList = findForeignToussePackingTask(packingTaskId, showRecyclingPeopleColumnInPackingTasksList, basketBarcode, enableUrgentFunction, tousseNamesAndTaskTypes, tousseOrDepart); if(CollectionUtils.isNotEmpty(foreignTousseTaskList)){ taskList.addAll(foreignTousseTaskList); } } if(tdOfPackingTask != null && TousseDefinition.PACKAGE_TYPE_CUSTOM.equals(tdOfPackingTask.getTousseType()) || StringUtils.equals(taskGroup, supplyRoomConfig.getCustomTousseDefaultTaskGroup())){ //自定义器械包的装配任务查询 - List customerTousseTaskList = findCustomerToussePackingTask(packingTaskId, showRecyclingPeopleColumnInPackingTasksList, basketBarcode, tousseNamesAndTaskTypes); + List customerTousseTaskList = findCustomerToussePackingTask(packingTaskId, showRecyclingPeopleColumnInPackingTasksList, basketBarcode, tousseNamesAndTaskTypes, tousseOrDepart); if(CollectionUtils.isNotEmpty(customerTousseTaskList)){ taskList.addAll(customerTousseTaskList); } @@ -2269,7 +2269,7 @@ * @param tousseNamesAndTaskTypes 包名称和装配任务类型 * @return 同时返回PackingTask和TousseDefintion两个实体类,避免多次查询 */ - private List findPackingTaskFromCssdHandleToussesConfig(Long packingTaskId, boolean showRecyclingPeopleColumnInPackingTasksList, String taskGroup,String basketBarcode,SupplyRoomConfig config, List tousseNamesAndTaskTypes) { + private List findPackingTaskFromCssdHandleToussesConfig(Long packingTaskId, boolean showRecyclingPeopleColumnInPackingTasksList, String taskGroup,String basketBarcode,SupplyRoomConfig config, List tousseNamesAndTaskTypes, String tousseOrDepart) { String recyclingAmountConfirmSql = "1=1"; if(CssdUtils.getSystemSetConfigByNameBool("confirmRecyclingAmount", false)){ recyclingAmountConfirmSql = String.format("(po.recycleAmountNeedConfirm<>'%s' or po.recycleAmountNeedConfirm is null)",Constants.STR_YES); @@ -2346,6 +2346,31 @@ } sql += ") "; } + if(StringUtils.isNotBlank(tousseOrDepart) && !DatabaseUtil.isPoIdValid(packingTaskId)){ + // sqlServer如果字符串中有"[",进行转译 + if(tousseOrDepart.contains("[") && dbConnection.isSqlServer()){ + int index = tousseOrDepart.indexOf("["); + tousseOrDepart = tousseOrDepart.substring(0, index) + "\\" + tousseOrDepart.substring(index, tousseOrDepart.length()); + sql += " and (td.spelling like '%" + tousseOrDepart + "%' "+ " escape '\\' " +" or td.wbCode like '%" + + tousseOrDepart + "%' "+ " escape '\\' " +" or td.externalCode like '" + tousseOrDepart + + "%' "+ " escape '\\' " +" or td.name like '%" + tousseOrDepart + "%' "+ " escape '\\' "; + }else{ + sql += " and (td.spelling like '%" + tousseOrDepart + "%' or td.wbCode like '%" + + tousseOrDepart + "%' or td.externalCode like '" + tousseOrDepart + + "%' or td.name like '%" + tousseOrDepart + "%' "; + } + tousseOrDepart = StringTools.defaultString(tousseOrDepart).toUpperCase(); + Pattern pat = Pattern.compile("[\\u4E00-\\u9FA5]+"); // 匹配中文字符的正则表达式 + Matcher m = pat.matcher(tousseOrDepart); + if (tousseOrDepart.trim().length() > 0) { + if (m.find()) { + sql += " or po.departCoding in (select orgUnitCoding from OrgUnit where name like '%" + tousseOrDepart + "%')) "; + } else { + sql += " or po.departCoding in (select orgUnitCoding from OrgUnit where spelling like '%" + tousseOrDepart + + "%' or wbCode like '%" + tousseOrDepart + "%')) "; + } + } + } if(StringUtils.isNotBlank(basketBarcode)){ //验证篮筐是否清洗 Container basket = containerManager.getContainerByBarcode(basketBarcode); @@ -2384,7 +2409,7 @@ * @param tousseNamesAndTaskTypes 包名称和装配任务类型 * @return 同时返回PackingTask和TousseDefintion两个实体类,避免多次查询 */ - private List findForeignToussePackingTask(Long packingTaskId, boolean showRecyclingPeopleColumnInPackingTasksList, String basketBarcode, boolean enableUrgentFunction, List tousseNamesAndTaskTypes) { + private List findForeignToussePackingTask(Long packingTaskId, boolean showRecyclingPeopleColumnInPackingTasksList, String basketBarcode, boolean enableUrgentFunction, List tousseNamesAndTaskTypes, String tousseOrDepart) { String orgCode = AcegiHelper.getLoginUser().getOrgUnitCodingFromSupplyRoomConfig(); String recyclingAmountConfirmSql = "1=1"; @@ -2459,6 +2484,31 @@ } sql += ") "; } + if(StringUtils.isNotBlank(tousseOrDepart) && !DatabaseUtil.isPoIdValid(packingTaskId)){ + // sqlServer如果字符串中有"[",进行转译 + if(tousseOrDepart.contains("[") && dbConnection.isSqlServer()){ + int index = tousseOrDepart.indexOf("["); + tousseOrDepart = tousseOrDepart.substring(0, index) + "\\" + tousseOrDepart.substring(index, tousseOrDepart.length()); + sql += " and (td.spelling like '%" + tousseOrDepart + "%' "+ " escape '\\' " +" or td.wbCode like '%" + + tousseOrDepart + "%' "+ " escape '\\' " +" or td.externalCode like '" + tousseOrDepart + + "%' "+ " escape '\\' " +" or td.name like '%" + tousseOrDepart + "%' "+ " escape '\\' "; + }else{ + sql += " and (td.spelling like '%" + tousseOrDepart + "%' or td.wbCode like '%" + + tousseOrDepart + "%' or td.externalCode like '" + tousseOrDepart + + "%' or td.name like '%" + tousseOrDepart + "%' "; + } + tousseOrDepart = StringTools.defaultString(tousseOrDepart).toUpperCase(); + Pattern pat = Pattern.compile("[\\u4E00-\\u9FA5]+"); // 匹配中文字符的正则表达式 + Matcher m = pat.matcher(tousseOrDepart); + if (tousseOrDepart.trim().length() > 0) { + if (m.find()) { + sql += " or po.departCoding in (select orgUnitCoding from OrgUnit where name like '%" + tousseOrDepart + "%')) "; + } else { + sql += " or po.departCoding in (select orgUnitCoding from OrgUnit where spelling like '%" + tousseOrDepart + + "%' or wbCode like '%" + tousseOrDepart + "%')) "; + } + } + } return findPackingTaskBySql(sql); } @@ -2469,7 +2519,7 @@ * @param tousseNamesAndTaskTypes 包名称和装配任务类型 * @return 同时返回PackingTask和TousseDefintion两个实体类,避免多次查询 */ - private List findCustomerToussePackingTask(Long packingTaskId, boolean showRecyclingPeopleColumnInPackingTasksList, String basketBarcode, List tousseNamesAndTaskTypes) { + private List findCustomerToussePackingTask(Long packingTaskId, boolean showRecyclingPeopleColumnInPackingTasksList, String basketBarcode, List tousseNamesAndTaskTypes, String tousseOrDepart) { String orgCode = AcegiHelper.getLoginUser().getOrgUnitCodingFromSupplyRoomConfig(); String recyclingAmountConfirmSql = "1=1"; @@ -2528,6 +2578,31 @@ } sql += ") "; } + if(StringUtils.isNotBlank(tousseOrDepart) && !DatabaseUtil.isPoIdValid(packingTaskId)){ + // sqlServer如果字符串中有"[",进行转译 + if(tousseOrDepart.contains("[") && dbConnection.isSqlServer()){ + int index = tousseOrDepart.indexOf("["); + tousseOrDepart = tousseOrDepart.substring(0, index) + "\\" + tousseOrDepart.substring(index, tousseOrDepart.length()); + sql += " and (td.spelling like '%" + tousseOrDepart + "%' "+ " escape '\\' " +" or td.wbCode like '%" + + tousseOrDepart + "%' "+ " escape '\\' " +" or td.externalCode like '" + tousseOrDepart + + "%' "+ " escape '\\' " +" or td.name like '%" + tousseOrDepart + "%' "+ " escape '\\' "; + }else{ + sql += " and (td.spelling like '%" + tousseOrDepart + "%' or td.wbCode like '%" + + tousseOrDepart + "%' or td.externalCode like '" + tousseOrDepart + + "%' or td.name like '%" + tousseOrDepart + "%' "; + } + tousseOrDepart = StringTools.defaultString(tousseOrDepart).toUpperCase(); + Pattern pat = Pattern.compile("[\\u4E00-\\u9FA5]+"); // 匹配中文字符的正则表达式 + Matcher m = pat.matcher(tousseOrDepart); + if (tousseOrDepart.trim().length() > 0) { + if (m.find()) { + sql += " or po.departCoding in (select orgUnitCoding from OrgUnit where name like '%" + tousseOrDepart + "%')) "; + } else { + sql += " or po.departCoding in (select orgUnitCoding from OrgUnit where spelling like '%" + tousseOrDepart + + "%' or wbCode like '%" + tousseOrDepart + "%')) "; + } + } + } return findPackingTaskBySql(sql); }