Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/UrgentNeedGoodsProcessingCycle.java =================================================================== diff -u -r28830 -r34397 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/UrgentNeedGoodsProcessingCycle.java (.../UrgentNeedGoodsProcessingCycle.java) (revision 28830) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/UrgentNeedGoodsProcessingCycle.java (.../UrgentNeedGoodsProcessingCycle.java) (revision 34397) @@ -78,6 +78,10 @@ * 回收项id */ private Long recyclingItemId; + /** + * 外来器械拆分小包名称 + */ + private String splitTousseName = ""; public String getRecyclingDate() { return recyclingDate; } @@ -200,5 +204,13 @@ public void setRecyclingItemId(Long recyclingItemId) { this.recyclingItemId = recyclingItemId; } + + public String getSplitTousseName() { + return splitTousseName; + } + + public void setSplitTousseName(String splitTousseName) { + this.splitTousseName = splitTousseName; + } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java =================================================================== diff -u -r34356 -r34397 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 34356) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 34397) @@ -837,7 +837,7 @@ * @param departCoding 供应室编码 * @return */ - public List getUrgentNeedGoodsProcessingCycleData(String startTime, + public List getUrgentNeedGoodsProcessingCycleData(String startTime, String endTime, String tousseName, String departCoding); /** * 获取手术仪器追溯查询报表的数据 Index: ssts-web/src/main/webapp/jasperRtp/urgentNeedGoodsProcessingCycleReport_child_child.jasper =================================================================== diff -u Binary files differ Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SecondColumnVo.java =================================================================== diff -u -r33713 -r34397 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SecondColumnVo.java (.../SecondColumnVo.java) (revision 33713) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SecondColumnVo.java (.../SecondColumnVo.java) (revision 34397) @@ -12,6 +12,10 @@ */ private String secondColumnName; /** + * 第二列展示的列名 有时secondColumnName作为数据的key 不一定方便展示 此时可使用本属性 + */ + private String secondShowColumnName; + /** * 第二列明细 */ private List secondColumnDetaileds = null; @@ -38,5 +42,11 @@ public void setSecondColumnTotalAmount(Integer secondColumnTotalAmount) { this.secondColumnTotalAmount = secondColumnTotalAmount; } + public String getSecondShowColumnName() { + return secondShowColumnName; + } + public void setSecondShowColumnName(String secondShowColumnName) { + this.secondShowColumnName = secondShowColumnName; + } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r34356 -r34397 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 34356) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 34397) @@ -76,6 +76,7 @@ import com.forgon.disinfectsystem.entity.useRecord.UseDiposableGoodsItem; import com.forgon.disinfectsystem.entity.useRecord.UseRecord; import com.forgon.disinfectsystem.jasperreports.javabeansource.EighteenQuotaBean; +import com.forgon.disinfectsystem.jasperreports.javabeansource.FirstColumnVo; import com.forgon.disinfectsystem.jasperreports.javabeansource.ForeignTousseAfterUseDeliveryVO; import com.forgon.disinfectsystem.jasperreports.javabeansource.InvoiceQueryItem; import com.forgon.disinfectsystem.jasperreports.javabeansource.MaterialDamageBean; @@ -86,6 +87,7 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.MonthReportBeanWith2Column; import com.forgon.disinfectsystem.jasperreports.javabeansource.OperatingRoomUseReportDepartVo; import com.forgon.disinfectsystem.jasperreports.javabeansource.PackingFractionDefectiveBean; +import com.forgon.disinfectsystem.jasperreports.javabeansource.SecondColumnVo; import com.forgon.disinfectsystem.jasperreports.javabeansource.SterilizationAreaWorkLoadBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.SterilizationRecordItenBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.SupplyRoomQualityQuota; @@ -1863,29 +1865,38 @@ String urgentTotalMsg = "";//加急物品物品总计信息 if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { - List urgentNeedGoodsProcessingCycles = jasperReportManager.getUrgentNeedGoodsProcessingCycleData(startTime, endTime, tousseName, departCoding); - - if(CollectionUtils.isNotEmpty(urgentNeedGoodsProcessingCycles)){//统计加急物品物品 + List firstColumnVos = jasperReportManager.getUrgentNeedGoodsProcessingCycleData(startTime, endTime, tousseName, departCoding); + if(CollectionUtils.isNotEmpty(firstColumnVos)){//统计加急物品物品 Map urgentLevelToUrgentAmountMap = new HashMap(); Integer totalUrgentAmount = 0; - Set HasBeenCalculatedMap = new HashSet();//已经计算过的回收项 避免重复计算导致汇总数量增多 - for (UrgentNeedGoodsProcessingCycle urgentNeedGoodsProcessingCycle : urgentNeedGoodsProcessingCycles) { - Long recyclingItemId = urgentNeedGoodsProcessingCycle.getRecyclingItemId(); - if(HasBeenCalculatedMap.contains(recyclingItemId)){ - continue;//计算过的回收项 不再计算 + Set hasBeenCalculatedMap = new HashSet();//已经计算过的回收项 避免重复计算导致汇总数量增多 + for (FirstColumnVo firstColumnVo : firstColumnVos) { + List secondColumnVos = firstColumnVo.getFirstColumnDetaileds(); + if(CollectionUtils.isNotEmpty(secondColumnVos)){ + for (SecondColumnVo secondColumnVo : secondColumnVos) { + List urgentNeedGoodsProcessingCycles = secondColumnVo.getSecondColumnDetaileds(); + if(CollectionUtils.isNotEmpty(urgentNeedGoodsProcessingCycles)){ + for (UrgentNeedGoodsProcessingCycle urgentNeedGoodsProcessingCycle : urgentNeedGoodsProcessingCycles) { + Long recyclingItemId = urgentNeedGoodsProcessingCycle.getRecyclingItemId(); + if(hasBeenCalculatedMap.contains(recyclingItemId)){ + continue;//计算过的回收项 不再计算 + } + hasBeenCalculatedMap.add(recyclingItemId); + String urgentLevel = urgentNeedGoodsProcessingCycle.getUrgentLevel(); + Integer urgentAmount = urgentNeedGoodsProcessingCycle.getUrgentAmount(); + if(urgentAmount == null){ + continue; + } + if(urgentLevelToUrgentAmountMap.containsKey(urgentLevel)){ + urgentLevelToUrgentAmountMap.put(urgentLevel, urgentLevelToUrgentAmountMap.get(urgentLevel) + urgentAmount); + }else{ + urgentLevelToUrgentAmountMap.put(urgentLevel, urgentAmount); + } + totalUrgentAmount += urgentAmount; + } + } + } } - HasBeenCalculatedMap.add(recyclingItemId); - String urgentLevel = urgentNeedGoodsProcessingCycle.getUrgentLevel(); - Integer urgentAmount = urgentNeedGoodsProcessingCycle.getUrgentAmount(); - if(urgentAmount == null){ - continue; - } - if(urgentLevelToUrgentAmountMap.containsKey(urgentLevel)){ - urgentLevelToUrgentAmountMap.put(urgentLevel, urgentLevelToUrgentAmountMap.get(urgentLevel) + urgentAmount); - }else{ - urgentLevelToUrgentAmountMap.put(urgentLevel, urgentAmount); - } - totalUrgentAmount += urgentAmount; } if(totalUrgentAmount > 0){ urgentTotalMsg = " 加急物品总数量 : " + totalUrgentAmount + " , 按级别统计 : "; @@ -1903,8 +1914,10 @@ } } parametMap.put("urgentTotalMsg", urgentTotalMsg); + //替代了urgentNeedGoodsProcessingCycle.jasper + requestParameters.put("jasperreportName", "urgentNeedGoodsProcessingCycleReport.jasper"); - return urgentNeedGoodsProcessingCycles; + return firstColumnVos; } }else if ("materialMissItemView".equals(reportName)) {//器械丢失明细统计报表 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Index: ssts-web/src/main/webapp/jasperRtp/urgentNeedGoodsProcessingCycleReport_child.jasper =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/jasperRtp/urgentNeedGoodsProcessingCycleReport.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/urgentNeedGoodsProcessingCycleReport.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/urgentNeedGoodsProcessingCycleReport.jrxml (revision 34397) @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: ssts-web/src/main/webapp/jasperRtp/urgentNeedGoodsProcessingCycleReport.jasper =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/jasperRtp/urgentNeedGoodsProcessingCycleReport_child.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/urgentNeedGoodsProcessingCycleReport_child.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/urgentNeedGoodsProcessingCycleReport_child.jrxml (revision 34397) @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: ssts-web/src/main/webapp/jasperRtp/urgentNeedGoodsProcessingCycleReport_child_child.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/urgentNeedGoodsProcessingCycleReport_child_child.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/urgentNeedGoodsProcessingCycleReport_child_child.jrxml (revision 34397) @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r34383 -r34397 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 34383) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 34397) @@ -20835,9 +20835,10 @@ } @Override - public List getUrgentNeedGoodsProcessingCycleData( + public List getUrgentNeedGoodsProcessingCycleData( String startTime, String endTime, String tousseName, String departCoding) { - List list = new ArrayList(); + List firstColumnVos = new ArrayList(); + Map firstColumnVoMap = new HashMap(); if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { String betweenSql = "and " + dateQueryAdapter.dateAreaSql("temp.回收时间", startTime, endTime, true); @@ -20856,9 +20857,9 @@ whereSqlForOrgUnitCoding = ""; } String sql = - "select * from (" + + "select * from (select * from (" + //--1.使用记录转申请单后的预回收、回收、清洗交接、装配(全部装配+部分装配) - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,ttr.transitionTime '预回收时间',rr.recyclingTime '回收时间',wtr.transitionTime '清洗交接时间',tit2.operationTime '装配时间',sr.startDate '灭菌开始时间',sr.endDate '灭菌结束时间',i.sendTime '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,ttr.transitionTime '预回收时间',rr.recyclingTime '回收时间',wtr.transitionTime '清洗交接时间',tit2.operationTime '装配时间',sr.startDate '灭菌开始时间',sr.endDate '灭菌结束时间',i.sendTime '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',sz.ownGroup '灭菌方式',b2.barcode '器械包条码',tit2.idCardInstanceBarcode '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -20880,7 +20881,7 @@ "union all " + //--2.使用记录转申请单后的预回收、回收、清洗交接 (排除装配的包实例数据) //--2.1 使用记录转申请单后的预回收、回收、清洗交接但还未装配的数据 - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,ttr.transitionTime '预回收时间',rr.recyclingTime '回收时间',wtr.transitionTime '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,ttr.transitionTime '预回收时间',rr.recyclingTime '回收时间',wtr.transitionTime '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',null '灭菌方式',null '器械包条码',null '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -20897,7 +20898,7 @@ "and ri.id not in (select sourceRecyclingItemId from TousseInstance where sourceRecyclingItemId is not null) " + "union all " + //--2.2使用记录转申请单后的预回收、回收、清洗交接、已经开始装配但未完全装配完的未装配部分的数据 - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,ttr.transitionTime '预回收时间',rr.recyclingTime '回收时间',wtr.transitionTime '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,ttr.transitionTime '预回收时间',rr.recyclingTime '回收时间',wtr.transitionTime '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',null '灭菌方式',null '器械包条码',null '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -20915,7 +20916,7 @@ "and ri.id in (select sourceRecyclingItemId from TousseInstance where sourceRecyclingItemId is not null) " + "union all " + //--3.使用记录转申请单后的预回收、回收、装配 (排除清洗交接的数据)(全部装配+部分装配) - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,ttr.transitionTime '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',tit2.operationTime '装配时间',sr.startDate '灭菌开始时间',sr.endDate '灭菌结束时间',i.sendTime '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,ttr.transitionTime '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',tit2.operationTime '装配时间',sr.startDate '灭菌开始时间',sr.endDate '灭菌结束时间',i.sendTime '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',sz.ownGroup '灭菌方式',b2.barcode '器械包条码',tit2.idCardInstanceBarcode '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -20936,7 +20937,7 @@ "union all " + //--4.使用记录转申请单后的预回收、回收 (排除清洗交接与装配的包实例数据) //--4.1 使用记录转申请单后的预回收、回收、且未装配 - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,ttr.transitionTime '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,ttr.transitionTime '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',null '灭菌方式',null '器械包条码',null '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -20952,7 +20953,7 @@ "and ri.id not in (select sourceRecyclingItemId from TousseInstance where sourceRecyclingItemId is not null) " + "union all " + //--4.2 使用记录转申请单后的预回收、回收、已经开始装配但未完全装配完的未装配部分的数据 - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,ttr.transitionTime '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,ttr.transitionTime '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',null '灭菌方式',null '器械包条码',null '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -20969,7 +20970,7 @@ "and ri.id in (select sourceRecyclingItemId from TousseInstance where sourceRecyclingItemId is not null) " + "union all " + //--5.使用记录转申请单后的回收、清洗交接、装配 (排除预回收数据)(全部装配+部分装配) - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',wtr.transitionTime '清洗交接时间',tit2.operationTime '装配时间',sr.startDate '灭菌开始时间',sr.endDate '灭菌结束时间',i.sendTime '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',wtr.transitionTime '清洗交接时间',tit2.operationTime '装配时间',sr.startDate '灭菌开始时间',sr.endDate '灭菌结束时间',i.sendTime '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',sz.ownGroup '灭菌方式',b2.barcode '器械包条码',tit2.idCardInstanceBarcode '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -20990,7 +20991,7 @@ "union all " + //--6.使用记录转申请单后的回收、清洗交接 (排除预回收与装配的包实例数据) //--6.1 使用记录转申请单后的回收、清洗交接、且未装配 - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',wtr.transitionTime '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',wtr.transitionTime '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',null '灭菌方式',null '器械包条码',null '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -21006,7 +21007,7 @@ "and ri.id not in (select sourceRecyclingItemId from TousseInstance where sourceRecyclingItemId is not null) " + "union all " + //--6.2 使用记录转申请单后的回收、清洗交接、已经开始装配但未完全装配完的未装配部分的数据 - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',wtr.transitionTime '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',wtr.transitionTime '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',null '灭菌方式',null '器械包条码',null '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -21023,7 +21024,7 @@ "and ri.id in (select sourceRecyclingItemId from TousseInstance where sourceRecyclingItemId is not null) " + "union all " + //--7.使用记录转申请单后的回收、装配 (排除预回收与清洗交接数据)(全部装配+部分装配) - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',tit2.operationTime '装配时间',sr.startDate '灭菌开始时间',sr.endDate '灭菌结束时间',i.sendTime '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',tit2.operationTime '装配时间',sr.startDate '灭菌开始时间',sr.endDate '灭菌结束时间',i.sendTime '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',sz.ownGroup '灭菌方式',b2.barcode '器械包条码',tit2.idCardInstanceBarcode '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -21043,7 +21044,7 @@ "union all " + //--8.使用记录转申请单后的回收 (排除预回收、清洗交接与装配的包实例数据) //--8.1使用记录转申请单后的回收、查询未装配的数据 - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',null '灭菌方式',null '器械包条码',null '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -21058,7 +21059,7 @@ "and ri.id not in (select sourceRecyclingItemId from TousseInstance where sourceRecyclingItemId is not null) " + "union all " + //--8.2.使用记录转申请单后的回收、查询有装配但未装完的未装配部分的数据 - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',null '灭菌方式',null '器械包条码',null '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -21074,7 +21075,7 @@ "and ri.id in (select sourceRecyclingItemId from TousseInstance where sourceRecyclingItemId is not null) " + "union all " + //--9.手工添加回收(或添加申请单后的回收)后的回收、装配 (排除预回收数据、手工添加的不会做预回收,清洗交接没有意义) - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',tit2.operationTime '装配时间',sr.startDate '灭菌开始时间',sr.endDate '灭菌结束时间',i.sendTime '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',tit2.operationTime '装配时间',sr.startDate '灭菌开始时间',sr.endDate '灭菌结束时间',i.sendTime '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',sz.ownGroup '灭菌方式',b2.barcode '器械包条码',tit2.idCardInstanceBarcode '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -21091,7 +21092,7 @@ "union all " + //--10.手工添加回收(或添加申请单后的回收)后的回收 (排除预回收、装配的包实例数据、手工添加的不会做预回收,清洗交接没有意义)(全部装配+部分装配) //--10.1.手工添加回收(或添加申请单后的回收)后的回收,未装配的数据 - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',null '灭菌方式',null '器械包条码',null '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -21103,7 +21104,7 @@ "and ri.tousseDefinitionId not in (select tousseDefinition_id from TousseInstance where recyclingRecordId=rr.id and sourceRecyclingItemId is null) " + "union all " + //--10.2.手工添加回收(或添加申请单后的回收)后的回收,查询有装配但未装完的未装配部分的数据() - "select ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + + "select null tousseType,null parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',null '装配时间',null '灭菌开始时间',null '灭菌结束时间',null '发货时间'," + "ri.tousseName '物品名称',ri.urgentLevel '加急类型',null '灭菌方式',null '器械包条码',null '标识牌条码' " + "from RecyclingRecord rr " + "join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + @@ -21113,12 +21114,22 @@ "and (ti.isTerminated is null or ti.isTerminated<>1) " + "and (ti.id is null or ti.id not in (select tousseItemId from TousseInstance where tousseItemId is not null)) " + "and ri.id in (select sourceRecyclingItemId from TousseInstance where sourceRecyclingItemId is not null) " - + " union all select ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',tit.operationTime '装配时间',sr.startDate '灭菌开始时间' " + + + ") temp2 " + + " where temp2.id not in(" + + " select ri.id from RecyclingRecord rr " + + " join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + + " join TousseInstance tit on tit.recyclingRecordId=rr.id join TousseDefinition td on td.id=tit.tousseDefinition_id " + + " left join TousseItem ti on ti.recyclingApplication_ID=rr.recyclingApplication_id and ti.tousseDefinitionId=ri.tousseDefinitionId " + + " where ri.urgentAmount > 0 and (ti.isTerminated is null or ti.isTerminated<>1) " + + " and td.tousseType='"+ TousseDefinition.PACKAGE_TYPE_SPLIT +"') " + + "union all " + + " select '"+ TousseDefinition.PACKAGE_TYPE_SPLIT +"' tousseType,tdc.name parentTousseName, ri.id,ri.urgentAmount,rr.orgUnitCoding,null '预回收时间',rr.recyclingTime '回收时间',null '清洗交接时间',tit.operationTime '装配时间',sr.startDate '灭菌开始时间' " + " ,sr.endDate '灭菌结束时间',i.sendTime '发货时间',tit.tousseName '物品名称',ri.urgentLevel '加急类型',sz.ownGroup '灭菌方式',b.barcode '器械包条码',null '标识牌条码' " + " from RecyclingRecord rr " + " join RecyclingItem ri on ri.recyclingRecord_id=rr.id " + " join TousseInstance tit on tit.recyclingRecordId=rr.id join TousseDefinition td on td.id=tit.tousseDefinition_id " - + " join barcodeDevice b on tit.id=b.id " + + " join TousseDefinition tdc on tdc.id=td.parentID join barcodeDevice b on tit.id=b.id " + " left join SterilizationRecord sr on sr.id=tit.sterilizationRecord_id " + " left join Sterilizer sz on sr.sterilizer_id=sz.id " + " left join invoice i on i.id=tit.invoice_id " @@ -21180,9 +21191,10 @@ Long sterilizationToDeliveryDuration = (invoiceSendDateTime.getTime() - endDateTime.getTime())/1000/60; bean.setSterilizationToDeliveryDuration(sterilizationToDeliveryDuration.intValue()); } - + String firstColumnName = ""; if (StringTools.isNotBlank(recyclingTime)) { - bean.setRecyclingDate(recyclingTime.substring(0, 10)); + firstColumnName = recyclingTime.substring(0, 10); + bean.setRecyclingDate(firstColumnName); bean.setRecyclingTime(recyclingTime.substring(11)); } if (StringTools.isNotBlank(invoiceSendTime)) { @@ -21194,13 +21206,67 @@ }else{ bean.setRecyclingItemId(id.longValue()); } - bean.setGoodsName(name); + String secondColumnName = ""; + if(TousseDefinition.PACKAGE_TYPE_SPLIT.equals(result.getString("tousseType"))){ + bean.setSplitTousseName(name); + bean.setGoodsName(result.getString("parentTousseName")); + if(StringUtils.isNotBlank(bean.getGoodsName())){ + secondColumnName = bean.getGoodsName() + "-_-" + bean.getRecyclingItemId() + "-_-";//避免同一天 同名的包重合在一起 + } + }else{ + bean.setGoodsName(name); + if(StringUtils.isNotBlank(bean.getGoodsName())){ + secondColumnName = bean.getGoodsName() + "-_-" + bean.getRecyclingItemId() + "-_-" + barcode+ "-_-" + idCardInstanceBarcode;//避免同一天 同名的包重合在一起 + } + } bean.setUrgentLevel(StringTools.isBlank(urgentLevel) ? "加急" : urgentLevel); bean.setBarcode(barcode); bean.setIdCardInstanceBarcode(idCardInstanceBarcode); bean.setSterilerGroup(ownGroup); bean.setUrgentAmount(urgentAmount); - list.add(bean); + + if(StringUtils.isBlank(firstColumnName)){ + firstColumnName = null; + } + if(StringUtils.isBlank(secondColumnName)){ + secondColumnName = null; + } + FirstColumnVo firstColumnVo = null; + SecondColumnVo secondColumnVo = null; + List secondColumnVos = null; + List urgentNeedGoodsProcessingCycleVOs = null; + if(firstColumnVoMap.containsKey(firstColumnName)){ + firstColumnVo = firstColumnVoMap.get(firstColumnName); + secondColumnVos = firstColumnVo.getFirstColumnDetaileds(); + }else{ + firstColumnVoMap.clear();//因为是按第一列的值排序的, 所以找不到就说明是新的列值,旧的数据可以清掉了 + firstColumnVo = new FirstColumnVo(); + firstColumnVo.setFirstColumnName(firstColumnName); + secondColumnVos = new ArrayList(); + firstColumnVo.setFirstColumnDetaileds(secondColumnVos); + firstColumnVoMap.put(firstColumnName, firstColumnVo); + firstColumnVos.add(firstColumnVo); + } + if(!CollectionUtils.isEmpty(secondColumnVos)){ + for (SecondColumnVo findSecondColumnVo : secondColumnVos) { + if(StringUtils.equals(findSecondColumnVo.getSecondColumnName(), secondColumnName)){ + secondColumnVo = findSecondColumnVo; + break; + } + } + } + if(secondColumnVo == null){ + secondColumnVo = new SecondColumnVo(); + secondColumnVo.setSecondColumnName(secondColumnName); + secondColumnVo.setSecondShowColumnName(bean.getGoodsName()); + secondColumnVos.add(secondColumnVo); + urgentNeedGoodsProcessingCycleVOs = new ArrayList(); + secondColumnVo.setSecondColumnDetaileds(urgentNeedGoodsProcessingCycleVOs); + }else{ + urgentNeedGoodsProcessingCycleVOs = secondColumnVo.getSecondColumnDetaileds(); + } + secondColumnVo.getSecondColumnDetaileds().add(bean); + firstColumnVo.setFirstColumnTotalAmount(MathTools.add(bean.getUrgentAmount(), firstColumnVo.getFirstColumnTotalAmount()).intValue()); } } catch (SQLException e) { e.printStackTrace(); @@ -21209,7 +21275,7 @@ } } - return list; + return firstColumnVos; } @Override