Index: ssts-web/src/main/webapp/jasperRtp/steAmountEachBranchReport.jasper
===================================================================
diff -u
Binary files differ
Index: ssts-web/src/main/webapp/jasperRtp/steAmountEachBranchReport.jrxml
===================================================================
diff -u
--- ssts-web/src/main/webapp/jasperRtp/steAmountEachBranchReport.jrxml (revision 0)
+++ ssts-web/src/main/webapp/jasperRtp/steAmountEachBranchReport.jrxml (revision 34356)
@@ -0,0 +1,298 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java
===================================================================
diff -u -r34262 -r34356
--- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 34262)
+++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 34356)
@@ -27313,4 +27313,399 @@
+ " and " + dateQueryAdapter.dateAreaSql("qmi.datetime", startTime, endTime);
return objectDao.getALongNum(sql, "amount");
}
+ @Override
+ public List getSteAmountEachBranchReportDate(
+ String startTime, String endTime) {
+ startTime += " 00:00:00";
+ endTime += " 23:59:59";
+ List resultList = new ArrayList();
+ String sql1 = "SELECT inn.bhName,inn.id FROM "
+ + " (SELECT t.id, t.bhName, ROW_NUMBER() OVER(PARTITION BY t.id ORDER BY t.id ) num "
+ + " FROM ( select id, bhName, count(*) count from (select te.id, "
+ + " (select bh.name from brancheOfHospital bh "
+ + " join OrgUnitGroup og on og.id = bh.orgUnitGroupId "
+ + " join Org_OrgGroup oog on oog.orgGroupId = og.id "
+ + " join OrgUnit ou on ou.id = oog.orgUnitId "
+ + " where ou.name = te.depart) bhName "
+ + " from (select ip.depart, sr.id from SterilizationRecord sr "
+ + " join TousseInstance ti on ti.sterilizationRecord_id = sr.id "
+ + " join invoicePlan ip on ip.id = ti.invoicePlanID "
+ + " where ti.foreignProxyItem_id is not null "
+ + " union all select ip.depart, sr.id "
+ + " from SterilizationRecord sr join TousseInstance ti on ti.sterilizationRecord_id = sr.id "
+ + " join invoicePlan ip on ip.id = ti.proxyDisinfection_id "
+ + " where ti.proxyDisinfection_id is not null "
+ + " union all select ti.depart, sr.id from SterilizationRecord sr "
+ + " join TousseInstance ti on ti.sterilizationRecord_id = sr.id "
+ + " where ti.proxyDisinfection_id is null and ti.foreignProxyItem_id is null "
+ + " ) te ) te2 where te2.bhname in ('芳村分院', '二沙分院', '大学城分院') group by id, bhName "
+ + " order by id desc, count desc, case when bhName = '大学城分院' then 3 when bhName = '芳村分院' then 2 when bhName = '二沙分院' then 1 else 0 end desc) "
+ + " t ) inn WHERE inn.num=1 ";
+ String sql = " select sql1Table.bhName,sout.owngroup,count(*) amount from SterilizationRecord srout "
+ + " join sterilizer sout on sout.id = srout.sterilizer_id "
+ + " join ("+ sql1 +") sql1Table on sql1Table.id=srout.id "
+ + " where sout.owngroup in('高温灭菌炉','低温灭菌炉') and srout.endDate between "
+ + dateQueryAdapter.dateAdapter(startTime) + " and "
+ + dateQueryAdapter.dateAdapter(endTime)
+ + " group by sql1Table.bhName,sout.owngroup ";
+ ResultSet rs = null;
+ SteAmountEachBranchReportVo vo1 = new SteAmountEachBranchReportVo();//大学城分院
+ SteAmountEachBranchReportVo vo2 = new SteAmountEachBranchReportVo();//芳村分院
+ SteAmountEachBranchReportVo vo3 = new SteAmountEachBranchReportVo();//二沙分院
+ vo1.setRowNum(1);
+ vo1.setBrancheOfHospitalName("大学城");
+ vo2.setRowNum(2);
+ vo2.setBrancheOfHospitalName("芳村");
+ vo3.setRowNum(3);
+ vo3.setBrancheOfHospitalName("二沙");
+ resultList.add(vo1);
+ resultList.add(vo2);
+ resultList.add(vo3);
+ try {
+ String sql2 = getSteAmountEachBranchReportDataSql(startTime, endTime);
+ rs = objectDao.executeSql(sql);
+ while(rs.next()){
+ String bhname = rs.getString("bhname");
+ Long amount = rs.getLong("amount");
+ String owngroup = rs.getString("owngroup");
+ if("大学城分院".equals(bhname)){
+ setOwngroupAmount(owngroup, amount, vo1);
+ }else if("芳村分院".equals(bhname)){
+ setOwngroupAmount(owngroup, amount, vo2);
+ }else if("二沙分院".equals(bhname)){
+ setOwngroupAmount(owngroup, amount, vo3);
+ }
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }finally {
+ DatabaseUtil.closeResultSetAndStatement(rs);
+ }
+ ResultSet rs2 = null;
+ try {
+ rs = objectDao.executeSql(getSteAmountEachBranchReportDataSql(startTime, endTime));
+ while(rs.next()){
+ String bhname = rs.getString("bhName");
+ Long totalAmount = rs.getLong("totalAmount");
+ if("大学城分院".equals(bhname)){
+ vo1.setTotalAmountOfBags(totalAmount);
+ }else if("芳村分院".equals(bhname)){
+ vo2.setTotalAmountOfBags(totalAmount);
+ }else if("二沙分院".equals(bhname)){
+ vo3.setTotalAmountOfBags(totalAmount);
+ }
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }finally {
+ DatabaseUtil.closeResultSetAndStatement(rs);
+ }
+ return resultList;
+ }
+ /**
+ * 根据灭菌炉分组给vo对应的字段赋值
+ * @param owngroup 灭菌炉分组
+ * @param amount 数量
+ * @param vo
+ */
+ private void setOwngroupAmount(String owngroup, Long amount, SteAmountEachBranchReportVo vo){
+ if("高温灭菌炉".equals(owngroup)){
+ vo.setHighPressureFurnacesAmount(amount);
+ }else{
+ vo.setGasFurnacesAmount(amount);
+ }
+ }
+ /**
+ * 各分院消毒炉次及各类包统计表获取各类包数量的sql
+ * @param startDate 开始时间
+ * @param endDate 结束时间
+ * @return
+ */
+ private String getSteAmountEachBranchReportDataSql(String startDate, String endDate){
+ OrgUnit orgUnit = orgUnitManager.getByName("大院供应室");
+ String orgUnitCoding = orgUnit.getOrgUnitCoding();
+ String betweenSql = String.format(" between %s and %s ", dateQueryAdapter.dateAdapter(startDate),dateQueryAdapter.dateAdapter(endDate));;
+ //统计处理科室为【大院供应室】灭菌炉分组为【低温灭菌炉】的【炉次】总数X 1
+ String sql = "select bhName,sum(amount) totalAmount from ( select (select bh.name from brancheOfHospital bh "
+ + "join OrgUnitGroup og on og.id = bh.orgUnitGroupId join Org_OrgGroup oog on oog.orgGroupId = og.id"
+ + " join OrgUnit ou on ou.id = oog.orgUnitId "
+ + " where ou.name = t2.depart) bhName,amount from ( ";
+ sql += "select rr.depart,sum(ri.amount) amount from RecyclingRecord rr "
+ + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id "
+ + "join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID "
+ + "where tdc.taskGroup='器械二班' and rr.recyclingTime "
+ + betweenSql
+ + "and rr.orgUnitCoding='" +
+ orgUnitCoding
+ + "' "
+ + getInstrumentSetTypeSql("针头","in")
+ + " group by rr.depart ";
+ //统计处理科室为【大院供应室】装配任务组为【泡镊桶班】器械包种类为【临床各类包】(器械包种类为【治疗包】除外)复用物品【回收】的【件数】X 1
+ sql += " union all ";
+ sql += "select rr.depart,sum(ri.amount * ri.materialAmount) amount from RecyclingRecord rr join RecyclingItem ri on ri.recyclingRecord_id=rr.id "
+ + "join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID "
+ + "where tdc.taskGroup='泡镊桶班' and rr.orgUnitCoding='"
+ +orgUnitCoding
+ + "' "
+ + "and rr.recyclingTime "
+ + betweenSql
+ + getInstrumentSetTypeSql("临床各类包","in")
+ + getInstrumentSetTypeSql("治疗包", "not in")
+ + " group by rr.depart ";
+ //统计处理科室为【大院供应室】装配任务组为【泡镊桶班】器械包种类为【治疗包】的复用物品【回收】的【包数】X 1
+ sql += " union all ";
+ sql += "select rr.depart,sum(ri.amount) amount from RecyclingRecord rr "
+ + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id "
+ + "join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID "
+ + "where tdc.taskGroup='泡镊桶班' and rr.recyclingTime "
+ + betweenSql
+ + "and rr.orgUnitCoding='" +
+ orgUnitCoding
+ + "' "
+ + getInstrumentSetTypeSql("治疗包","in")
+ + " group by rr.depart ";
+ //统计处理科室为【大院供应室】装配任务组为【剪刀班】器械包种类为【剪刀器械A类】的复用物品【回收】的【件数】X 1
+ sql += " union all ";
+ sql += "select rr.depart,sum(ri.amount * ri.materialAmount) amount from RecyclingRecord rr join RecyclingItem ri on ri.recyclingRecord_id=rr.id "
+ + "join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID "
+ + "where tdc.taskGroup='剪刀班' and rr.orgUnitCoding='"
+ +orgUnitCoding
+ + "' and rr.recyclingTime "
+ + betweenSql
+ + getInstrumentSetTypeSql("剪刀器械A类","in")
+ + " group by rr.depart ";
+ //统计处理科室为【大院供应室】装配任务组为【剪刀班】器械包类型为【聚合包】器械包种类【剪刀自由装配包】的复用物品【装配】的【包数】X 1
+ sql += " union all ";
+ sql += "select ti.depart,count(*) amount "
+ + " from TousseInstance ti inner join TousseDefinition td on ti.comboTousseDefinitionId = td.id "
+ + "join TousseDefinition tdc on tdc.id=td.ancestorid "
+ + "join CssdHandleTousses ch on ch.toussedefinitionid=tdc.id "
+ + "where ti.comboTousseInstanceId is null and ti.comboTousseDefinitionId is not null "
+ + " and ch.taskGroup='剪刀班' and ti.orgUnitCoding='"
+ +orgUnitCoding
+ + "' and ti.operationTime "
+ + betweenSql
+ + " and tdc.id in (select istt.tousseDefinitionId from InstrumentSetType_TD istt "
+ + "join instrumentSetType ist on ist.id=istt.instrumentSetTypeId where ist.name='剪刀自由装配包')"
+ + " group by ti.depart ";
+ //统计处理科室为【大院供应室】装配任务组为【出机班】器械包种类为【止血带(对换)】的复用物品【回收】的【件数】/ 10
+ sql += " union all ";
+ sql += "select rr.depart,sum(ri.amount * ri.materialAmount)/10 amount from RecyclingRecord rr join RecyclingItem ri on ri.recyclingRecord_id=rr.id "
+ + "join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID "
+ + "where tdc.taskGroup='出机班' and rr.orgUnitCoding='"
+ +orgUnitCoding
+ + "' and rr.recyclingTime "
+ + betweenSql
+ + getInstrumentSetTypeSql("止血带(对换)","in")
+ + " group by rr.depart ";
+ ReportQueryParams params = new ReportQueryParams(objectDao);
+ params.betweenSql = betweenSql;
+ params.querySupplyRoom = orgUnitCoding;
+ //1.计算申请科室分组为【内部代理灭菌】的【代理灭菌】处理【包数】 2.计算申请科室分组为【临床外部代理灭菌】的【外部代理灭菌】处理【包数】 取数为两者总和
+ params.extraQuery = " and ( 1=1 "
+ + getProxydisinfectionOrgUnitGroupSql("内部代理灭菌")
+ + " or 1=1 "
+ + getForeignproxyOrgUnitGroupSql("临床外部代理灭菌")
+ + ") ";
+ params.extraSelectColumns = " ,case when proxydisinfection_id is not null then (select depart from invoicePlan where id=ti.proxydisinfection_id ) else ti.depart end depart ";
+ params.extraGroupBy = " group by ti.proxydisinfection_id,ti.depart ";
+ //灭菌记录
+ String sql2 = String.format(" union all select tl.depart,sum(tl.amount) amount from ("
+ +dataIndex.getWorkAmountByPackageSQL("灭菌数量", params)
+ + ") tl group by tl.depart ");
+
+ //统计处理科室为【大院供应室】灭菌炉分组为【低温灭菌炉】的【包数】X 1
+ sql += " union all ";
+ params.extraQuery = " and sr.sterilizer_id in(select id from Sterilizer where ownGroup='低温灭菌炉') ";
+ //灭菌记录
+ sql += String.format(" select tl.depart,sum(tl.amount) amount from ("
+ +dataIndex.getWorkAmountByPackageSQL("灭菌数量", params)
+ + ") tl group by tl.depart ");
+ params.extraSelectColumns = "";
+ params.extraGroupBy = "";
+ //统计处理科室为【大院供应室】装配任务组为【器械二班】器械包种类为【临床各类包】的复用物品【回收】的【包数】
+ sql += " union all ";
+ sql += "select rr.depart,sum(ri.amount) amount from RecyclingRecord rr "
+ + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id "
+ + "join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID "
+ + "where tdc.taskGroup='器械二班' and rr.recyclingTime "
+ + betweenSql
+ + "and rr.orgUnitCoding='" +
+ orgUnitCoding
+ + "' "
+ + getInstrumentSetTypeSql("临床各类包","in")
+ + " group by rr.depart ";
+
+ //1.统计处理科室为【大院供应室】装配任务组为【器械一班】器械包种类为【器械一班小手术包B类】的复用物品【回收】的【包数】
+ //2.统计处理科室为【大院供应室】装配任务组为【器械二班】器械包种类为【器械二班包皮包B类】的复用物品【回收】的【包数】
+ //取数为两者总和 X 5
+ sql += " union all ";
+ sql += "select t.depart,sum(amount)*5 from( select rr.depart,ri.amount from RecyclingRecord rr "
+ + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id "
+ + "join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID "
+ + "where tdc.taskGroup='器械一班' and rr.recyclingTime "
+ + betweenSql
+ + "and rr.orgUnitCoding='" +
+ orgUnitCoding
+ + "' "
+ + getInstrumentSetTypeSql("器械一班小手术包B类","in");
+ sql += " union all select rr.depart,ri.amount from RecyclingRecord rr "
+ + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id "
+ + "join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID "
+ + "where tdc.taskGroup='器械二班' and rr.recyclingTime "
+ + betweenSql
+ + "and rr.orgUnitCoding='" +
+ orgUnitCoding
+ + "' "
+ + getInstrumentSetTypeSql("器械二班包皮包B类","in")
+ + ") t group by t.depart ";
+ //统计处理科室为【大院供应室】装配任务组为【器械二班】器械包分组为【通用手术包】的复用物品【回收】的【包数】X 1 ②器械二班通用手术包
+ sql += " union all ";
+ sql += "select rr.depart,sum(ri.amount) amount from RecyclingRecord rr "
+ + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id "
+ + "join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID "
+ + "where tdc.taskGroup='器械二班' and tdc.tousseGroupName='通用手术包' "
+ + "and rr.recyclingTime "
+ + betweenSql
+ + "and rr.orgUnitCoding='" +
+ orgUnitCoding
+ + "' group by rr.depart";
+ //③外来器械班 统计处理科室为【大院供应室】装配任务组为【外来器械班】器械包类型为【外来器械】的【装配】的【包数】X 2
+ params.tousseTypeAndPackageSizeSql = " and tdc.tousseType in('"+ TousseDefinition.PACKAGE_TYPE_FOREIGN +"','"+ TousseDefinition.PACKAGE_TYPE_SPLIT +"') ";
+ params.tousseTypes = TousseDefinition.PACKAGE_TYPE_FOREIGN;
+ params.taskGroupSqlWithAliasOfTousseDefinitionIsTd= SqlUtils.get_InSql_Extra("tdc.taskGroup", "外来器械班");
+ params.extraQuery = "";
+ params.extraSelectColumns = ",ti.depart ";
+ params.extraGroupBy = " group by ti.depart ";
+ sql += String.format(" union all select tl.depart,sum(tl.amount)*2 amount from ("
+ +dataIndex.getWorkAmountByPackageSQL("配包数量", params)
+ + ") tl group by tl.depart ");
+ //④布类班 统计处理科室为【大院供应室】装配任务组为【布类班】器械包种类为【手术布类包】的【装配】的【包数】X 2
+ params.taskGroupSqlWithAliasOfTousseDefinitionIsTd= SqlUtils.get_InSql_Extra("tdc.taskGroup", "布类班");
+ params.tousseTypes = "";
+ params.tousseTypeAndPackageSizeSql= "";
+ params.extraQuery = getInstrumentSetTypeSql("手术布类包","in");
+ sql += String.format(" union all select tl.depart,sum(tl.amount)*2 amount from ("
+ +dataIndex.getWorkAmountByPackageSQL("配包数量", params)
+ + ") tl group by tl.depart ");
+ //④布类班 统计处理科室为【大院供应室】装配任务组为【布类班】科室分组为【内部代理灭菌】器械包种类为【手术布类包】的【装配】的【包数】X1
+ params.extraQuery = getInstrumentSetTypeSql("手术布类包","in")
+ + getInOrgUnitGroupSql("ti.departCoding", "内部代理灭菌");
+ params.taskGroupSqlWithAliasOfTousseDefinitionIsTd = " and tdc.taskGroup='布类班' ";
+ sql += String.format(" union all select tl.depart,sum(tl.amount) amount from ("
+ +dataIndex.getWorkAmountByPackageSQL("配包数量", params)
+ + ") tl group by tl.depart ");
+ //泡镊桶班装配手术布类包总数 统计处理科室为【大院供应室】装配任务组为【泡镊桶班】器械包种类为【手术布类包】的【装配】的【包数】X 1
+ params.extraQuery = getInstrumentSetTypeSql("手术布类包","in");
+ params.taskGroupSqlWithAliasOfTousseDefinitionIsTd = " and tdc.taskGroup='泡镊桶班' ";
+ sql += String.format(" union all select tl.depart,sum(tl.amount) amount from ("
+ +dataIndex.getWorkAmountByPackageSQL("配包数量", params)
+ + ") tl group by tl.depart ");
+ //外来器械装配包数 统计处理科室为【大院供应室】装配任务组为【外来器械班】处理的【外来器械包】和【外来器械拆分小包】【装配】的【包数】X 1
+ params.extraQuery = "";
+ params.tousseTypeAndPackageSizeSql = " and tdc.tousseType in('"+ TousseDefinition.PACKAGE_TYPE_FOREIGN +"','"+ TousseDefinition.PACKAGE_TYPE_SPLIT +"') ";
+ params.tousseTypes = TousseDefinition.PACKAGE_TYPE_FOREIGN;
+ params.taskGroupSqlWithAliasOfTousseDefinitionIsTd = " and tdc.taskGroup='外来器械班' ";
+ sql += String.format(" union all select tl.depart,sum(tl.amount) amount from ("
+ +dataIndex.getWorkAmountByPackageSQL("配包数量", params)
+ + ") tl group by tl.depart ");
+ //①大院手术室一区 统计处理科室为【大院供应室】装配任务组为【手术器械(麻一)】的复用物品【装配】的【包数】X 1
+ params.tousseTypeAndPackageSizeSql = "";
+ params.tousseTypes = "";
+ params.taskGroupSqlWithAliasOfTousseDefinitionIsTd = " and tdc.taskGroup='手术器械(麻一)' ";
+ sql += String.format(" union all select tl.depart,sum(tl.amount) amount from ("
+ +dataIndex.getWorkAmountByPackageSQL("配包数量", params)
+ + ") tl group by tl.depart ");
+ //②大院手术室二区 统计处理科室为【大院供应室】装配任务组为【手术器械(麻二)】的复用物品【装配】的【包数】X 1
+ params.taskGroupSqlWithAliasOfTousseDefinitionIsTd = " and tdc.taskGroup='手术器械(麻二)' ";
+ sql += String.format(" union all select tl.depart,sum(tl.amount) amount from ("
+ +dataIndex.getWorkAmountByPackageSQL("配包数量", params)
+ + ") tl group by tl.depart ");
+ //器械一班 统计处理科室为【大院供应室】装配任务组为【器械一班】的复用物品【回收】的【包数】X 1
+ sql += " union all ";
+ sql += "select rr.depart ,sum(ri.amount) amount from RecyclingRecord rr "
+ + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id "
+ + "join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID "
+ + "where tdc.taskGroup='器械一班' "
+ + "and rr.recyclingTime "
+ + betweenSql
+ + "and rr.orgUnitCoding='" +
+ orgUnitCoding
+ + "' group by rr.depart ";
+ //器械二班 统计处理科室为【大院供应室】装配任务组为【器械二班】器械包种类为【手术器械包】的复用物品【回收】的【包数】X 1
+ sql += " union all ";
+ sql += "select rr.depart,sum(ri.amount) amount from RecyclingRecord rr "
+ + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id "
+ + "join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID "
+ + "where tdc.taskGroup='器械二班' "
+ + "and rr.recyclingTime "
+ + betweenSql
+ + "and rr.orgUnitCoding='" +
+ orgUnitCoding
+ + "' "
+ + getInstrumentSetTypeSql("手术器械包","in")
+ + " group by rr.depart ";
+ //口腔班 1.统计处理科室为【大院供应室】装配任务组为【口腔班】器械包种类为【口腔器械A类】的复用物品【回收】的【件数】
+ //2.统计处理科室为【大院供应室】装配任务组为【口腔班】器械包种类为【口腔器械B类】的复用物品【回收】的【包数】
+ //3.3.统计处理科室为【大院供应室】装配任务组为【口腔班】器械包类型为【聚合包】器械包种类为【口腔聚合包】的复用物品【装配】的【件数】
+ //取数为三者总和 X 1
+ sql += " union all select t.depart,sum(t.amount) amount from (";
+ sql += "select rr.depart,ri.amount * ri.materialAmount amount from RecyclingRecord rr join RecyclingItem ri on ri.recyclingRecord_id=rr.id "
+ + "join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID "
+ + "where tdc.taskGroup='口腔班' and rr.orgUnitCoding='"
+ +orgUnitCoding
+ + "' "
+ + "and rr.recyclingTime "
+ + betweenSql
+ + getInstrumentSetTypeSql("口腔器械A类","in");
+ sql += " union all select rr.depart, ri.amount from RecyclingRecord rr "
+ + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id "
+ + "join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID "
+ + "where tdc.taskGroup='口腔班' and rr.recyclingTime "
+ + betweenSql
+ + "and rr.orgUnitCoding='" +
+ orgUnitCoding
+ + "' "
+ + getInstrumentSetTypeSql("口腔器械B类","in");
+
+ sql += " union all ";
+ sql += "select ti.depart,sum(case when ti.materialAmount is null then 0 else ti.materialAmount end) amount "
+ + " from TousseInstance ti inner join TousseDefinition td on ti.comboTousseDefinitionId = td.id "
+ + "join TousseDefinition tdc on tdc.id=td.ancestorid "
+ + "join CssdHandleTousses ch on ch.toussedefinitionid=tdc.id "
+ + "where ti.comboTousseInstanceId is null and ti.comboTousseDefinitionId is not null "
+ + " and ch.taskGroup='口腔班' and ti.orgUnitCoding='"
+ +orgUnitCoding
+ + "' and ti.operationTime "
+ + betweenSql
+ + " and tdc.id in (select istt.tousseDefinitionId from InstrumentSetType_TD istt "
+ + "join instrumentSetType ist on ist.id=istt.instrumentSetTypeId where ist.name='口腔聚合包') group by ti.depart ";
+ sql += ") t group by t.depart ";
+ //口腔自由装配 统计处理科室为【大院供应室】装配任务组为【口腔班】器械包类型为【聚合包】器械包种类为【口腔自由装配包】复用物品【装配】的【包数】
+ sql += " union all ";
+ sql += "select ti.depart,count(*) amount "
+ + " from TousseInstance ti inner join TousseDefinition td on ti.comboTousseDefinitionId = td.id "
+ + "join TousseDefinition tdc on tdc.id=td.ancestorid "
+ + "join CssdHandleTousses ch on ch.toussedefinitionid=tdc.id "
+ + "where ti.comboTousseInstanceId is null and ti.comboTousseDefinitionId is not null "
+ + " and ch.taskGroup='口腔班' and ti.orgUnitCoding='"
+ +orgUnitCoding
+ + "' and ti.operationTime "
+ + betweenSql
+ + " and tdc.id in (select istt.tousseDefinitionId from InstrumentSetType_TD istt "
+ + "join instrumentSetType ist on ist.id=istt.instrumentSetTypeId where ist.name='口腔自由装配包') group by ti.depart ";
+ //呼吸球囊清点数目 统计处理科室为【大院供应室】装配任务组为【剪刀班】器械包种类为【呼吸球囊】的复用物品【回收】的【包数】X 1
+ sql += " union all ";
+ sql += "select rr.depart,sum(ri.amount) amount from RecyclingRecord rr "
+ + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id "
+ + "join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID "
+ + "where tdc.taskGroup='剪刀班' and rr.recyclingTime "
+ + betweenSql
+ + "and rr.orgUnitCoding='" +
+ orgUnitCoding
+ + "' "
+ + getInstrumentSetTypeSql("呼吸球囊","in")
+ + " group by rr.depart) t2 ) t1 where t1.bhName in('大学城分院','芳村分院','二沙分院') group by bhName ";
+ return sql;
+ }
}
Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java
===================================================================
diff -u -r34202 -r34356
--- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 34202)
+++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 34356)
@@ -72,6 +72,7 @@
import com.forgon.disinfectsystem.jasperreports.javabeansource.SciProjectAccountingVo;
import com.forgon.disinfectsystem.jasperreports.javabeansource.SignGoodsItemVo;
import com.forgon.disinfectsystem.jasperreports.javabeansource.StatisticalWorkload;
+import com.forgon.disinfectsystem.jasperreports.javabeansource.SteAmountEachBranchReportVo;
import com.forgon.disinfectsystem.jasperreports.javabeansource.SterilizationAreaWorkLoadBean;
import com.forgon.disinfectsystem.jasperreports.javabeansource.SterilizationEffectMonitorReportVo;
import com.forgon.disinfectsystem.jasperreports.javabeansource.SterilizationOmitReportBean;
@@ -1244,5 +1245,13 @@
* @return
*/
public List getQualityMonitoringReportTaskGroupReportDate(String startTime, String endTime);
+ /**
+ * 获取各分院消毒炉次及各类包统计表数据
+ * @param startTime 开始时间
+ * @param endTime 结束时间
+ * @return
+ */
+ public List getSteAmountEachBranchReportDate(String startTime, String endTime);
+
}
Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SteAmountEachBranchReportVo.java
===================================================================
diff -u
--- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SteAmountEachBranchReportVo.java (revision 0)
+++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SteAmountEachBranchReportVo.java (revision 34356)
@@ -0,0 +1,61 @@
+package com.forgon.disinfectsystem.jasperreports.javabeansource;
+
+/**
+ * @author zc.li
+ * 2022-08-09
+ * 各分院消毒炉次及各类包统计表vo
+ * GDSZYY-182
+ */
+public class SteAmountEachBranchReportVo {
+ /**
+ * 序号
+ */
+ private Integer rowNum;
+ /**
+ * 院区名称
+ */
+ private String brancheOfHospitalName;
+ /**
+ * 高压炉数
+ */
+ private Long highPressureFurnacesAmount = 0L;
+ /**
+ * 气体炉数
+ */
+ private Long gasFurnacesAmount = 0L;
+ /**
+ * 各类包总数
+ */
+ private Long totalAmountOfBags = 0L;
+ public Integer getRowNum() {
+ return rowNum;
+ }
+ public void setRowNum(Integer rowNum) {
+ this.rowNum = rowNum;
+ }
+ public String getBrancheOfHospitalName() {
+ return brancheOfHospitalName;
+ }
+ public void setBrancheOfHospitalName(String brancheOfHospitalName) {
+ this.brancheOfHospitalName = brancheOfHospitalName;
+ }
+ public Long getHighPressureFurnacesAmount() {
+ return highPressureFurnacesAmount;
+ }
+ public void setHighPressureFurnacesAmount(Long highPressureFurnacesAmount) {
+ this.highPressureFurnacesAmount = highPressureFurnacesAmount;
+ }
+ public Long getGasFurnacesAmount() {
+ return gasFurnacesAmount;
+ }
+ public void setGasFurnacesAmount(Long gasFurnacesAmount) {
+ this.gasFurnacesAmount = gasFurnacesAmount;
+ }
+ public Long getTotalAmountOfBags() {
+ return totalAmountOfBags;
+ }
+ public void setTotalAmountOfBags(Long totalAmountOfBags) {
+ this.totalAmountOfBags = totalAmountOfBags;
+ }
+
+}
Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java
===================================================================
diff -u -r34286 -r34356
--- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 34286)
+++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 34356)
@@ -2198,6 +2198,12 @@
String endTime = StrutsParamUtils.getPraramValue("endTime", "");
parametMap.put("queryDate", startTime + " ~ " + endTime);
return jasperReportManager.getQualityMonitoringReportTaskGroupReportDate(startTime, endTime);
+ }else if("steAmountEachBranchReport".equals(reportName)){//各分院消毒炉次及各类包统计表
+ String startDate = StrutsParamUtils.getPraramValue("startDate", "");
+ String endDate = StrutsParamUtils.getPraramValue("endDate", "");
+ parametMap.put("dateStr", startDate + " ~ " + endDate);
+ parametMap.put("title", "各分院消毒炉次及各类包统计表");
+ return jasperReportManager.getSteAmountEachBranchReportDate(startDate, endDate);
}
return null;
}