Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/ReAppTableSqlHandler.java =================================================================== diff -u -r22079 -r22523 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/ReAppTableSqlHandler.java (.../ReAppTableSqlHandler.java) (revision 22079) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/ReAppTableSqlHandler.java (.../ReAppTableSqlHandler.java) (revision 22523) @@ -1,16 +1,22 @@ package com.forgon.disinfectsystem.recyclingapplication.service; +import java.util.ArrayList; import java.util.Calendar; import java.util.Date; +import java.util.List; import java.util.Map; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; import com.forgon.Constants; import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; +import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.tools.SqlBuilder; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.string.StringTools; /** * Created by zhonghaowen on 2017/1/4. @@ -52,9 +58,61 @@ this.createTousseGroupFilterSql(sqlWhereParamMap, sqlBuilder); this.createTousseTypeFilterSql(sqlWhereParamMap, sqlBuilder); this.createApplyTypeFilterSql(sqlWhereParamMap, sqlBuilder); + this.createApplyDepartmentFilterSql(sqlWhereParamMap, sqlBuilder); + this.createSettleAccountsDepartmentFilterSql(sqlWhereParamMap, sqlBuilder); + this.createGoodsFilterSql(sqlWhereParamMap, sqlBuilder); } /** + * 创建按物品过滤 + * @param sqlWhereParamMap 页面的参数 + * @param sqlBuilder 原来的sql + */ + private void createGoodsFilterSql(Map sqlWhereParamMap, + StringBuilder sqlBuilder) { + String goodsType = sqlWhereParamMap.get("goodsType"); + String goodsId = sqlWhereParamMap.get("goodsId"); + + if (StringUtils.isNotBlank(goodsType) && DatabaseUtil.isPoIdValid(goodsId)) { + String idSql = ""; + if (TousseItem.TYPE_DIPOSABLE_GOODS.equals(goodsType)) { + idSql = String.format("ti.disposableGoodsId=%s", goodsId); + } else { + idSql = String.format("ti.tousseDefinitionId=%s", goodsId); + } + String sql = String.format(" and po.id in(select ti.invoicePlan.id from TousseItem ti where %s) ", idSql); + sqlBuilder.append(sql); + } + + } + + /** + * 创建按申请科室过滤 + * @param sqlWhereParamMap 页面的参数 + * @param sqlBuilder 原来的sql + */ + private void createApplyDepartmentFilterSql( + Map sqlWhereParamMap, StringBuilder sqlBuilder) { + String applyDepartmentCode = sqlWhereParamMap.get("applyDepartmentCode"); + if (StringUtils.isNotBlank(applyDepartmentCode)) { + sqlBuilder.append(String.format(" and departCoding='%s' ", applyDepartmentCode)); + } + } + + /** + * 创建按结算科室过滤 + * @param sqlWhereParamMap 页面的参数 + * @param sqlBuilder 原来的sql + */ + private void createSettleAccountsDepartmentFilterSql( + Map sqlWhereParamMap, StringBuilder sqlBuilder) { + String settleAccountsDepartmentCode = sqlWhereParamMap.get("settleAccountsDepartmentCode"); + if (StringUtils.isNotBlank(settleAccountsDepartmentCode)) { + sqlBuilder.append(String.format(" and settleAccountsDepartCoding='%s' ", settleAccountsDepartmentCode)); + } + } + + /** * 创建按器械包类型过滤 * * @param sqlWhereParamMap 页面的参数 @@ -98,21 +156,64 @@ } /** - * 查看申请单时过滤未完成或者已完成状态 - * + * 状态筛选过滤. * @param sqlBuilder 原来的sql * @param sqlWhereParamMap 页面的参数 */ private 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); - } + if (StringUtils.isNotBlank(status) && status.indexOf("全部") == -1) { + String statusFilterSql = ""; + List list = new ArrayList(); + + //1、未完成 + if (status.indexOf("未完成") != -1) { + list.add(createUnFinishFilterSql()); + } + + //2、已完成 + if (status.indexOf("已完成") != -1) { + list.add(createFinishFilterSql()); + } + + //3、部分回收 + if (status.indexOf(InvoicePlan.RECYCLINGSTATUS_PARTRECYCLE) != -1) { + list.add(String.format("(recyclingStatus='%s')", InvoicePlan.RECYCLINGSTATUS_PARTRECYCLE)); + } + + //4、已回收 + if (status.indexOf(InvoicePlan.RECYCLINGSTATUS_RECYCLED) != -1) { + list.add(String.format("(recyclingStatus='%s')", InvoicePlan.RECYCLINGSTATUS_RECYCLED)); + } + + //5、部分发货 + if (status.indexOf(InvoicePlan.DELIVERSTATUS_PARTDELIVERED) != -1) { + list.add(String.format("(deliverStatus='%s')", InvoicePlan.DELIVERSTATUS_PARTDELIVERED)); + } + + //6、已发货 + if (status.indexOf(InvoicePlan.DELIVERSTATUS_DELIVERED) != -1) { + list.add(String.format("(deliverStatus='%s')", InvoicePlan.DELIVERSTATUS_DELIVERED)); + } + + //7、已终止 + if (status.indexOf(InvoicePlan.STATUS_END) != -1) { + list.add(String.format("(endStatus='%s')", InvoicePlan.STATUS_END)); + } + + if (CollectionUtils.isNotEmpty(list)) { + for (String string : list) { + if (StringTools.isBlank(statusFilterSql)) { + statusFilterSql = string; + } else { + statusFilterSql = String.format(" %s or %s ", statusFilterSql, string); + } + } + if (StringTools.isNotBlank(statusFilterSql)) { + statusFilterSql = String.format(" and (%s) ", statusFilterSql); + sqlBuilder.append(statusFilterSql); + } + } } } @@ -166,74 +267,42 @@ /** - * 创建未完成条件过滤 - * (新加发货状态为null是也属于未完成,处理临床添加外部代理单而供应室未装配时的情况) - * + * 创建未完成条件过滤. + *
  • 回收状态:待回收,部分回收(针对哪一些不需要发货的)
  • + *
  • 发货状态:待发货,部分发货,(空:临床添加外部代理单而供应室未装配时的情况发货状态为空)
  • + *
  • 归还状态:未归还,部分归还,归还待确认
  • + *
  • 提交状态:committedStatus等于0
  • * @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)); + private String createUnFinishFilterSql() { + //回收状态:待回收,部分回收(针对哪一些不需要发货的) + String recyclingStatusSql = SqlBuilder.createStatus("recyclingStatus", InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE, InvoicePlan.RECYCLINGSTATUS_PARTRECYCLE); + recyclingStatusSql = String.format("((deliverStatus='' or deliverStatus is null) and %s)", recyclingStatusSql); + + //发货状态:待发货,部分发货,(空:临床添加外部代理单而供应室未装配时的情况发货状态为空) + String deliverStatusSql = SqlBuilder.createStatus("deliverStatus", InvoicePlan.DELIVERSTATUS_AWAITDELIVER, InvoicePlan.DELIVERSTATUS_PARTDELIVERED); + deliverStatusSql = String.format("(((deliverStatus='' or deliverStatus is null) and type='%s') or %s)", InvoicePlan.TYPE_FOREIGNPROXYDISINFECTION, deliverStatusSql); + + //归还状态:未归还,部分归还,归还待确认 + 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 "; + return String.format(" (%s or %s or %s or %s) ", recyclingStatusSql, deliverStatusSql, returnStatusSql, commitSql); } /** - * 创建已完成条件过滤 - * + * 创建已完成条件过滤(已终止、已发货、不发货的单只要已回收). * @param sqlBuilder 原来的sql */ - private void createFinishFilterSql(StringBuilder sqlBuilder) { - //已终止、已终止、不发货的单只要已回收即可 - String finishSql = String.format(" AND (endStatus='%s' " - + "or deliverStatus='%s' " - + "or ((deliverStatus='' or deliverStatus is null) and recyclingStatus='%s') ) ", + private String createFinishFilterSql() { + String finishSql = String.format(" (endStatus='%s' or deliverStatus='%s' or ((deliverStatus='' or deliverStatus is null) and recyclingStatus='%s')) ", InvoicePlan.STATUS_END, InvoicePlan.DELIVERSTATUS_DELIVERED, InvoicePlan.RECYCLINGSTATUS_RECYCLED); - sqlBuilder.append(finishSql); + return finishSql; } /** - * 创建申请单申请时间过滤条件(近三天、近一周、近三个月”) - * - * @param sqlBuilder 原来的sql - * @param showSubmitTime 前端传过来的条件 - * @deprecated 此功能暂时没有地方用到 - */ - @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)); - } - } - - - /** * 省医GDSRMYY-100需求: * 创建临床科室的科室申领过滤的sql * 今天提交或者没提交的,今天之前提交的且回收状态处于待回收,部分回收;发货状态处于待发货,部分发货;归还状态处于未归还,部分归还,归还待确认; Index: ssts-web/src/main/webapp/disinfectsystem/config/gdsy/config.js =================================================================== diff -u -r22443 -r22523 --- ssts-web/src/main/webapp/disinfectsystem/config/gdsy/config.js (.../config.js) (revision 22443) +++ ssts-web/src/main/webapp/disinfectsystem/config/gdsy/config.js (.../config.js) (revision 22523) @@ -24,7 +24,12 @@ // 申请界面是否隐藏器械包价格 hideToussePriceColumn : false, // 申请界面是否隐藏一次性物品价格 - hideDisposablePriceColumn : false, + hideDisposablePriceColumn : false, + //科室申领状态筛选过滤条件的项(items:需要筛选的项,defaultValue:筛选的默认值) + quickQueryForApply: { + items: [['全部'],['未完成'],['已完成']], + defaultValue: '未完成' + }, // 条码类型:1:一维码, 2:二维码 barcodeType : 1, // 申请器械包时是否自动归还待归还物品 Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.jsp =================================================================== diff -u -r22371 -r22523 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.jsp (.../goodsApplicationView.jsp) (revision 22371) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.jsp (.../goodsApplicationView.jsp) (revision 22523) @@ -156,12 +156,16 @@ - - - + + + - + + + + + @@ -171,6 +175,17 @@