Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/recycledepartmentgroup/DepartmentGroup.java =================================================================== diff -u -r19034 -r20419 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/recycledepartmentgroup/DepartmentGroup.java (.../DepartmentGroup.java) (revision 19034) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/recycledepartmentgroup/DepartmentGroup.java (.../DepartmentGroup.java) (revision 20419) @@ -18,7 +18,7 @@ /*** - * 部门分组 + * 部门分组(回收科室分组) * @author wangyi */ Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/DisposableGoods.java =================================================================== diff -u -r20388 -r20419 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/DisposableGoods.java (.../DisposableGoods.java) (revision 20388) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/DisposableGoods.java (.../DisposableGoods.java) (revision 20419) @@ -191,7 +191,7 @@ private String inventorySerialNumber; /** - * 物品类型 + * 物品类型(目前有“普通物品”和“高值耗材”两种) */ private String goodsType = TYPE_DIPOSABLEGOODS; Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r20041 -r20419 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 20041) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 20419) @@ -8605,16 +8605,19 @@ String goodsType = StringTools.defaultIfEmpty(requestParams.get("goodsType"),"全部"); String disposableGoodsType = StringTools.defaultIfEmpty(requestParams.get("disposableGoodsType"),"全部"); String expensiveGoodsType = StringTools.defaultIfEmpty(requestParams.get("expensiveGoodsType"),"全部"); + String tousseGroupName = StringTools.defaultIfEmpty(requestParams.get("tousseGroupName"),"全部"); + String invoiceDepartGroup = StringTools.defaultIfEmpty(requestParams.get("invoiceDepartGroup"),"all"); + String tousseTypeSql = " 1=1 "; String disposableTypeSql = " 1=1 "; String materialTypeSql = " 1=1 "; if(StringTools.equals("一次性物品", goodsType)){ tousseTypeSql = " 1=2 "; + materialTypeSql = " 1=2 "; if(!StringTools.equals("全部", disposableGoodsType) && !StringTools.isBlank(disposableGoodsType)){ String disposableGoodsIdSql = String.format(" select id from DisposableGoods where type='%s' ", disposableGoodsType); disposableTypeSql = String.format(" (bo.disposableGoodsID in(%s)) ", disposableGoodsIdSql); } - materialTypeSql = " 1=2 "; }else if(StringTools.equals("器械材料", goodsType)){ tousseTypeSql = " 1=2 "; disposableTypeSql = " 1=2 "; @@ -8671,36 +8674,42 @@ }else if(dbConnection.isSqlServer()){ remarkCondition += " or len(po.remark) = 0)"; } - } + } } - //判断备注条件 + //“住院号”过滤条件 String hospitalNumberSql = ""; if(StringUtils.isNotBlank(hospitalNumber)){ hospitalNumberSql = " and po.hospitalNumber = '" + hospitalNumber + "' "; } + //“器械包分组”过滤条件 + String tousseGroupNameSql = ""; + if(StringUtils.isNotBlank(tousseGroupName) && !Constants.STR_ALL.equals(tousseGroupName)){ + tousseGroupNameSql = " and td.tousseGroupName = '" + tousseGroupName + "' "; + } + String tousseMaterialAmount = " select ctd.id, sum(cmi.count) as mcount from TousseDefinition ctd inner join MaterialInstance cmi on ctd.id = cmi.tousse_id group by ctd.id "; String cumstomTousseAmount = showCustonTousseAmount?" 1 ":" m.mcount "; String tousseAmount = " case td.toussetype when '"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"' then " + cumstomTousseAmount + " when '"+TousseDefinition.PACKAGE_TYPE_DISINFECTION+"' then case when m.mcount is null then 1 else m.mcount end else 1 end "; String sql = " "; - String tousseSql = "select '器械包' as type,po.orgUnitCoding,po.settleAccountsDepart,po.depart,do.barcode,bo.tousseName as name," + String tousseSql = "select '器械包' as type,po.orgUnitCoding,po.settleAccountsDepart,po.departCoding,po.depart,do.barcode,bo.tousseName as name," + tousseAmount + " as amount,bo.price as totalPrice,po.sendTime,po.applicant,'' as batch,'' as externalCode,po.remark as remark,bo.sterileEndTime as sterileEndTime," + "bo.sterilizerName as sterilizerName,bo.sterileFrequency as sterileFrequency,po.hospitalNumber as hospitalNumber,po.sender,po.assistantSender,bo.validUntil as expDate from " + Invoice.class.getSimpleName() + " po inner join " + TousseInstance.class.getSimpleName() + " bo on po.id = bo.invoice_id " + " inner join " + BarcodeDevice.class.getSimpleName()+ " do on bo.id = do.id" + " inner join " + TousseDefinition.class.getSimpleName() + " td on bo.tousseDefinition_id=td.id " + " left join (" + tousseMaterialAmount + " ) m on m.id = td.id" - +" where 1=1 " + remarkCondition + hospitalNumberSql + " and " + tousseTypeSql; - String diposableSql = "select '一次性物品' as type,po.orgUnitCoding, po.settleAccountsDepart,po.depart,case when bo.expensiveDGBarcode is null then bo.barcode else bo.expensiveDGBarcode end barcode,bo.name,bo.amount,bo.price*bo.amount as totalPrice," + +" where 1=1 " + tousseGroupNameSql + remarkCondition + hospitalNumberSql + " and " + tousseTypeSql; + String diposableSql = "select '一次性物品' as type,po.orgUnitCoding, po.settleAccountsDepart,po.departCoding,po.depart,case when bo.expensiveDGBarcode is null then bo.barcode else bo.expensiveDGBarcode end barcode,bo.name,bo.amount,bo.price*bo.amount as totalPrice," + "po.sendTime,po.applicant,bo.batch,dg.externalCode,po.remark as remark,'' as sterileEndTime,'' as sterilizerName,'' as sterileFrequency," + "po.hospitalNumber as hospitalNumber,po.sender,po.assistantSender,dgbs.expDate from " + Invoice.class.getSimpleName() + " po," + DiposableGoodsItem.class.getSimpleName()+" bo," + DisposableGoods.class.getSimpleName() + " dg,"+ DisposableGoodsBatchStock.class.getSimpleName() +" dgbs where po.id = bo.invoice_id and " + " bo.disposableGoodsBatchStockID=dgbs.id and " + "bo.disposableGoodsID = dg.id " + remarkCondition + hospitalNumberSql + " and " + disposableTypeSql; - String materialSql = "select '材料' as type,po.orgUnitCoding, po.settleAccountsDepart,po.depart,'' as barcode,bo.name as name,bo.amount,bo.price*bo.amount as totalPrice," + String materialSql = "select '材料' as type,po.orgUnitCoding, po.settleAccountsDepart,po.departCoding,po.depart,'' as barcode,bo.name as name,bo.amount,bo.price*bo.amount as totalPrice," + "po.sendTime,'' as applicant,'' as batch,dg.externalCode,po.remark as remark,'' as sterileEndTime,'' as sterilizerName,'' as sterileFrequency," + "'' as hospitalNumber,po.sender,'' as assistantSender,null as expDate from " + MaterialInvoice.class.getSimpleName() + " po inner join " + MaterialItem.class.getSimpleName() + " bo on po.id = bo.materialInvoice_id " @@ -8728,15 +8737,15 @@ } if (StringUtils.isNotBlank(goodsName)) { sql += " and m.name ='" + goodsName + "'"; -// if(isDisinfection){ -// sql += " and type <> '一次性物品'"; -// }else{ -// sql += " and m.name ='" + goodsName + "'"; -// } } if (StringUtils.isNotBlank(batchNumber)) { sql += " and m.batch = '" + batchNumber + "'"; } + //“科室分组”的过滤 + if (StringUtils.isNotBlank(invoiceDepartGroup) && !"all".equals(invoiceDepartGroup)) { + String[] invoiceDepartGroupArr = invoiceDepartGroup.split(";"); + sql += SqlUtils.get_InSql("m.departCoding", invoiceDepartGroupArr) + " "; + } String handleDeptCode = AcegiHelper.getLoginUser().getOrgUnitCodingFromSupplyRoomConfig(); sql += " and m.orgUnitCoding='" + handleDeptCode + "'"; sql += " order by m.settleAccountsDepart,m.externalCode desc "; Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceDepartmentAction.java =================================================================== diff -u -r12386 -r20419 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceDepartmentAction.java (.../InvoiceDepartmentAction.java) (revision 12386) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceDepartmentAction.java (.../InvoiceDepartmentAction.java) (revision 20419) @@ -19,6 +19,7 @@ import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceDepartment; import com.forgon.disinfectsystem.invoicemanager.service.InvoiceDepartmentManage; import com.forgon.tools.StrutsParamUtils; +import com.forgon.tools.StrutsResponseUtils; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.opensymphony.xwork2.ModelDriven; @@ -94,6 +95,14 @@ public void loadDepartGroup(){ List list = invoiceDepartmentManage.findAllInvoiceDepartment(); List> jsonList = new ArrayList>(); + String needAll = StrutsParamUtils.getPraramValue("needAll", "false"); + if (Boolean.valueOf(needAll)) { + List allFlag = new ArrayList(); + allFlag.add("all"); + allFlag.add("全部"); + allFlag.add("all"); + jsonList.add(allFlag); + } for(InvoiceDepartment i : list){ List invoiceDepartmentStr = new ArrayList(); invoiceDepartmentStr.add(i.getId().toString()); Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/invoiceQueryView.js =================================================================== diff -u -r17586 -r20419 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/invoiceQueryView.js (.../invoiceQueryView.js) (revision 17586) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/invoiceQueryView.js (.../invoiceQueryView.js) (revision 20419) @@ -16,6 +16,9 @@ goodsName = goodsName.replace('#','%23'); var batchNumber = Ext.getCmp('batchNumber').getValue(); var hospitalNumber = Ext.getCmp('hospitalNumber').getValue(); + var tousseGroupName = Ext.getCmp('tousseGroupName').getRawValue(); + var invoiceDepartGroup = Ext.getCmp('invoiceDepartGroup').getValue(); + //有无备注 var hasRemark = Ext.getCmp('hasRemark').getValue(); if(startDate == "" || endDate == ""){ @@ -58,15 +61,17 @@ + "&applicant=" + applicant + "&goodsName=" +goodsName + "&hasRemark=" +hasRemark + "&goodsType=" + goodsType + "&showCustonTousseAmount="+showCustonTousseAmount + "&disposableGoodsType=" + disposableGoodsType + "&expensiveGoodsType=" + expensiveGoodsType - + "&batchNumber=" + batchNumber + "&hospitalNumber=" + hospitalNumber,'thisIframe', '_self'); + + "&batchNumber=" + batchNumber + "&hospitalNumber=" + hospitalNumber + "&tousseGroupName=" + tousseGroupName + + "&invoiceDepartGroup=" + invoiceDepartGroup, 'thisIframe', '_self'); }else{ window.open(WWWROOT + "/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do?jasperreportName=invoiceItemsQuery_main_1.jasper&reportName=invoiceQuery&depart=" + departSearch+ "&settleDepartSearch=" + settleDepartSearch +"&startDate=" + startDate + "&endDate=" +endDate + "&applicant=" + applicant + "&goodsName=" +goodsName + "&hasRemark=" +hasRemark + "&goodsType=" + goodsType + "&showCustonTousseAmount="+showCustonTousseAmount + "&disposableGoodsType=" + disposableGoodsType + "&expensiveGoodsType=" + expensiveGoodsType - + "&batchNumber=" + batchNumber  + "&hospitalNumber=" + hospitalNumber,'thisIframe', '_self'); + + "&batchNumber=" + batchNumber  + "&hospitalNumber=" + hospitalNumber + "&tousseGroupName=" + tousseGroupName + + "&invoiceDepartGroup=" + invoiceDepartGroup, 'thisIframe', '_self'); } } @@ -423,7 +428,55 @@ editable:false, anchor : '90%' }] - }, { + },{ + columnWidth : .15, + layout : 'form', + items : [{ + xtype: 'combo', + store : new Ext.data.Store({ + proxy: new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectSystem/baseData/tousseGroupAction!loadAllTousseGroupStore.do', + method: 'POST' + }), + reader: new Ext.data.JsonReader({ + root: 'data', + totalProperty: 'totalCount' + }, [{name: 'id', mapping: 'valueField'}, + {name: 'tousseGroupName', mapping: 'displayField'}] + ) + }), + id: 'tousseGroupName', + fieldLabel: '器械包分组', + displayField: 'tousseGroupName', + valueField: 'id', + editable : false, + width : 150, + triggerAction: 'all', + listWidth: 200, +// mode: 'remote', + //这个要设置成false,不然多选鼠标离开之后,combo上面的值不会显示 + forceSelection : false + }] + },{ + columnWidth : .15, + layout : 'form', + items : [{ + xtype : 'combo', + id : 'invoiceDepartGroup', + name : 'invoiceDepartGroup', + valueField : 'departCode', + displayField : 'shift', + editable : false, + fieldLabel:'科室分组', + width : 120, + store : new Ext.data.SimpleStore({ + fields : ['id', 'shift','departCode'], + url : WWWROOT + '/disinfectSystem/invoiceDepartmentAction!loadDepartGroup.do?needAll=true' + }), + forceSelection : true, + triggerAction : 'all' + }] + }, { columnWidth : .1, layout : 'form', items : [{