Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r25226 -r25382 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 25226) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 25382) @@ -1961,10 +1961,13 @@ public void exportQueryTousseInstance(String sql, OutputStream ops) { List tousseList = new ArrayList(); if (StringUtils.isNotBlank(sql)) { - Query basketQr = objectDao.getHibernateSession().createQuery(sql); - tousseList = basketQr.list(); + /*Query basketQr = objectDao.getHibernateSession().createQuery(sql); + tousseList = basketQr.list();*/ + tousseList = objectDao.findBySql(TousseInstance.class.getSimpleName(), sql); } - createExportFileByJxl(tousseList, ops); + if(CollectionUtils.isNotEmpty(tousseList)){ + createExportFileByJxl(tousseList, ops); + } } /** Index: ssts-web/src/main/webapp/disinfectsystem/toussemanager/tousseinstancemanager/tousseInstanceView.js =================================================================== diff -u -r24817 -r25382 --- ssts-web/src/main/webapp/disinfectsystem/toussemanager/tousseinstancemanager/tousseInstanceView.js (.../tousseInstanceView.js) (revision 24817) +++ ssts-web/src/main/webapp/disinfectsystem/toussemanager/tousseinstancemanager/tousseInstanceView.js (.../tousseInstanceView.js) (revision 25382) @@ -80,6 +80,7 @@ ) }); +//初始化查询条件并加载数据 function initQueryValueAndReload() { var barcode = $Id('barcodeSearch').value; //条码字符串 @@ -142,6 +143,63 @@ } +//构造查询条件 +function getQueryCondition(){ + var queryCondition = {}; + var barcode = $Id('barcodeSearch').value; //条码字符串 + //var barcodeReg = /(\d){9}/; + //if (barcode.length == 9 && barcodeReg.test(barcode)) { //条码字符串为9数字,扫描码才有意义,否则清空 + if (barcode) { //条码字符串为9数字,扫描码才有意义,否则清空 + if (repeatScanLabel == $Id('scanPattern').value) { //启用多次扫描模式 + if (barcodes) { + barcodes += ';' + barcode ; + } else { //启用多次扫描模式的第一次扫描 + barcodes = barcode; + } + } else { + barcodes = ''; + } + } else { + barcode = ''; + barcodes = ''; + } + + queryCondition['barcodeSearch'] = barcode; //条码 + queryCondition['barcodes'] = (barcodes); //多次扫描模式下的条码 + queryCondition['idNumberSearch'] = $Id('idNumberSearch').value; //标识牌编号 + queryCondition['sterilizationTransitionStart'] = $Id('sterilizationTransitionStart').value; //灭菌交接开始时间 + queryCondition['sterilizationTransitionEnd'] = $Id('sterilizationTransitionEnd').value; //灭菌交接结束时间 + + queryCondition['taskGroup'] = $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; //器械包分组 + if(preciseQuery == Ext.getCmp('queryMode').getRawValue()){ //器械包名称(根据查询模式设置不同) + queryCondition['tousseName'] = Ext.getCmp('tousseName').getRawValue(); + queryCondition['tousseNameFuzzy'] = ''; + }else{ + queryCondition['tousseNameFuzzy'] = 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['frequency'] = $Id('frequency').value; //炉次 + + + queryCondition['patientName'] = Ext.getCmp('patientName').getValue(); //病人姓名 + queryCondition['hospitalNum'] = Ext.getCmp('hospitalNum').getValue(); //住院号 + queryCondition['treatmentNum'] = Ext.getCmp('treatmentNum').getValue(); //诊疗号 + return queryCondition; +} + /** * 显示申请单终止原因 */ @@ -1185,21 +1243,35 @@ showResult("结果数量最大为65535,请缩小查询数据的范围"); return; } - var barcodeSearch = $Id('barcodeSearch').value; - var sterilizationDate = $Id('sterilizationDate').value; - var sterilizationEndDate = $Id('sterilizationEndDate').value; + /*var barcodeSearch = $Id('barcodeSearch').value; + var sterilizationStartDate = $Id('sterilizationStart').value;//灭菌开始时间 + var sterilizationEndDate = $Id('sterilizationEnd').value;//灭菌结束时间 var sterilizerName = $Id('sterilizerName').value; var frequency = $Id('frequency').value; var tousseName = $Id('tousseName').value; location.href = WWWROOT + "/disinfectSystem/baseData/tousseDefinitionAction!exportTousseInstanceInfo.do?barcode=" + barcodeSearch + "&sterilizationDate=" - + sterilizationDate + + sterilizationStartDate + "&sterilizationEndDate=" + sterilizationEndDate + "&sterilizerName=" + sterilizerName + "&frequency=" + frequency + "&tousseName=" - + tousseName; + + tousseName;*/ + //因为参数较多,所以改为表单的post提交 + var queryCondition = getQueryCondition(); + //表单元素的id前缀 + var idPrefix = "id_"; + for(var propName in queryCondition){ + if(queryCondition[propName]){ + $Id(idPrefix + propName).value = queryCondition[propName]; + }else{ + $Id(idPrefix + propName).value = ''; + } + } + document.getElementById('parametersFrm').action = + WWWROOT + "/disinfectSystem/baseData/tousseDefinitionAction!exportTousseInstanceInfo.do"; + document.getElementById('parametersFrm').submit(); } }, { Index: ssts-web/src/main/webapp/disinfectsystem/toussemanager/tousseinstancemanager/tousseInstanceView.jsp =================================================================== diff -u -r24827 -r25382 --- ssts-web/src/main/webapp/disinfectsystem/toussemanager/tousseinstancemanager/tousseInstanceView.jsp (.../tousseInstanceView.jsp) (revision 24827) +++ ssts-web/src/main/webapp/disinfectsystem/toussemanager/tousseinstancemanager/tousseInstanceView.jsp (.../tousseInstanceView.jsp) (revision 25382) @@ -106,7 +106,7 @@ -
+ @@ -142,6 +142,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java =================================================================== diff -u -r25036 -r25382 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 25036) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 25382) @@ -9,6 +9,7 @@ import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Comparator; @@ -31,6 +32,7 @@ import net.sf.json.util.PropertyFilter; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.Transformer; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.struts2.convention.annotation.Action; @@ -41,6 +43,7 @@ import com.forgon.Constants; import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.model.BarcodeDevice; import com.forgon.directory.model.CssdHandleTousses; import com.forgon.directory.model.OrgUnit; import com.forgon.directory.vo.LoginUserData; @@ -55,10 +58,13 @@ import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; import com.forgon.disinfectsystem.entity.basedatamanager.position.TousseOperation; +import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.taskGroup.TaskGroup; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; +import com.forgon.disinfectsystem.entity.idcardinstance.IDCardInstance; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.goodFilterConfig.service.GoodFilterConfigManager; import com.forgon.disinfectsystem.goodsBindingConfig.vo.BindGoodVo; @@ -75,13 +81,15 @@ import com.forgon.log.service.LogManager; import com.forgon.tools.FileSystemHelper; import com.forgon.tools.ImageUtils; +import com.forgon.tools.SqlBuilder; import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.StrutsResponseUtils; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.json.JsonPropertyFilter; import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.ForgonDateUtils; import com.forgon.tools.util.PageUtil; import com.forgon.tools.util.SqlUtils; import com.opensymphony.xwork2.ModelDriven; @@ -2146,7 +2154,239 @@ public void setVideoFileManager(VideoFileManager videoFileManager) { this.videoFileManager = videoFileManager; } + + /** + * 获取查询条件 + * @return + */ + private String getQueryCondition(){ + StringBuilder sqlBuilder = new StringBuilder(" "); + String idNumber = StrutsParamUtils.getPraramValue("idNumberSearch",null); + String idNumberSql = null; + if(StringUtils.isNotBlank(idNumber)){ + idNumberSql = String.format(" and po.idCardInstanceID in(select idi.id from IDCardInstance idi , IDCardDefinition idd where idi.idCardDefinitionID=idd.id and idd.idNumber like '%%%s%%') ", idNumber); + } + + /*由于不追溯的器械包都会生成一个固定条码的包实例,这些包实例的operationTime都是null, + 器械包信息页面oracle数据库按operationTime降排时默认null都排到最前面了,所以增加此过滤条件*/ + sqlBuilder.append(" AND operationTime is not null "); + if(idNumberSql != null){ + sqlBuilder.append(idNumberSql); + } + String barcodeSearch = StrutsParamUtils.getPraramValue("barcodeSearch",null); //条码(包含但不限于:器械包实例条码、标识牌) + String barcodes = StrutsParamUtils.getPraramValue("barcodes",null); //条码集合(用户启用多次扫描模式并且不是第一次扫描条码时才有值,此时要按照此条码集合查询) + if(StringUtils.isNotBlank(barcodeSearch)){ + BarcodeDevice barcodeDevice = barcodeManager + .getBarcodeByBarcode(barcodeSearch); + if(barcodeDevice == null + && StringUtils.isBlank(barcodes)) { //1、若无此条码 2、用户没启用多次扫描模式,或者是启用了而且是第一次扫描 同时满足1和2则两个条件直接返回 + return " and 1=2 "; + } + + if (barcodeDevice instanceof IDCardInstance) { //是标识牌的条码 + IDCardInstance idCardInstance = (IDCardInstance) barcodeDevice; + List tousseInstances = idCardInstance + .getTousseInstances(objectDao); + Collection barcodeCollection = CollectionUtils.collect( + tousseInstances, new Transformer() { + @Override + public String transform(TousseInstance input) { + return input.getBarcode(); + } + }); + sqlBuilder.append(" AND"); + sqlBuilder.append(SqlBuilder.build_IN_Statement("po.barcode", + SqlBuilder.IN, barcodeCollection)); + } else { + if (StringUtils.isNotBlank(barcodes)) { + String[] barcodeArray = barcodes.split(";"); + List barcodeList = Arrays.asList(barcodeArray); + sqlBuilder.append(" AND" + SqlBuilder.build_IN_Statement("po.barcode", + SqlBuilder.IN, barcodeList)); + } else { + sqlBuilder.append(String.format(" AND po.barcode = '%s'", + barcodeSearch)); + } + } + } + + String sterilizationStart = StrutsParamUtils.getPraramValue("sterilizationStart",null); //灭菌开始时间 + if (StringUtils.isNotBlank(sterilizationStart)) { + sqlBuilder.append(String.format( + " AND po.sterileStartTime >= '%s' ",sterilizationStart)); + } + + String sterilizationEnd = StrutsParamUtils.getPraramValue("sterilizationEnd",null); //灭菌结束日期 + if (StringUtils.isNotBlank(sterilizationEnd)) { + sqlBuilder.append(String.format( + " AND po.sterileEndTime < '%s' ",sterilizationEnd)); + } + //如果要根据灭菌时间来筛选,首先必须是已经有灭菌记录的(数据库中存在有灭菌开始时间但是没有灭菌结束时间和灭菌单的记录) + if(StringUtils.isNotBlank(sterilizationStart) || StringUtils.isNotBlank(sterilizationEnd)){ + sqlBuilder.append(" AND po.sterilizationRecord_id is not null"); + } + + String sterilizerName = StrutsParamUtils.getPraramValue("sterilizerName",null); //灭菌炉 + if (StringUtils.isNotBlank(sterilizerName)) { + sqlBuilder.append(String.format(" AND po.sterilizerName = '%s'" ,sterilizerName)); + }else{ + String sterilizerGroup = StrutsParamUtils.getPraramValue("sterilizerGroup",null); //灭菌炉分组 + if(StringUtils.isNotBlank(sterilizerGroup)){ + List list = objectDao.findBySql(Sterilizer.class.getSimpleName(), String.format("where po.ownGroup = '%s' ", sterilizerGroup)); + List sterilizers = new ArrayList(); + for(Sterilizer sterilizer : list){ + sterilizers.add(sterilizer.getName()); + } + sqlBuilder.append(String.format(" AND (%s) ", + SqlUtils.getStringFieldInLargeCollectionsPredicate("po.sterilizerName", sterilizers))); + } + } + + String operationStart = StrutsParamUtils.getPraramValue("operationStart",null); //装配开始时间 + if(StringUtils.isNotBlank(operationStart)){ + sqlBuilder.append(String.format(" AND po.operationTime >= %s ",dateQueryAdapter.dateAdapter(ForgonDateUtils.safelyParseDate(operationStart)))); + } + String operationEnd = StrutsParamUtils.getPraramValue("operationEnd",null); //装配结束时间 + if(StringUtils.isNotBlank(operationEnd)){ + sqlBuilder.append(String.format(" AND po.operationTime < %s ",dateQueryAdapter.dateAdapter(ForgonDateUtils.safelyParseDate(operationEnd)))); + } + + String invoiceStart = StrutsParamUtils.getPraramValue("invoiceStart",null); //发货开始时间 + if(StringUtils.isNotBlank(invoiceStart)){ + sqlBuilder.append(String.format(" AND po.invoiceSendTime >= %s ",dateQueryAdapter.dateAdapter(ForgonDateUtils.safelyParseDate(invoiceStart)))); + } + String invoiceEnd = StrutsParamUtils.getPraramValue("invoiceEnd",null); //发货结束时间 + if(StringUtils.isNotBlank(invoiceEnd)){ + sqlBuilder.append(String.format(" AND po.invoiceSendTime < %s ",dateQueryAdapter.dateAdapter(ForgonDateUtils.safelyParseDate(invoiceEnd)))); + } + + //undo + String sterilizationTransitionStart = StrutsParamUtils.getPraramValue("sterilizationTransitionStart",null); //灭菌交接开始时间 + if(StringUtils.isNotBlank(sterilizationTransitionStart)){ + sqlBuilder.append(String.format(" AND po.transitionTime >= %s ",dateQueryAdapter.dateAdapter(ForgonDateUtils.safelyParseDate(sterilizationTransitionStart)))); + } + String sterilizationTransitionEnd = StrutsParamUtils.getPraramValue("sterilizationTransitionEnd",null); //灭菌交接结束时间 + if(StringUtils.isNotBlank(sterilizationTransitionEnd)){ + sqlBuilder.append(String.format(" AND po.transitionTime < %s ",dateQueryAdapter.dateAdapter(ForgonDateUtils.safelyParseDate(sterilizationTransitionEnd)))); + } + + String frequency = StrutsParamUtils.getPraramValue("frequency",null); //炉次 + if (StringUtils.isNotBlank(frequency)) { + sqlBuilder.append(String.format(" AND po.sterileFrequency = '%s'" ,frequency)); + } + + String patientName = StrutsParamUtils.getPraramValue("patientName",null); //病人姓名 + String treatmentNum = StrutsParamUtils.getPraramValue("treatmentNum",null); //诊疗号 + String hospitalNum = StrutsParamUtils.getPraramValue("hospitalNum",null); //住院号 + String patientNameSql = ""; + String treatmentNumSql = ""; + String hospitalNumSql = ""; + if (StringUtils.isNotBlank(patientName)) { + patientNameSql = " AND patientName = '"+patientName+"'"; + } + if (StringUtils.isNotBlank(treatmentNum)) { + treatmentNumSql = " AND treatmentNum = '"+treatmentNum+"'"; + } + if (StringUtils.isNotBlank(treatmentNum)) { + hospitalNum = " 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) + && tousseGroupName.indexOf("全部") == -1) { //没选或者选择全部就不过滤 + String[] tousseGroupNameArray = tousseGroupName.split(","); + + StringBuilder tempBuilder = new StringBuilder(); + for (String temp : tousseGroupNameArray) { + tempBuilder.append(String.format("po.tousseDefinition.tousseGroupName = '%s' or " ,temp.trim())); + } + + int length = tempBuilder.length(); + tempBuilder.delete(length - 4, length); + sqlBuilder.append(String.format(" AND (%s) " ,tempBuilder)); + } + + //通过在器械包下拉框选项中选中的名称(采用精确匹配) + String tousseName = StrutsParamUtils.getPraramValue("tousseName",null); + //通过在器械包下拉里输入但未从下拉选项选中的物品名称(采用模糊匹配) + String tousseNameFuzzy = StrutsParamUtils.getPraramValue("tousseNameFuzzy",null); + if (StringUtils.isNotBlank(tousseName)) { + sqlBuilder.append(" AND po.tousseDefinition.name = '" + tousseName + + "'"); + }else if (StringUtils.isNotBlank(tousseNameFuzzy)) { + sqlBuilder.append(" AND po.tousseDefinition.name like '%" + tousseNameFuzzy + + "%'"); + } + + String taskGroup = StrutsParamUtils.getPraramValue("taskGroup",null); //装配任务组 + if(StringUtils.isNotBlank(taskGroup)){ + String[] groups = taskGroup.split(", "); + if(!"全部".equals(groups[0])){ + if(groups.length == 1){ + sqlBuilder.append(String.format(" AND ( po.taskGroup = '%s' ) ",groups[0])); + }else{ + sqlBuilder.append(String.format(" AND (%s) ", + SqlUtils.getStringFieldInLargeCollectionsPredicate("po.taskGroup", Arrays.asList(groups)))); + } + } + } + String tousseStatus = StrutsParamUtils.getPraramValue("tousseStatus",null); //器械包状态 + if (StringUtils.isNotBlank(tousseStatus)){ + String[] statuses = tousseStatus.split(", "); + if(!"全部".equals(statuses[0])){ + if(statuses.length == 1){ + sqlBuilder.append(String.format(" AND (po.status = '%s') ",statuses[0])); + }else{ + sqlBuilder.append(String.format(" AND (%s) ", + SqlUtils.getStringFieldInLargeCollectionsPredicate("po.status", Arrays.asList(statuses)))); + } + } + } + + String department = StrutsParamUtils.getPraramValue("department",null); //科室 + if (StringUtils.isNotBlank(department)){ + sqlBuilder.append(String.format(" AND po.departCoding = '%s' ",department)); + } + + + /////////////////////////////////////////////// + LoginUserData userData = AcegiHelper.getLoginUser(); + String currentOrgUnitCode = userData + .getCurrentOrgUnitCode(); + // true则为查看所有科室器械包实体信息 + boolean isSelectAll = StringUtils.isNotBlank(StrutsParamUtils.getPraramValue("selectall",null)); + if (!isSelectAll) { + if(StringUtils.isNotBlank(currentOrgUnitCode)){ + if(supplyRoomConfigManager.isFirstSupplyRoomOrgUnit(currentOrgUnitCode)){ + // 科室为一级供应室,不限定装配科室 + }else{ + String warehousePredicate = "select id from " + WareHouse.class.getSimpleName() + + " where orgUnitCode='" + currentOrgUnitCode + "'"; + sqlBuilder.append(String.format(" AND (po.orgUnitCoding = '%s' OR po.location='%s' OR po.wareHouseId in (%s))", + AcegiHelper.getLoginUser() + .getOrgUnitCodingFromSupplyRoomConfig(),currentOrgUnitCode,warehousePredicate)); + } + }else{ + sqlBuilder.append(String.format(" AND 1=0 ")); + } + } + + // 器械包不追溯且是固定条码 不显示 + sqlBuilder.append(" AND (po.unTraceableTousse = 0 or po.tousseFixedBarcode = 0) "); + + sqlBuilder.append(" AND po.comboTousseInstanceId is null "); //聚合包里面的包实例 不显示 + + String reviewTime = StrutsParamUtils.getPraramValue("isReview",null); + //对应器械包干预审核时间页面,不显示审核时间为空的数据项 + if(StringUtils.isNotBlank(reviewTime)){ + sqlBuilder.append(" AND po.reviewTime is not null "); + } + return sqlBuilder.toString(); + } @SuppressWarnings("unchecked") public void exportTousseInstanceInfo() { @@ -2159,7 +2399,7 @@ response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("GBK"), "ISO8859_1")); - String barcode = StrutsParamUtils.getPraramValue("barcode", ""); + /*String barcode = StrutsParamUtils.getPraramValue("barcode", ""); String tousseName = StrutsParamUtils.getPraramValue("tousseName", ""); String sterilizationStartDate = StrutsParamUtils.getPraramValue( @@ -2208,15 +2448,18 @@ } if (StringUtils.isNotBlank(barcode)) { sql = " and po.barcode = '" + barcode + "'"; - } + }*/ + + String sqlCondition = getQueryCondition(); + // 不追溯 固定条码的器械包实例,不导出 String listSql = "select po from " + TousseInstance.class.getSimpleName() + " po where 1=1 " + " and (po.unTraceableTousse = 0 or po.tousseFixedBarcode = 0) " - + sql + " order by po.operationTime desc "; + + sqlCondition + " order by po.operationTime desc "; - tousseInstanceManager.exportQueryTousseInstance(listSql, + tousseInstanceManager.exportQueryTousseInstance(" where 1=1 " + sqlCondition, response.getOutputStream()); servletOutputStream.flush(); } catch (Exception e) {