Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/ReAppTableSqlHandler.java =================================================================== diff -u --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/ReAppTableSqlHandler.java (revision 0) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/ReAppTableSqlHandler.java (revision 16585) @@ -0,0 +1,233 @@ +package com.forgon.disinfectsystem.recyclingapplication.service; + +import com.forgon.Constants; +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; +import com.forgon.tools.SqlBuilder; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateUtils; + +import java.util.Calendar; +import java.util.Date; +import java.util.Map; + +/** + * Created by zhonghaowen on 2017/1/4. + * RecyclingApplicationTableManager拼接sql类 + */ +public class ReAppTableSqlHandler { + + private static ReAppTableSqlHandler reAppTableSqlHandler; + + private static DateQueryAdapter dateQueryAdapter; + + private ReAppTableSqlHandler() { + //no instance + } + + public static ReAppTableSqlHandler getInstance(DateQueryAdapter adapter) { + if (reAppTableSqlHandler == null) { + synchronized (ReAppTableSqlHandler.class) { + if (reAppTableSqlHandler == null) { + reAppTableSqlHandler = new ReAppTableSqlHandler(); + } + } + } + dateQueryAdapter = adapter; + return reAppTableSqlHandler; + } + + /** + * 创建对应的筛选sql + * + * @param sqlWhereParamMap 页面的参数 + * @param sqlBuilder 原来的sql + */ + public void createFilterSql(Map sqlWhereParamMap, StringBuilder sqlBuilder) { + this.createTimeFilterSql(sqlWhereParamMap, sqlBuilder); + this.createStatusFilterSql(sqlWhereParamMap, sqlBuilder); + this.createDeptGroupFilterSql(sqlWhereParamMap, sqlBuilder); + this.createTousseGroupFilterSql(sqlWhereParamMap, sqlBuilder); + } + + + /** + * 创建按器械包分组过滤 + * + * @param sqlWhereParamMap 页面的参数 + * @param sqlBuilder 原来的sql + */ + public void createTousseGroupFilterSql(Map sqlWhereParamMap, StringBuilder sqlBuilder) { + String tousseGroupId = sqlWhereParamMap.get("tousseGroupId"); + if (!"all".equals(tousseGroupId)) { + sqlBuilder.append(String.format(" and (po.id in (select ti.invoicePlan.id from TousseItem ti,TousseDefinition td,TousseGroup tg where ti.tousseDefinitionId = td.id and td.tousseGroupID = tg.id and tg.id = %s ))", tousseGroupId)); + } + } + + /** + * 查看申请单时过滤未完成或者已完成状态 + * + * @param sqlBuilder 原来的sql + * @param sqlWhereParamMap 页面的参数 + */ + public void createStatusFilterSql(Map sqlWhereParamMap, StringBuilder sqlBuilder) { + String status = sqlWhereParamMap.get("status"); + if (StringUtils.isNotBlank(status)) { + // if (StringUtils.isNotEmpty(status) && "todoList".equals(listType)){ + if ("unFinish".equals(status)) { + this.createUnFinishFilterSql(sqlBuilder); + } + else if ("finish".equals(status)) { + this.createFinishFilterSql(sqlBuilder); + } + } + } + + /** + * 按科室分组过滤 + * + * @param sqlBuilder 原来的sql + * @param sqlWhereParamMap 页面的参数 + */ + private void createDeptGroupFilterSql(Map sqlWhereParamMap, StringBuilder sqlBuilder) { + String departCodes = sqlWhereParamMap.get("departCodes"); + if (StringUtils.isNotBlank(departCodes)) { + if (!"all".equals(departCodes)) { + String[] splits = departCodes.split(Constants.IDS_SEPARATOR); + String departCodesSql = SqlBuilder.createStatus("departCoding", splits); + sqlBuilder.append(String.format("AND (%s)", departCodesSql)); + } + } + } + + + /** + * 创建根据选择的时间条件过滤 + * + * @param sqlWhereParamMap 页面的参数 + * @param sqlBuilder 原来的sql + */ + private void createTimeFilterSql(Map sqlWhereParamMap, StringBuilder sqlBuilder) { + //根据开始时间和结束时间来查询 + String startTime = sqlWhereParamMap.get("startTime"); + String endTime = sqlWhereParamMap.get("endTime"); + String timeSearchFmt = sqlWhereParamMap.get("timeSearchFmt"); + if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime) && StringUtils.isNotBlank(timeSearchFmt)) { + String start; + String end; + //精确到年月日 + if (timeSearchFmt.indexOf("H") == -1) { + start = dateQueryAdapter.dateAdapter(DateUtils.truncate(new Date(Long.parseLong(startTime)), Calendar.DAY_OF_MONTH)); + //因为要小于结束时间,所以加1天 + Date dt = DateUtils.addDays(new Date(Long.parseLong(endTime)), 1); + end = dateQueryAdapter.dateAdapter(DateUtils.truncate(dt, Calendar.DAY_OF_MONTH)); + } + //至少精确到小时 + else { + start = dateQueryAdapter.dateAdapter(new java.sql.Date(Long.parseLong(startTime))); + end = dateQueryAdapter.dateAdapter(new java.sql.Date(Long.parseLong(endTime))); + } + sqlBuilder.append(String.format(" AND (po.submitTime >= %s and po.submitTime < %s OR po.recyclingTime >= %s and po.recyclingTime < %s) ", start, end, start, end)); + } + } + + + /** + * 创建未完成条件过滤 + * (新加发货状态为null是也属于未完成,处理临床添加外部代理单而供应室未装配时的情况) + * + * @param sqlBuilder 原来的sql + */ + private void createUnFinishFilterSql(StringBuilder sqlBuilder) { + //回收状态:待回收,部分回收 + String recyclingStatusSql = SqlBuilder.createStatus("recyclingStatus", InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE, InvoicePlan.RECYCLINGSTATUS_PARTRECYCLE); + //发货状态:待发货,部分发货 + String deliverStatusSql = SqlBuilder.createStatus("deliverStatus", InvoicePlan.DELIVERSTATUS_AWAITDELIVER, InvoicePlan.DELIVERSTATUS_PARTDELIVERED); + //归还状态:未归还,部分归还,归还待确认 + String returnStatusSql = SqlBuilder.createStatus("returnStatus", InvoicePlan.RETURN_STATUS_UNRETURNED, InvoicePlan.RETURN_STATUS_PARTIALLY_RETURNED, InvoicePlan.RETURN_STATUS_AWAITCONFIRM); + //提交状态:committedStatus等于0 + String commitSql = "po.committedStatus = 0 "; + sqlBuilder.append(String.format(" AND (%s or %s or %s or %s or %s) ", deliverStatusSql, "deliverStatus is null", recyclingStatusSql, returnStatusSql, commitSql)); + } + + + /** + * 创建已完成条件过滤 + * + * @param sqlBuilder 原来的sql + */ + private void createFinishFilterSql(StringBuilder sqlBuilder) { + //回收状态:已回收 + String recyclingStatusSql = SqlBuilder.createStatus("recyclingStatus", InvoicePlan.RECYCLINGSTATUS_RECYCLED); + //发货状态:已发货 + String deliverStatusSql = SqlBuilder.createStatus("deliverStatus", InvoicePlan.DELIVERSTATUS_DELIVERED); + //终止状态:已终止 + String endStatusSql = SqlBuilder.createStatus("endStatus", InvoicePlan.STATUS_END); + sqlBuilder.append(String.format(" AND (%s and %s or %s ) ", deliverStatusSql, recyclingStatusSql, endStatusSql)); + } + + /** + * 创建申请单申请时间过滤条件(近三天、近一周、近三个月”) + * + * @param sqlBuilder 原来的sql + * @param showSubmitTime 前端传过来的条件 + */ + @Deprecated + private void createSubmitTimeFilterSql(StringBuilder sqlBuilder, String showSubmitTime) { + Date now = new Date(); + String today = dateQueryAdapter.dateAdapter(now); + String condition = null; + switch (showSubmitTime) { + case "threeDay": { + condition = dateQueryAdapter.dateAdapter(DateUtils.addDays(now, -3)); + break; + } + case "oneWeek": { + condition = dateQueryAdapter.dateAdapter(DateUtils.addWeeks(now, -1)); + break; + } + case "threeMonth": { + condition = dateQueryAdapter.dateAdapter(DateUtils.addMonths(now, -3)); + break; + } + //default默认是全部 + default: { + } + } + if (condition != null) { + sqlBuilder.append(String.format(" AND (po.submitTime between %s and %s OR po.recyclingTime between %s and %s) ", condition, today, condition, today)); + } + } + + + /** + * 创建临床科室的科室申领过滤的sql + * 今天提交或者没提交的,今天之前提交的且回收状态处于待回收,部分回收;发货状态处于待发货,部分发货;归还状态处于未归还,部分归还,归还待确认; + * + * @param sqlBuilder 原来的sql + * @param deliverStatusSql 发货状态sql + */ + public void createApplyFilterSql(StringBuilder sqlBuilder, String deliverStatusSql) { + //归还状态:未归还,部分归还,归还待确认 + String returnStatusSql = SqlBuilder.build_IN_Statement("po.returnStatus", SqlBuilder.IN, InvoicePlan.RETURN_STATUS_UNRETURNED, + InvoicePlan.RETURN_STATUS_PARTIALLY_RETURNED, InvoicePlan.RETURN_STATUS_AWAITCONFIRM); + //回收状态:待回收,部分回收 + String recyclingStatusSql = SqlBuilder.build_IN_Statement("po.recyclingStatus", SqlBuilder.IN, InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE, + InvoicePlan.RECYCLINGSTATUS_PARTRECYCLE); + Date now = new Date(); + String todayBegin = dateQueryAdapter.dateAdapter(DateUtils.truncate(now, Calendar.DAY_OF_MONTH)); + String todayEnd = dateQueryAdapter.dateAdapter(DateUtils.truncate(DateUtils.addDays(now, 1), Calendar.DAY_OF_MONTH)); + String todaySql = " po.lastInvoiceTime >= " + todayBegin; + String todaySubmitSql = " (po.submitTime >= " + todayBegin + " and po.submitTime < " + todayEnd + ") "; + String beforeTodaySubmitSql = " (po.submitTime < " + todayBegin + ") "; + String commitSql = "po.committedStatus = 0 "; + sqlBuilder.append(" AND ("); + //今天提交或者没提交的 + sqlBuilder.append(String.format("po.submitTime is null OR %s ", todaySubmitSql)); + sqlBuilder.append("OR ("); + //今天之前提交的且回收状态处于待回收,部分回收;发货状态处于待发货,部分发货;归还状态处于未归还,部分归还,归还待确认; + sqlBuilder.append(String.format("%s AND (%s OR %s OR %s OR %s OR %s) ", beforeTodaySubmitSql, commitSql, deliverStatusSql, returnStatusSql, recyclingStatusSql, todaySql)); + sqlBuilder.append("))"); + } + +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/tousseGroup/action/TousseGroupAction.java =================================================================== diff -u -r16316 -r16585 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/tousseGroup/action/TousseGroupAction.java (.../TousseGroupAction.java) (revision 16316) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/tousseGroup/action/TousseGroupAction.java (.../TousseGroupAction.java) (revision 16585) @@ -8,9 +8,12 @@ import javax.servlet.http.HttpServletResponse; +import com.forgon.tools.StrutsResponseUtils; +import com.forgon.tools.util.PageUtil; import net.sf.json.JSONObject; import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; @@ -28,6 +31,8 @@ @Action(value = "tousseGroupAction") public class TousseGroupAction implements ModelDriven, Preparable { + protected Logger logger = Logger.getLogger(this.getClass()); + private TousseGroup tousseGroup; private TousseGroupManager tousseGroupManager; @@ -138,6 +143,19 @@ } } + /** + * 按器械包分组下拉选项 + */ + public void loadAllTousseGroupStore(){ + try { + PageUtil.outPutResult(PageUtil.getPagePara(), tousseGroupManager.loadAllTousseGroupStore()); + } + catch (Exception e) { + logger.error(e, e); + StrutsResponseUtils.output(false); + } + } + public TousseGroup getModel() { return tousseGroup; } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/dwr/table/RecyclingApplicationTableManager.java =================================================================== diff -u -r16517 -r16585 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/dwr/table/RecyclingApplicationTableManager.java (.../RecyclingApplicationTableManager.java) (revision 16517) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/dwr/table/RecyclingApplicationTableManager.java (.../RecyclingApplicationTableManager.java) (revision 16585) @@ -16,9 +16,9 @@ import java.util.List; import java.util.Map; -import com.forgon.Constants; import com.forgon.directory.service.OrgUnitManager; import com.forgon.disinfectsystem.recyclingapplication.service.InvoicePlanManager; +import com.forgon.disinfectsystem.recyclingapplication.service.ReAppTableSqlHandler; import com.forgon.results.handler.LendGoodsBriefHandler; import com.forgon.results.handler.ResultBackHandler; @@ -181,9 +181,9 @@ return result; } - public String findRecyclingApplicationTableList( - Map> parameterMap) { - + public String findRecyclingApplicationTableList(Map> parameterMap) { + //实例化sql拼接的辅助类 + ReAppTableSqlHandler reAppTableSqlHandler = ReAppTableSqlHandler.getInstance(dateQueryAdapter); List excludeTypelist = new ArrayList(); excludeTypelist.add(InvoicePlan.TYPE_PROXYDISINFECTION); // excludeTypelist.add(InvoicePlan.TYPE_FOREIGNPROXYDISINFECTION); @@ -201,16 +201,11 @@ // sqlBuilder.append(" WHERE " // + SqlBuilder.build_IN_Statement("po.type", SqlBuilder.NOT_IN, // excludeTypelist)); - sqlBuilder.append(" WHERE (" - + SqlBuilder.build_IN_Statement("po.type", SqlBuilder.NOT_IN, - excludeTypelist)); - - Map sqlWhereParamMap = gridManager - .getParamFromView(parameterMap); + + Map sqlWhereParamMap = gridManager.getParamFromView(parameterMap); + sqlBuilder.append(" WHERE (" + SqlBuilder.build_IN_Statement("po.type", SqlBuilder.NOT_IN, excludeTypelist)); String listType = sqlWhereParamMap.get("listType"); - String currentOrgUnitCode = AcegiHelper.getLoginUser().getCurrentOrgUnitCode(); - int supplyRoomType = supplyRoomConfigManager.getSupplyRoomTypeByOrgUnitCoding(currentOrgUnitCode); // 如果不是一二级供应室,则把科室当做申请科室处理 @@ -257,16 +252,13 @@ sqlBuilder.append(String.format(" AND (po.departCoding = '%s' or po.applicant = '%s') ", currentOrgUnitCode,AcegiHelper.getLoginUser().getUserFullName())); //如果是科室申领 if("todoList".equals(listType)){ - this.createApplyFilterSql(sqlBuilder, deliverStatusSql); + reAppTableSqlHandler.createApplyFilterSql(sqlBuilder, deliverStatusSql); } } //对应最上面的where sqlBuilder.append(")"); + reAppTableSqlHandler.createFilterSql(sqlWhereParamMap, sqlBuilder); - this.createTimeFilterSql(sqlWhereParamMap, sqlBuilder); - this.createStatusFilterSql(sqlWhereParamMap, sqlBuilder); - this.createDeptGroupFilterSql(sqlWhereParamMap, sqlBuilder); - String sql = sqlBuilder.toString(); logger.debug(sql); return gridManager.renderGrid(parameterMap, @@ -276,164 +268,7 @@ "recyclingApplications", "parent" }); } - /** - * 查看申请单时过滤未完成或者已完成状态 - * @param sqlBuilder 原来的sql - * @param sqlWhereParamMap 页面的参数 - */ - public void createStatusFilterSql(Map sqlWhereParamMap, StringBuilder sqlBuilder) { - String status = sqlWhereParamMap.get("status"); - if (StringUtils.isNotBlank(status)){ - // if (StringUtils.isNotEmpty(status) && "todoList".equals(listType)){ - if ("unFinish".equals(status)){ - this.createUnFinishFilterSql(sqlBuilder); - } - else if ("finish".equals(status)){ - this.createFinishFilterSql(sqlBuilder); - } - } - } - /** - * 按科室分组过滤 - * @param sqlBuilder 原来的sql - * @param sqlWhereParamMap 页面的参数 - */ - private void createDeptGroupFilterSql(Map sqlWhereParamMap, StringBuilder sqlBuilder){ - String departCodes = sqlWhereParamMap.get("departCodes"); - if (StringUtils.isNotBlank(departCodes)) { - if (!"all".equals(departCodes)){ - String[] splits = departCodes.split(Constants.IDS_SEPARATOR); - String departCodesSql = SqlBuilder.createStatus("departCoding", splits); - sqlBuilder.append(String.format("AND (%s)", departCodesSql)); - } - } - } - - - /** - * 创建根据选择的时间条件过滤 - * @param sqlWhereParamMap 页面的参数 - * @param sqlBuilder 原来的sql - */ - private void createTimeFilterSql(Map sqlWhereParamMap, StringBuilder sqlBuilder){ - //根据开始时间和结束时间来查询 - String startTime = sqlWhereParamMap.get("startTime"); - String endTime = sqlWhereParamMap.get("endTime"); - String timeSearchFmt = sqlWhereParamMap.get("timeSearchFmt"); - if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime) && StringUtils.isNotBlank(timeSearchFmt)){ - String start; - String end; - //精确到年月日 - if (timeSearchFmt.indexOf("H") == -1){ - start = dateQueryAdapter.dateAdapter(DateUtils.truncate(new Date(Long.parseLong(startTime)), Calendar.DAY_OF_MONTH)); - //因为要小于结束时间,所以加1天 - Date dt = DateUtils.addDays(new Date(Long.parseLong(endTime)), 1); - end = dateQueryAdapter.dateAdapter(DateUtils.truncate(dt, Calendar.DAY_OF_MONTH)); - } - //至少精确到小时 - else { - start = dateQueryAdapter.dateAdapter(new java.sql.Date(Long.parseLong(startTime))); - end = dateQueryAdapter.dateAdapter(new java.sql.Date(Long.parseLong(endTime))); - } - sqlBuilder.append(String.format(" AND (po.submitTime >= %s and po.submitTime < %s OR po.recyclingTime >= %s and po.recyclingTime < %s) ",start, end, start, end)); - } - } - - - - /** - * 创建未完成条件过滤 - * (新加发货状态为null是也属于未完成,处理临床添加外部代理单而供应室未装配时的情况) - * @param sqlBuilder 原来的sql - */ - private void createUnFinishFilterSql(StringBuilder sqlBuilder){ - //回收状态:待回收,部分回收 - String recyclingStatusSql = SqlBuilder.createStatus("recyclingStatus",InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE, InvoicePlan.RECYCLINGSTATUS_PARTRECYCLE); - //发货状态:待发货,部分发货 - String deliverStatusSql = SqlBuilder.createStatus("deliverStatus",InvoicePlan.DELIVERSTATUS_AWAITDELIVER, InvoicePlan.DELIVERSTATUS_PARTDELIVERED); - //归还状态:未归还,部分归还,归还待确认 - String returnStatusSql = SqlBuilder.createStatus("returnStatus",InvoicePlan.RETURN_STATUS_UNRETURNED, InvoicePlan.RETURN_STATUS_PARTIALLY_RETURNED, InvoicePlan.RETURN_STATUS_AWAITCONFIRM); - //提交状态:committedStatus等于0 - String commitSql = "po.committedStatus = 0 "; - sqlBuilder.append(String.format(" AND (%s or %s or %s or %s or %s) ",deliverStatusSql , "deliverStatus is null",recyclingStatusSql,returnStatusSql,commitSql)); - } - - - /** - * 创建已完成条件过滤 - * @param sqlBuilder 原来的sql - */ - private void createFinishFilterSql(StringBuilder sqlBuilder){ - //回收状态:已回收 - String recyclingStatusSql = SqlBuilder.createStatus("recyclingStatus",InvoicePlan.RECYCLINGSTATUS_RECYCLED); - //发货状态:已发货 - String deliverStatusSql = SqlBuilder.createStatus("deliverStatus",InvoicePlan.DELIVERSTATUS_DELIVERED); - //终止状态:已终止 - String endStatusSql = SqlBuilder.createStatus("endStatus",InvoicePlan.STATUS_END); - sqlBuilder.append(String.format(" AND (%s and %s or %s ) ",deliverStatusSql,recyclingStatusSql,endStatusSql)); - } - - /** - * 创建申请单申请时间过滤条件(近三天、近一周、近三个月”) - * @param sqlBuilder 原来的sql - * @param showSubmitTime 前端传过来的条件 - */ - @Deprecated - private void createSubmitTimeFilterSql(StringBuilder sqlBuilder,String showSubmitTime){ - Date now = new Date(); - String today = dateQueryAdapter.dateAdapter(now); - String condition = null; - switch (showSubmitTime){ - case "threeDay":{ - condition = dateQueryAdapter.dateAdapter(DateUtils.addDays(now,-3)); - break; - } - case "oneWeek":{ - condition = dateQueryAdapter.dateAdapter(DateUtils.addWeeks(now,-1)); - break; - } - case "threeMonth":{ - condition = dateQueryAdapter.dateAdapter(DateUtils.addMonths(now,-3)); - break; - } - //default默认是全部 - default:{} - } - if (condition != null){ - sqlBuilder.append(String.format(" AND (po.submitTime between %s and %s OR po.recyclingTime between %s and %s) ",condition,today, condition, today)); - } - } - - /** - * 创建临床科室的科室申领过滤的sql - * 今天提交或者没提交的,今天之前提交的且回收状态处于待回收,部分回收;发货状态处于待发货,部分发货;归还状态处于未归还,部分归还,归还待确认; - * @param sqlBuilder 原来的sql - * @param deliverStatusSql 发货状态sql - */ - private void createApplyFilterSql(StringBuilder sqlBuilder,String deliverStatusSql){ - //归还状态:未归还,部分归还,归还待确认 - String returnStatusSql = SqlBuilder.build_IN_Statement("po.returnStatus", SqlBuilder.IN, InvoicePlan.RETURN_STATUS_UNRETURNED, - InvoicePlan.RETURN_STATUS_PARTIALLY_RETURNED, InvoicePlan.RETURN_STATUS_AWAITCONFIRM); - //回收状态:待回收,部分回收 - String recyclingStatusSql = SqlBuilder.build_IN_Statement("po.recyclingStatus", SqlBuilder.IN, InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE, - InvoicePlan.RECYCLINGSTATUS_PARTRECYCLE); - Date now = new Date(); - String todayBegin = dateQueryAdapter.dateAdapter(DateUtils.truncate(now, Calendar.DAY_OF_MONTH)); - String todayEnd = dateQueryAdapter.dateAdapter(DateUtils.truncate(DateUtils.addDays(now, 1),Calendar.DAY_OF_MONTH)); - String todaySql = " po.lastInvoiceTime >= " + todayBegin; - String todaySubmitSql = " (po.submitTime >= " + todayBegin + " and po.submitTime < " + todayEnd + ") "; - String beforeTodaySubmitSql = " (po.submitTime < " + todayBegin + ") "; - String commitSql = "po.committedStatus = 0 "; - sqlBuilder.append(" AND ("); - //今天提交或者没提交的 - sqlBuilder.append(String.format("po.submitTime is null OR %s ", todaySubmitSql)); - sqlBuilder.append("OR ("); - //今天之前提交的且回收状态处于待回收,部分回收;发货状态处于待发货,部分发货;归还状态处于未归还,部分归还,归还待确认; - sqlBuilder.append(String.format("%s AND (%s OR %s OR %s OR %s OR %s) ", beforeTodaySubmitSql,commitSql, deliverStatusSql, returnStatusSql, recyclingStatusSql, todaySql)); - sqlBuilder.append("))"); - } - private boolean showForeignTousseApplication() { SupplyRoomConfig sysConfig = supplyRoomConfigManager.getSystemParamsObj(); Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsTemplateApplicationView.js =================================================================== diff -u -r16563 -r16585 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsTemplateApplicationView.js (.../goodsTemplateApplicationView.js) (revision 16563) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsTemplateApplicationView.js (.../goodsTemplateApplicationView.js) (revision 16585) @@ -3401,7 +3401,6 @@ fieldLabel: '开始日期', name: 'startDate', format: sstsConfig.timeSearchFmt || 'Y-m-d', - name: 'startDate', id: 'startDate', readOnly: false, editable: false, @@ -3445,6 +3444,11 @@ tbar2.push({text: '按科室分组过滤:'}); tbar2.push(searchComboConfig.departmentGroupCombo); } + if (sstsConfig.isShowTousseGroup){ + tbar2.push({text: '按器械包分组:'}); + tbar2.push(searchComboConfig.tousseGroupCombo); + } + return tbar2; } @@ -3610,41 +3614,92 @@ * @returns */ function createDeptGroupCombo() { - var deptGroupStore = new Ext.data.Store({ + var deptGroupStoreConfig = { + url : WWWROOT + '/disinfectSystem/baseData/departmentGroupAction!loadDeptGroup.do', + model : [ + {name: 'departCodes', mapping: 'valueField'}, + {name: 'name', mapping: 'displayField'} + ] + } + return createCombo({ + fieldLabel: '按科室分组过滤', + displayField: 'name', + valueField: 'departCodes', + storeConfig : deptGroupStoreConfig, + width : 200, + listeners: { + select: function (combo, record, index) { + var deptGroupId = record.get('departCodes'); + reloadConditionPara(deptGroupId, 'parm_s_departCodes'); + } + } + }); +} + +/** + * 创建按器械包分组下拉选项 + * @returns + */ +function createTousseGroupCombo() { + var touseGroupStoreConfig = { + url : WWWROOT + '/disinfectSystem/baseData/tousseGroupAction!loadAllTousseGroupStore.do', + model : [ + {name: 'id', mapping: 'valueField'}, + {name: 'tousseGroupName', mapping: 'displayField'} + ] + } + return createCombo({ + fieldLabel: '按器械包分组', + displayField: 'tousseGroupName', + valueField: 'id', + storeConfig : touseGroupStoreConfig, + listeners: { + select: function (combo, record, index) { + var tousseGroupId = record.get('id'); + reloadConditionPara(tousseGroupId, 'parm_s_tousseGroupId'); + } + } + }); +} + +/** + * 根据storeConfig的配置创建extJs2的store + * @param storeConfig 创建store的配置 + * @returns {Ext.data.Store} + */ +function createStore(storeConfig) { + return new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ - url: WWWROOT + '/disinfectSystem/baseData/departmentGroupAction!loadDeptGroup.do', + url: storeConfig.url, method: 'POST' }), reader: new Ext.data.JsonReader({ root: 'data', totalProperty: 'totalCount' - }, [ - {name: 'departCodes', mapping: 'departCodes'}, - {name: 'name', mapping: 'name'} - ] + }, storeConfig.model ) }); +} - var departmentGroupCombo = { +/** + * 创建下拉选项统一方法 + * @param comboConfig 下拉选项的配置 + * @returns + */ +function createCombo(comboConfig) { + return { xtype: 'combo', - fieldLabel: '按科室分组过滤', - hidden: !sstsConfig.isShowDeptGroup, - store: deptGroupStore, - width: 200, + fieldLabel: comboConfig.fieldLabel, + store: createStore(comboConfig.storeConfig), + width: comboConfig.width || 100, triggerAction: 'all', - displayField: 'name', - valueField: 'departCodes', + displayField: comboConfig.displayField, + valueField: comboConfig.valueField, forceSelection: true, value: '全部', editable: false, - listeners: { - select: function (combo, record, index) { - var deptGroupId = record.get('departCodes'); - reloadConditionPara(deptGroupId, 'parm_s_departCodes'); - } - } + listeners: comboConfig.listeners }; - return departmentGroupCombo; } Ext.onReady(function() { @@ -3838,15 +3893,14 @@ } }; - var departmentGroupCombo = createDeptGroupCombo(); var isSupplyRoomUser = validateIsSupplyRoomUser(); //搜索的tbar - var searchTbar = createSearchTbar({ quickScreenCombo : quickScreenCombo, - departmentGroupCombo : departmentGroupCombo + departmentGroupCombo : createDeptGroupCombo(), + tousseGroupCombo : createTousseGroupCombo() }); //操作的tbar Index: ssts-web/src/main/webapp/disinfectsystem/config/gdsy/config.js =================================================================== diff -u -r16525 -r16585 --- ssts-web/src/main/webapp/disinfectsystem/config/gdsy/config.js (.../config.js) (revision 16525) +++ ssts-web/src/main/webapp/disinfectsystem/config/gdsy/config.js (.../config.js) (revision 16585) @@ -137,5 +137,7 @@ ,['手术预约申请单', '手术预约申请单'] ], //是否显示科室分组选择框 - isShowDeptGroup : true + isShowDeptGroup : true, + //是否显示按器械包分组选择框 + isShowTousseGroup : true } \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.jsp =================================================================== diff -u -r16517 -r16585 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.jsp (.../goodsApplicationView.jsp) (revision 16517) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.jsp (.../goodsApplicationView.jsp) (revision 16585) @@ -151,6 +151,7 @@ + Index: forgon-tools/src/main/java/com/forgon/tools/util/ExtJsUtil.java =================================================================== diff -u -r15116 -r16585 --- forgon-tools/src/main/java/com/forgon/tools/util/ExtJsUtil.java (.../ExtJsUtil.java) (revision 15116) +++ forgon-tools/src/main/java/com/forgon/tools/util/ExtJsUtil.java (.../ExtJsUtil.java) (revision 16585) @@ -1,8 +1,10 @@ package com.forgon.tools.util; +import org.apache.commons.collections.map.HashedMap; import org.springframework.util.CollectionUtils; import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -27,4 +29,31 @@ parameterMap.put("grid_search_query", queryKey); } } + + + /** + * 创建下拉框的key和value + * (页面store中的reader的mapping要对应valueField和displayField) + * + * @param valueField 下拉框的值 + * @param displayField 下拉框显示的值 + * @return + */ + public static Map createSelect(String valueField, String displayField) { + Map map = new HashedMap(); + map.put("valueField", valueField); + map.put("displayField", displayField); + return map; + } + + /** + * 创建第一个下拉选项 + * + * @return + */ + public static List> buildFirstSelect() { + List> list = new LinkedList<>(); + list.add(createSelect("all", "全部")); + return list; + } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/tousseGroup/service/TousseGroupManager.java =================================================================== diff -u -r16316 -r16585 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/tousseGroup/service/TousseGroupManager.java (.../TousseGroupManager.java) (revision 16316) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/tousseGroup/service/TousseGroupManager.java (.../TousseGroupManager.java) (revision 16585) @@ -1,6 +1,7 @@ package com.forgon.disinfectsystem.basedatamanager.tousseGroup.service; import java.util.List; +import java.util.Map; import com.forgon.disinfectsystem.entity.basedatamanager.tousseGroup.TousseGroup; import com.forgon.tools.hibernate.BasePoManager; @@ -16,4 +17,10 @@ public boolean verifyTousseGroup(String id, String tousseGroupName); public List findAllTousseGroup(); + + /** + * 按器械包分组的数据源 + * @return + */ + List> loadAllTousseGroupStore(); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/tousseGroup/service/TousseGroupManagerImpl.java =================================================================== diff -u -r16316 -r16585 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/tousseGroup/service/TousseGroupManagerImpl.java (.../TousseGroupManagerImpl.java) (revision 16316) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/tousseGroup/service/TousseGroupManagerImpl.java (.../TousseGroupManagerImpl.java) (revision 16585) @@ -1,7 +1,12 @@ package com.forgon.disinfectsystem.basedatamanager.tousseGroup.service; +import java.util.LinkedList; import java.util.List; +import java.util.Map; +import com.forgon.disinfectsystem.entity.recycledepartmentgroup.DepartmentGroup; +import com.forgon.tools.util.ExtJsUtil; +import org.apache.commons.collections.map.HashedMap; import org.apache.commons.lang.StringUtils; import com.forgon.disinfectsystem.entity.basedatamanager.tousseGroup.TousseGroup; @@ -32,6 +37,11 @@ return objectDao.findAllObjects(TousseGroup.class.getSimpleName()); } + @Override + public List> loadAllTousseGroupStore() { + return this.buildTousseGroupRe(this.findAllTousseGroup()); + } + public void deleteTousseGroupByIDs(String ids){ if(StringUtils.isBlank(ids)){ throw new RuntimeException("要删除的分组不能为空!"); @@ -56,4 +66,18 @@ } } + + /** + * 重新构造返回页面的结果 + * @param lists 器械包的结果集 + * @return + */ + private List> buildTousseGroupRe(List lists){ + List> groupList = ExtJsUtil.buildFirstSelect(); + for (TousseGroup list : lists) { + groupList.add(ExtJsUtil.createSelect(list.getId().toString(), list.getTousseGroupName())); + } + return groupList; + } + } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManagerImpl.java =================================================================== diff -u -r16517 -r16585 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManagerImpl.java (.../DepartmentGroupManagerImpl.java) (revision 16517) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManagerImpl.java (.../DepartmentGroupManagerImpl.java) (revision 16585) @@ -4,6 +4,7 @@ import java.util.List; import java.util.Map; +import com.forgon.tools.util.ExtJsUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -55,24 +56,11 @@ * @return */ private List> buildGroupRe(List groups){ - List> groupList = new LinkedList<>(); - groupList.add(this.createSelect("all", "全部")); + List> groupList = ExtJsUtil.buildFirstSelect(); for (DepartmentGroup group : groups) { - groupList.add(this.createSelect(group.getDepartCodes(), group.getName())); + groupList.add(ExtJsUtil.createSelect(group.getDepartCodes(), group.getName())); } return groupList; } - /** - * 创建下拉框的key和value - * - * @return - */ - private Map createSelect(String key, String val) { - Map map = new HashedMap(); - map.put("departCodes", key); - map.put("name", val); - return map; - } - }