Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r35404 -r35408 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35404) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35408) @@ -3586,6 +3586,22 @@ return handleDeptCodeSql; } /** + * 明细核算月报和核算月报用的过滤供应室的语句 + * @param field 过滤的字段 + * @param isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser 登录用户是否供应室用户 或者 是否是高值耗材处理科室用户 是才过滤供应室 + * @param orgUnitCoding 登录用户所属供应室编码 + * @return + */ + private String getHandleDeptCodeSql(String field, boolean isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, String orgUnitCoding){ + String handleDeptCodeSql = null; + if (isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser) { + handleDeptCodeSql = String.format(" %s='%s' ", field, orgUnitCoding); + } else { + handleDeptCodeSql = " 1=1 "; + } + return handleDeptCodeSql; + } + /** * 根据页面传递的物品类型,获取对应的器械包类型 * @param tousseType 页面传递的物品类型,如果为空,则跟全部器械包一样,返回所有器械包类型的集合 * @return @@ -6139,7 +6155,17 @@ boolean excludeSciProjectInfo = CssdUtils.getSystemSetConfigByNameBool("enableExcludeInvoiceItemOfDisposableGoodsApplicationBelongToSciProject", false); boolean showBatch = StrutsParamUtils.getBoolPraramValue("showBatch", true); //判断当前登录用户是否为匿名用户.如果为匿名用户则只查询一级供应室的数据,否则根据实际情况的条件查询 - String loginUserFullName = AcegiHelper.getLoginUserFullName(); + LoginUserData user = AcegiHelper.getLoginUser(); + String loginUserFullName = null; + String orgUnitCoding = null; + if (user != null){ + orgUnitCoding = user.getOrgUnitCodingFromSupplyRoomConfig(); + loginUserFullName = user.getUserFullName(); + } + boolean isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser = false; + if (supplyRoomConfigManager.isSupplyRoomUser() || supplyRoomConfigManager.isExpensiveGoodsSupplyRoomUser()) { + isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser = true; + } if(StringUtils.equals(loginUserFullName, Constants.ANONYMOUS_USERNAME)){ departCoding = supplyRoomConfigManager.getFirstSupplyRoomConfig().getOrgUnitCoding(); } @@ -6606,7 +6632,7 @@ + "join TousseInstance ti on ti.invoice_id=i.id " + tousseInstanceJoinTousseDefinitionSql + " where " - +getHandleDeptCodeSql("i.orgUnitCoding")+" " + + getHandleDeptCodeSql("i.orgUnitCoding", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) + monthFilterSql + iDepartCodingSql + departFilterSql @@ -6630,7 +6656,7 @@ + "join TousseInstance ti on ti.invoice2_id=i.id " + tousseInstanceJoinTousseDefinitionSql + " where " - +getHandleDeptCodeSql("i.orgUnitCoding")+" " + + getHandleDeptCodeSql("i.orgUnitCoding", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) + monthFilterSql + iDepartCodingSql + departFilterSql @@ -6648,7 +6674,7 @@ + ",'' as batchNumber,null as expDate,ii.tousseDefinitionId as tousseDefinitionId from invoice i" + " join InvoiceItem ii on i.id = ii.invoice_id " + addTousseDefinitionAtWhere - + " where ii.diposable = '否' and ii.expensiveGoodsInstanceId is null and "+getHandleDeptCodeSql("i.orgUnitCoding")+" " + + " where ii.diposable = '否' and ii.expensiveGoodsInstanceId is null and "+ getHandleDeptCodeSql("i.orgUnitCoding", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) + monthFilterSql + iDepartCodingSql + departFilterSql @@ -6668,7 +6694,8 @@ + " ei on ei.id = ii.expensiveGoodsInstanceId" + " join ExpensiveGoods eg on ei.expensiveGoods_id=eg.id " + " left join ExpensiveGoodsModel egm on ei.expensiveGoodsModelId=egm.id" - + " where ii.diposable = '否' and "+getHandleDeptCodeSql("i.orgUnitCoding")+" " + + " where ii.diposable = '否' and " + + getHandleDeptCodeSql("i.orgUnitCoding", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) + monthFilterSql + departFilterSql + iDepartCodingSql @@ -6714,7 +6741,8 @@ + unitDSqlOfDiposableGoodsItem + ",d.batch as batchNumber,dgbs.expDate,0 as tousseDefinitionId from invoice i join DiposableGoodsItem d on d.invoice_id=i.id join " + DisposableGoodsBatchStock.class.getSimpleName() + " dgbs on d.disposableGoodsBatchStockID=dgbs.id " + invoiceJoinInvoicePlanSql - + " where 1=1 and "+getHandleDeptCodeSql("i.orgUnitCoding")+" " + + " where 1=1 and " + + getHandleDeptCodeSql("i.orgUnitCoding", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) +" and "+diposableGoodsItemPredicate + monthFilterSql + excludeSciProjectSql @@ -6729,7 +6757,8 @@ + unitDSqlOfDiposableGoodsItem + ",d.batch as batchNumber,dgbs.expDate,0 as tousseDefinitionId from invoice i join DiposableGoodsItem d on d.invoice_id=i.id join " + DisposableGoodsBatchStock.class.getSimpleName() + " dgbs on d.disposableGoodsBatchStockID=dgbs.id " + invoiceJoinInvoicePlanSql - + " where 1=1 and "+getHandleDeptCodeSql("i.orgUnitCoding")+" " + + " where " + + getHandleDeptCodeSql("i.orgUnitCoding", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) +" and "+diposableGoodsItemPredicate + monthFilterSql + excludeSciProjectSql @@ -6746,7 +6775,8 @@ + unitDSqlOfDiposableGoodsItem + ",d.batch as batchNumber,dgbs.expDate,0 as tousseDefinitionId from invoice i join DiposableGoodsItem d on d.invoice_id=i.id join " + DisposableGoodsBatchStock.class.getSimpleName() + " dgbs on d.disposableGoodsBatchStockID=dgbs.id " + invoiceJoinInvoicePlanSql - + " where 1=1 and "+getHandleDeptCodeSql("i.orgUnitCoding")+" " + + " where 1=1 and " + + getHandleDeptCodeSql("i.orgUnitCoding", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) +" and "+diposableGoodsItemPredicate + String.format(" and d.type='%s' ", InvoiceItem.TYPE_AUTO_DEDUCTION) + monthFilterSql @@ -6765,7 +6795,8 @@ + unitDGISqlOfDiposableGoodsItem + ",dgi.batch as batchNumber,dgbs.expDate,0 as tousseDefinitionId from PackingRecord pr inner join DiposableGoodsItem dgi on pr.id = dgi.packingRecordId " + " inner join " + DisposableGoodsBatchStock.class.getSimpleName() + " dgbs on dgi.disposableGoodsBatchStockID=dgbs.id" - + " where "+getHandleDeptCodeSql("pr.orgUnitCoding")+" " + + " where " + + getHandleDeptCodeSql("pr.orgUnitCoding", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) +" and "+packingDisposableGoodsTypeSql + packingDisposableGoodsTimeSql + packingDisposableGoodsDepartSql @@ -6793,7 +6824,7 @@ + " left join TousseDefinition td on td.id= ii.tousseDefinitionId " + " inner join MaterialInvoice i on i.id = ii.materialInvoice_id " + " inner join materialDefinition d on ii.materialDefinitionId = d.id where " - + getHandleDeptCodeSql("i.orgUnitCoding")+" " + + getHandleDeptCodeSql("i.orgUnitCoding", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) + monthFilterSql + departFilterSql + iDepartCodingSql @@ -6809,7 +6840,8 @@ + ",'' as batchNumber,null as expDate,0 as tousseDefinitionId " + " from ReturnMaterialRecord rr,materialDefinition d," + "ReturnMaterialItem ii where rr.id = ii.returnMaterialRecord_ID " - + " and ii.materialDefinitionId = d.id and "+getHandleDeptCodeSql("rr.handleDepartCode")+" " + + " and ii.materialDefinitionId = d.id and " + + getHandleDeptCodeSql("rr.handleDepartCode", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) + returnGoodsTimeFilterSql + returnGoodsDepartFilterSql + rrDepartCodingSql @@ -6821,7 +6853,8 @@ +"sum(i.additionalAmount * i.materialCost) as settlementDiscountPrice,'材料' as type" + unitMSqlOfMd + ",'' as batchNumber,null as expDate,0 as tousseDefinitionId " - + " from MaterialErrorDamageDetail i left join materialDefinition m on i.materialDefinitionId = m.id where 1=1 and i.errorType = '缺失' and i.type = '"+MaterialErrorDamageDetail.TYPE_ERROR+"' and i.materialName != '器械包标识牌' and i.additionalAmount > 0 and "+getHandleDeptCodeSql("i.handleDepartCode")+" " + + " from MaterialErrorDamageDetail i left join materialDefinition m on i.materialDefinitionId = m.id where 1=1 and i.errorType = '缺失' and i.type = '"+MaterialErrorDamageDetail.TYPE_ERROR+"' and i.materialName != '器械包标识牌' and i.additionalAmount > 0 and " + + getHandleDeptCodeSql("i.handleDepartCode", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) + lostMaterialFilterSql + iDepartCodeSql + "group by i.depart"+ groupByIOperationTimeOfShowTime + unitMSqlOfMd +",i.settleAccountsDepart,i.materialName ) "; @@ -6839,7 +6872,9 @@ + ",'' as batchNumber,null as expDate,0 as tousseDefinitionId " + "from MaterialErrorDamageDetail i left join materialDefinition m on i.materialDefinitionId = m.id where 1=1 " + banQuery - + " and i.type = '" + MaterialErrorDamageDetail.TYPE_DAMAGE + "' and i.additionalAmount > 0 and "+getHandleDeptCodeSql("i.handleDepartCode")+" " + damageFilterSql + + " and i.type = '" + MaterialErrorDamageDetail.TYPE_DAMAGE + "' and i.additionalAmount > 0 and " + + getHandleDeptCodeSql("i.handleDepartCode", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) + + damageFilterSql + iDepartCodeSql + " group by i.depart" + groupByIOperationTimeOfShowTime @@ -6870,7 +6905,8 @@ +" ti on ti.returnGoodsItem_ID=ri.id " + " join " + TousseDefinition.class.getSimpleName() + " td on td.id=ti.tousseDefinition_id" - + " where " + getHandleDeptCodeSql("rr.handleDepartCode")+" " + + " where " + + getHandleDeptCodeSql("rr.handleDepartCode", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) + returnGoodsFilterSql + urgentSql + rrSettleAccountsDepartCodingSql @@ -6891,7 +6927,8 @@ + ReturnGoodsItem.class.getSimpleName()+ " ri on rr.id = ri.returngoodsrecord_id " + " left join " + TousseDefinition.class.getSimpleName() + " td on td.id = ri.tousseDefinition_id" + " left join " + DisposableGoodsBatchStock.class.getSimpleName() + " dgbs on ri.disposableGoodsBatchStockID=dgbs.id" - + " where " + getHandleDeptCodeSql("rr.handleDepartCode")+" " + + " where " + + getHandleDeptCodeSql("rr.handleDepartCode", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) + returnGoodsFilterSql + rrSettleAccountsDepartCodingSql +" and "+returnGoodsItemPredicate @@ -6913,7 +6950,8 @@ + unitDSqlOfMd + ",dgbs.batchNumber as batchNumber,dgbs.expDate,0 as tousseDefinitionId " +" from ReceiveRecord rr,ReceiveRecordItem rri left join " + DisposableGoodsBatchStock.class.getSimpleName() + " dgbs " - +" on rri.diposableGoodBatchStock_id = dgbs.id left join DisposableGoods d on d.id = rri.disposableGoodsId where rr.id = rri.receiveRecord_id and "+getHandleDeptCodeSql("rr.departCoding")+" " + +" on rri.diposableGoodBatchStock_id = dgbs.id left join DisposableGoods d on d.id = rri.disposableGoodsId where rr.id = rri.receiveRecord_id and " + + getHandleDeptCodeSql("rr.departCoding", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) +supplyRoomDiposableGoodsFilterSqlOFDgbs +supplyRoomTousseTypeSql +" and "+receiveRecordItemPredicate @@ -6929,7 +6967,8 @@ +unitDGSqlOfDisposableGoods + ",dgbs.batchNumber as batchNumber,dgbs.expDate,0 as tousseDefinitionId " +" from GodownEntry oge inner join GodownEntryDiposableGoodsItem ged on oge.id = ged.godownEntryID inner join DisposableGoodsBatch dgbs on ged.disposableGoodsBatchID=dgbs.id inner join DisposableGoods dg on dgbs.diposablegoods_id = dg.id " - +" where oge.type ='退库单' and oge.subType='调拨出库' and "+getHandleDeptCodeSql("oge.orgUnitCode")+" " + +" where oge.type ='退库单' and oge.subType='调拨出库' and " + + getHandleDeptCodeSql("oge.orgUnitCode", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) +outEntryFilterSql + ogeTargetOrgUnitCodeSql +" and "+outEntryPredicate @@ -6940,7 +6979,8 @@ +unitDGSqlOfDisposableGoods + ",dgbs.batchNumber as batchNumber,dgbs.expDate,0 as tousseDefinitionId " +" from GodownEntry oge inner join GodownEntryDiposableGoodsItem ged on oge.id = ged.godownEntryID inner join DisposableGoodsBatch dgbs on ged.disposableGoodsBatchID=dgbs.id inner join DisposableGoods dg on dgbs.diposablegoods_id = dg.id " - +" where oge.type ='退库单' and oge.subType='盘亏出库' and "+getHandleDeptCodeSql("oge.orgUnitCode")+" " + +" where oge.type ='退库单' and oge.subType='盘亏出库' and " + + getHandleDeptCodeSql("oge.orgUnitCode", isSupplyRoomUserOrIsExpensiveGoodsSupplyRoomUser, orgUnitCoding) +outEntryFilterSql + ogeOrgUnitCodeSql +" and "+outEntryPredicate