Index: ssts-web/src/main/webapp/disinfectsystem/toussemanager/tousseinstancemanager/tousseInstanceView.js =================================================================== diff -u -r28047 -r28606 --- ssts-web/src/main/webapp/disinfectsystem/toussemanager/tousseinstancemanager/tousseInstanceView.js (.../tousseInstanceView.js) (revision 28047) +++ ssts-web/src/main/webapp/disinfectsystem/toussemanager/tousseinstancemanager/tousseInstanceView.js (.../tousseInstanceView.js) (revision 28606) @@ -1,6 +1,7 @@ var grid; var currentSelectedTousseName; //物品名称选择下拉框的当前所选中的值 var barcodes = ''; +var barcodeForExport = ''; var notWarningStatus = ['已使用','已回收','已废弃','预回收']; var singleScanLabel = '单次扫描'; var repeatScanLabel = '多次扫描'; @@ -113,6 +114,8 @@ barcodes = ''; } + barcodeForExport = barcode; + $Id('parm_s_barcodeSearch').value = barcode; //条码 //$Id('parm_s_barcodes').value = (barcodes.length == 9 ? '' : barcodes); //barcodes长度为9说明用户启用多次扫描模式,并且是第一次扫描 $Id('parm_s_barcodes').value = (barcodes); //多次扫描模式下的条码 @@ -159,6 +162,9 @@ function getQueryCondition(){ var queryCondition = {}; var barcode = $Id('barcodeSearch').value; //条码字符串 + if(!barcode){ + barcode = barcodeForExport; + } //var barcodeReg = /(\d){9}/; //if (barcode.length == 9 && barcodeReg.test(barcode)) { //条码字符串为9数字,扫描码才有意义,否则清空 if (barcode) { //条码字符串为9数字,扫描码才有意义,否则清空 @@ -182,31 +188,31 @@ queryCondition['sterilizationTransitionStart'] = $Id('sterilizationTransitionStart').value; //灭菌交接开始时间 queryCondition['sterilizationTransitionEnd'] = $Id('sterilizationTransitionEnd').value; //灭菌交接结束时间 - queryCondition['taskGroup'] = $Id('taskGroup').value; //装配任务组 + queryCondition['taskGroup'] = encodeURI($Id('taskGroup').value); //装配任务组 queryCondition['operationStart'] = $Id('operationStart').value; //装配开始时间 queryCondition['operationEnd'] = $Id('operationEnd').value; //装配结束时间 queryCondition['invoiceStart'] = $Id('invoiceStart').value; //发货开始时间 queryCondition['invoiceEnd'] = $Id('invoiceEnd').value; //发货结束时间 - queryCondition['department'] = Ext.getCmp('department').getValue(); //科室编号 - queryCondition['tousseStatus'] = $Id('tousseStatus').value; //器械包状态 - queryCondition['tousseGroupName'] = $Id('tousseGroupName').value; //器械包分组 + queryCondition['department'] = encodeURI(Ext.getCmp('department').getValue()); //科室编号 + queryCondition['tousseStatus'] = encodeURI($Id('tousseStatus').value); //器械包状态 + queryCondition['tousseGroupName'] = encodeURI($Id('tousseGroupName').value); //器械包分组 if(preciseQuery == Ext.getCmp('queryMode').getRawValue()){ //器械包名称(根据查询模式设置不同) - queryCondition['tousseName'] = Ext.getCmp('tousseName').getRawValue(); + queryCondition['tousseName'] = encodeURI(Ext.getCmp('tousseName').getRawValue()); queryCondition['tousseNameFuzzy'] = ''; }else{ - queryCondition['tousseNameFuzzy'] = Ext.getCmp('tousseName').getRawValue(); + queryCondition['tousseNameFuzzy'] = encodeURI(Ext.getCmp('tousseName').getRawValue()); queryCondition['tousseName'] = ''; } queryCondition['sterilizationStart'] = $Id('sterilizationStart').value; //灭菌开始时间 queryCondition['sterilizationEnd'] = $Id('sterilizationEnd').value; //灭菌结束时间 - queryCondition['sterilizerGroup'] = $Id('sterilizerGroup').value; //灭菌炉分组 - queryCondition['sterilizerName'] = $Id('sterilizerName').value; //灭菌炉 + queryCondition['sterilizerGroup'] = encodeURI($Id('sterilizerGroup').value); //灭菌炉分组 + queryCondition['sterilizerName'] = encodeURI($Id('sterilizerName').value); //灭菌炉 queryCondition['frequency'] = $Id('frequency').value; //炉次 - queryCondition['patientName'] = Ext.getCmp('patientName').getValue(); //病人姓名 + queryCondition['patientName'] = encodeURI(Ext.getCmp('patientName').getValue()); //病人姓名 queryCondition['hospitalNum'] = Ext.getCmp('hospitalNum').getValue(); //住院号 queryCondition['treatmentNum'] = Ext.getCmp('treatmentNum').getValue(); //诊疗号 return queryCondition; @@ -1222,7 +1228,8 @@ grid.plugins.clearFiltersNotToReload(); } - barcodes = ''; + barcodes = ''; + barcodeForExport = ''; } }] }); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java =================================================================== diff -u -r28583 -r28606 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 28583) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 28606) @@ -8,11 +8,16 @@ import java.io.OutputStream; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Calendar; import java.util.Collection; import java.util.Collections; import java.util.Comparator; +import java.util.Date; +import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; @@ -2635,6 +2640,7 @@ String sterilizationEnd = StrutsParamUtils.getPraramValue("sterilizationEnd",null); //灭菌结束日期 if (StringUtils.isNotBlank(sterilizationEnd)) { + sterilizationEnd = parseEndTime(sterilizationEnd, false); sqlBuilder.append(String.format( " AND po.sterileEndTime < '%s' ",sterilizationEnd)); } @@ -2645,10 +2651,20 @@ String sterilizerName = StrutsParamUtils.getPraramValue("sterilizerName",null); //灭菌炉 if (StringUtils.isNotBlank(sterilizerName)) { + try { + sterilizerName = URLDecoder.decode(sterilizerName, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } sqlBuilder.append(String.format(" AND po.sterilizerName = '%s'" ,sterilizerName)); }else{ String sterilizerGroup = StrutsParamUtils.getPraramValue("sterilizerGroup",null); //灭菌炉分组 if(StringUtils.isNotBlank(sterilizerGroup)){ + try { + sterilizerGroup = URLDecoder.decode(sterilizerGroup, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } List list = objectDao.findBySql(Sterilizer.class.getSimpleName(), String.format("where po.ownGroup = '%s' ", sterilizerGroup)); List sterilizers = new ArrayList(); for(Sterilizer sterilizer : list){ @@ -2665,6 +2681,7 @@ } String operationEnd = StrutsParamUtils.getPraramValue("operationEnd",null); //装配结束时间 if(StringUtils.isNotBlank(operationEnd)){ + operationEnd = parseEndTime(operationEnd, false); sqlBuilder.append(String.format(" AND po.operationTime < %s ",dateQueryAdapter.dateAdapter(ForgonDateUtils.safelyParseDate(operationEnd)))); } @@ -2674,6 +2691,7 @@ } String invoiceEnd = StrutsParamUtils.getPraramValue("invoiceEnd",null); //发货结束时间 if(StringUtils.isNotBlank(invoiceEnd)){ + invoiceEnd = parseEndTime(invoiceEnd, false); sqlBuilder.append(String.format(" AND po.invoiceSendTime < %s ",dateQueryAdapter.dateAdapter(ForgonDateUtils.safelyParseDate(invoiceEnd)))); } @@ -2684,6 +2702,7 @@ } String sterilizationTransitionEnd = StrutsParamUtils.getPraramValue("sterilizationTransitionEnd",null); //灭菌交接结束时间 if(StringUtils.isNotBlank(sterilizationTransitionEnd)){ + sterilizationTransitionEnd = parseEndTime(sterilizationTransitionEnd, false); sqlBuilder.append(String.format(" AND po.transitionTime < %s ",dateQueryAdapter.dateAdapter(ForgonDateUtils.safelyParseDate(sterilizationTransitionEnd)))); } @@ -2699,19 +2718,31 @@ String treatmentNumSql = ""; String hospitalNumSql = ""; if (StringUtils.isNotBlank(patientName)) { + try { + patientName = URLDecoder.decode(patientName, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } patientNameSql = " AND patientName = '"+patientName+"'"; } if (StringUtils.isNotBlank(treatmentNum)) { treatmentNumSql = " AND treatmentNum = '"+treatmentNum+"'"; } - if (StringUtils.isNotBlank(treatmentNum)) { - hospitalNum = " AND hospitalNum = '"+hospitalNum+"'"; + if (StringUtils.isNotBlank(hospitalNum)) { + hospitalNumSql = " AND hospitalNum = '"+hospitalNum+"'"; } if(StringUtils.isNotBlank(patientNameSql)|| StringUtils.isNotBlank(treatmentNumSql) || StringUtils.isNotBlank(hospitalNumSql)){ sqlBuilder.append(String.format(" AND po.useRecord_id in (select id from UseRecord where 1=1 %s %s %s ) " ,patientNameSql,treatmentNumSql,hospitalNumSql)); } String tousseGroupName = StrutsParamUtils.getPraramValue("tousseGroupName",null); //器械包分组 + if(StringUtils.isNotBlank(tousseGroupName)){ + try { + tousseGroupName = URLDecoder.decode(tousseGroupName, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } if (StringUtils.isNotBlank(tousseGroupName) && tousseGroupName.indexOf("全部") == -1) { //没选或者选择全部就不过滤 String[] tousseGroupNameArray = tousseGroupName.split(","); @@ -2731,15 +2762,30 @@ //通过在器械包下拉里输入但未从下拉选项选中的物品名称(采用模糊匹配) String tousseNameFuzzy = StrutsParamUtils.getPraramValue("tousseNameFuzzy",null); if (StringUtils.isNotBlank(tousseName)) { + try { + tousseName = URLDecoder.decode(tousseName, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } sqlBuilder.append(" AND po.tousseDefinition.name = '" + tousseName + "'"); }else if (StringUtils.isNotBlank(tousseNameFuzzy)) { + try { + tousseNameFuzzy = URLDecoder.decode(tousseNameFuzzy, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } sqlBuilder.append(" AND po.tousseDefinition.name like '%" + tousseNameFuzzy + "%'"); } String taskGroup = StrutsParamUtils.getPraramValue("taskGroup",null); //装配任务组 if(StringUtils.isNotBlank(taskGroup)){ + try { + taskGroup = URLDecoder.decode(taskGroup, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } String[] groups = taskGroup.split(", "); if(!"全部".equals(groups[0])){ if(groups.length == 1){ @@ -2753,6 +2799,11 @@ String tousseStatus = StrutsParamUtils.getPraramValue("tousseStatus",null); //器械包状态 if (StringUtils.isNotBlank(tousseStatus)){ + try { + tousseStatus = URLDecoder.decode(tousseStatus, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } String[] statuses = tousseStatus.split(", "); if(!"全部".equals(statuses[0])){ if(statuses.length == 1){ @@ -2766,6 +2817,11 @@ String department = StrutsParamUtils.getPraramValue("department",null); //科室 if (StringUtils.isNotBlank(department)){ + try { + department = URLDecoder.decode(department, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } sqlBuilder.append(String.format(" AND po.departCoding = '%s' ",department)); } @@ -2804,7 +2860,37 @@ } return sqlBuilder.toString(); } + + /** + * 把参数endTime加1min之后转换为对应的数据库的yyyy-MM-dd HH:mm:00格式的日期数据返回 + * @param endTime 结束时间 + * @param isDateType 数据库字段是否为date类型 + * @return + */ + private String parseEndTime(String endTime, boolean isDateType){ + Date date = null; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + try + { + date = sdf.parse(endTime); + } + catch (Exception e) + { + logger.debug("解析时间出错"); + } + Calendar calendar = new GregorianCalendar(); + calendar.setTime(date); + calendar.add(Calendar.MINUTE, +1); //推后1min + Date end = calendar.getTime(); + String endString = sdf.format(end)+":00"; + if(isDateType){ + return dateQueryAdapter.dateAdapter(endString); + }else{ + return endString; + } + } + @SuppressWarnings("unchecked") public void exportTousseInstanceInfo() { HttpServletResponse response = StrutsParamUtils.getResponse();