Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/dwr/table/InvoiceTableManager.java =================================================================== diff -u -r20103 -r21103 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/dwr/table/InvoiceTableManager.java (.../InvoiceTableManager.java) (revision 20103) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/dwr/table/InvoiceTableManager.java (.../InvoiceTableManager.java) (revision 21103) @@ -128,6 +128,7 @@ .get("recyclingApplicantID"); String invoiceType = sqlWhereParamMap.get("invoiceType"); String selectedTousseType = sqlWhereParamMap.get("selectedTousseType"); + String selectedDisposableGoodsType = sqlWhereParamMap.get("disposableGoodsType"); String applyType = sqlWhereParamMap.get("applyType"); String selectedDepartCodes = sqlWhereParamMap.get("selectedDepartCodes"); // String sql = "where po.invoicePlan is not null"; @@ -160,6 +161,11 @@ String[] selectedTousseTypeArr = selectedTousseType.split(","); sql += String.format(" and po.id in(select i.invoiceID from InvoiceItem i where %s) ", SqlUtils.getStringFieldInCollectionsPredicate("i.tousseType", Arrays.asList(selectedTousseTypeArr))); } + //按一次性物品类型过滤 + if (StringUtils.isNotBlank(selectedDisposableGoodsType)) { + String[] selectedDisposableGoodsTypeArr = selectedDisposableGoodsType.split(","); + sql += String.format(" and po.id in(select i.invoiceID from InvoiceItem i where %s) ", SqlUtils.getStringFieldInCollectionsPredicate("i.disposableGoodsType2", Arrays.asList(selectedDisposableGoodsTypeArr))); + } //按申请单类型过滤 if (StringUtils.isNotBlank(applyType) && applyType.indexOf("全部") == -1) { Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r21092 -r21103 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 21092) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 21103) @@ -425,6 +425,28 @@ invoicePlans.removeAll(delList); } + private boolean filterInvoicePlanByDisposableGoodsType(InvoicePlan invoicePlan,Set disposableGoodsTypeSet){ + if(disposableGoodsTypeSet.isEmpty()){ + return true; + } + + List items = invoicePlan.getApplicationItems(); + if(items == null || items.isEmpty()){ + return false; + } + List delItems = new LinkedList(); + for (TousseItem tousseItem : items) { + // 不发货 + if(tousseItem.isDisposableGoods() && !disposableGoodsTypeSet.contains(tousseItem.getDisposableGoodsType())){ + delItems.add(tousseItem); + continue; + } + } + if(items.size() == delItems.size()){ + return false; + } + return true; + } /** * 按条件查询科室的待发货以及部分发货的发货计划单,不进行分组统计 @@ -436,7 +458,7 @@ */ @Override public JSONArray getInvoicePlansByOrgAndTousseType( - Collection departCodes, String applyDate, String tousseType) { + Collection departCodes, String applyDate, String tousseType,String disposableGoodsType) { boolean hideUnprintedDisposableGoodsInvoicePlan = CssdUtils.getSystemSetConfigByNameBool("hideUnprintedDisposableGoodsInvoicePlan"); //查询发货计划 Collection invoicePlans = getInvoicePlanListByOrgUnitCodingsAndTousseTypeOnlyForInvoicePlanList( @@ -446,6 +468,7 @@ invoicePlanTemp.put("id",""); invoicePlanTemp.put("typeAndserialNumber","全部"); invoicePlanArray.add(invoicePlanTemp); + Set disposableGoodsTypeSet = buildDisposableGoodsTypeSet(disposableGoodsType); if(CollectionUtils.isNotEmpty(invoicePlans)){ for(InvoicePlan invoicePlan : invoicePlans){ if (!this.checkIsShowNoConBorrow(invoicePlan.getType(),invoicePlan.getBorrowConfirmStatus())){ @@ -454,6 +477,9 @@ if(hideUnprintedDisposableGoodsInvoicePlan && (invoicePlan.isDiposableGoodsAppliaction() && (invoicePlan.getPrinted() != InvoicePlan.PRINT_STATUS_PRINTED))){ continue; } + if(!filterInvoicePlanByDisposableGoodsType(invoicePlan, disposableGoodsTypeSet)){ + continue; + } invoicePlanTemp = new JSONObject(); invoicePlanTemp.put("id",String.valueOf(invoicePlan.getId())); invoicePlanTemp.put("typeAndserialNumber",invoicePlan.getSerialNumber() + " " + invoicePlan.getType()); Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/InvoicePlanAction.java =================================================================== diff -u -r21092 -r21103 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/InvoicePlanAction.java (.../InvoicePlanAction.java) (revision 21092) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/InvoicePlanAction.java (.../InvoicePlanAction.java) (revision 21103) @@ -419,9 +419,16 @@ // TODO Auto-generated catch block e1.printStackTrace(); } + String disposableGoodsType = null; + try { + disposableGoodsType = URLDecoder.decode(StrutsParamUtils.getPraramValue("disposableGoodsType", ""),"utf-8"); + } catch (UnsupportedEncodingException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } JSONArray jsonArray = invoicePlanManager - .getInvoicePlansByOrgAndTousseType(Arrays.asList(departCodes),applyDate ,tousseType); + .getInvoicePlansByOrgAndTousseType(Arrays.asList(departCodes),applyDate ,tousseType,disposableGoodsType); StrutsResponseUtils.output(jsonArray); } Index: ssts-web/src/main/webapp/disinfectsystem/invoice/invoiceView.js =================================================================== diff -u -r20103 -r21103 --- ssts-web/src/main/webapp/disinfectsystem/invoice/invoiceView.js (.../invoiceView.js) (revision 20103) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/invoiceView.js (.../invoiceView.js) (revision 21103) @@ -115,7 +115,10 @@ function addReturnTousseByInvoice(invoiceId){ document.location.href = WWWROOT+'/disinfectsystem/returnGoodsRecord/returnTousseByInvoice.jsp?invoiceId='+invoiceId; } - +var diposableGooodsStore = new Ext.data.SimpleStore({ + fields : [ 'typeName' ], + url : WWWROOT + '/disinfectSystem/diposableGoodsAction!getDiposableGoodsType.do' +}); // 发货时扫描的器械包 var tousseInstanceStore = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ @@ -1684,6 +1687,10 @@ // path : WWWROOT + '/disinfectsystem/invoice/', // expires : new Date(new Date().getTime() + 2592000000) // })); + diposableGooodsStore.on('load', function(){ + Ext.getCmp('disposableGoodsType').selectAll(); + }); + diposableGooodsStore.load(); var departGroupStore = new Ext.data.SimpleStore({ fields : ['id', 'shift','departCode' ], url : WWWROOT + '/disinfectSystem/invoiceDepartmentAction!loadDepartGroup.do' @@ -1873,7 +1880,39 @@ } }, anchor : '95%' - },{ + }, { + text : '一次性物品类型:', + hidden : !sstsConfig.invoicePlanExtractedView_showDisposableGoodsType + },{ + xtype : 'multiSelect', + id : 'disposableGoodsType', + name : 'disposableGoodsType', + hidden : !sstsConfig.invoicePlanExtractedView_showDisposableGoodsType, + valueField : 'typeName', + displayField : 'typeName', + allowBlank : true, + editable : false, + fieldLabel:'类型', + width : 150, + emptyText:'请选择物品类型', + mode:'local', + store : diposableGooodsStore, +// forceSelection : true, + triggerAction : 'all', + listeners : { + select : function(combo, record, index){ + grid.dwrReload(); + }, + beforeselect:function(combo, record, index){ + var c = record.get(combo.checkField); + if(combo.getCheckedCount() <= 1 && c){ + return false; + } + return true; + } + }, + anchor : '95%' + },{ text : '申请单类型:', hidden: !sstsConfig.accordingToApplyTypeFilter },{ @@ -2102,16 +2141,19 @@ getGridParameterMap: function(){ var selectedTousseTypeCmp = Ext.getCmp('tousseType'); var invoiceDepartGroupsCmp = Ext.getCmp('invoiceDepartGroup'); - if(!selectedTousseTypeCmp || !invoiceDepartGroupsCmp){ + var disposableGoodsTypeCmp = Ext.getCmp('disposableGoodsType'); + if(!selectedTousseTypeCmp || !invoiceDepartGroupsCmp || !disposableGoodsTypeCmp){ return null; } var selectedTousseType = selectedTousseTypeCmp.getValue(); var invoiceDepartGroups = invoiceDepartGroupsCmp.getValue(); + var selectedDisposableGoodsType = disposableGoodsTypeCmp.getValue(); // alert(selectedTousseType) // alert(invoiceDepartGroups) var obj = { 'parm_s_selectedTousseType': [selectedTousseType], - 'parm_s_selectedDepartCodes': [invoiceDepartGroups] + 'parm_s_selectedDepartCodes': [invoiceDepartGroups], + 'parm_s_disposableGoodsType': [selectedDisposableGoodsType] }; return obj; } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoiceItem.java =================================================================== diff -u -r20831 -r21103 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoiceItem.java (.../InvoiceItem.java) (revision 20831) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoiceItem.java (.../InvoiceItem.java) (revision 21103) @@ -67,6 +67,10 @@ private Double settlementDiscountPrice = 0.0; private String tousseType; //发货物品类型 器械包、一次性物品、消毒物品等等 + /** + * 一次性物品类型 + */ + private String disposableGoodsType2; private Long invoiceID;// 发货单ID @@ -256,6 +260,14 @@ this.tousseType = tousseType; } + public String getDisposableGoodsType2() { + return disposableGoodsType2; + } + + public void setDisposableGoodsType2(String disposableGoodsType2) { + this.disposableGoodsType2 = disposableGoodsType2; + } + public Long getInvoiceID() { return invoiceID; } Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r21092 -r21103 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 21092) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 21103) @@ -2993,6 +2993,7 @@ .getDisposableGoodsStockID()); invoiceItem .setDisposableGoodsType(DisposableGoods.TYPE_DIPOSABLEGOODS); + invoiceItem.setDisposableGoodsType2(diposableGoods.getType()); // invoiceItem.setInvoiceID(invoice.getId()); if(invoicePlan != null){ invoiceItem.setInvoicePlanID(invoicePlan.getId()); @@ -6182,6 +6183,7 @@ invoiceItem.setDiposable(InvoiceItem.DIPOSABLE_YES); invoiceItem .setDisposableGoodsType(DisposableGoods.TYPE_EXPENSIVEDIPOSABLEGOODS); + invoiceItem.setDisposableGoodsType2(disposableGoods.getType()); invoiceItem.setTousseType(applicationItem.getTousseType()); invoiceItem.setTousseName(applicationGoodsName); sendOutBarcodeAmountMap.remove(expensiveDisposablegoods Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java =================================================================== diff -u -r21092 -r21103 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 21092) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 21103) @@ -56,7 +56,7 @@ * @return Collection> 里面的List集合由两位元素组成,发货单的id用申请单序列号+类型 */ public JSONArray getInvoicePlansByOrgAndTousseType( - Collection departCodes, String applyDate, String tousseType); + Collection departCodes, String applyDate, String tousseType,String disposableGoodsType); public int getInvoicePlanAmount(String sql); Index: ssts-web/src/main/webapp/dataUpdater/sqls/4.9.2_4.9.3.sql =================================================================== diff -u -r21088 -r21103 --- ssts-web/src/main/webapp/dataUpdater/sqls/4.9.2_4.9.3.sql (.../4.9.2_4.9.3.sql) (revision 21088) +++ ssts-web/src/main/webapp/dataUpdater/sqls/4.9.2_4.9.3.sql (.../4.9.2_4.9.3.sql) (revision 21103) @@ -1 +1,2 @@ -update TousseItem set disposableGoodsType=(select dg.type from DisposableGoods dg where dg.id=disposableGoodsId); \ No newline at end of file +update TousseItem set disposableGoodsType=(select dg.type from DisposableGoods dg where dg.id=disposableGoodsId); +update InvoiceItem set disposableGoodsType2=(select dg.type from DisposableGoods dg where dg.id=InvoiceItem.disposableGoodsId) where disposableGoodsId is not null; \ No newline at end of file