Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/packing/PackingRecord.java =================================================================== diff -u -r13425 -r14358 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/packing/PackingRecord.java (.../PackingRecord.java) (revision 13425) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/packing/PackingRecord.java (.../PackingRecord.java) (revision 14358) @@ -50,6 +50,8 @@ private String orgUnitCoding; + private String orgUnitName; + private String sterilizer;//灭菌炉 private String frequency;//炉次 @@ -128,6 +130,14 @@ this.orgUnitCoding = orgUnitCoding; } + public String getOrgUnitName() { + return orgUnitName; + } + + public void setOrgUnitName(String orgUnitName) { + this.orgUnitName = orgUnitName; + } + public String getTaskGroup() { return taskGroup; } Index: ssts-web/src/main/webapp/dataUpdater/sqls/4.2.6_4.2.7.sql =================================================================== diff -u --- ssts-web/src/main/webapp/dataUpdater/sqls/4.2.6_4.2.7.sql (revision 0) +++ ssts-web/src/main/webapp/dataUpdater/sqls/4.2.6_4.2.7.sql (revision 14358) @@ -0,0 +1 @@ +update PackingRecord set orgUnitName = (select name from OrgUnit where orgUnitCoding = PackingRecord.orgUnitCoding) where orgUnitCoding is not null; \ No newline at end of file Index: forgon-core/src/main/java/com/forgon/Constants.java =================================================================== diff -u -r14174 -r14358 --- forgon-core/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 14174) +++ forgon-core/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 14358) @@ -18,7 +18,7 @@ public final static String[] SOFTWARE_VERSION_ARRAY = new String[] { "3.3.0","3.3.8", "3.3.9", "3.3.10","3.3.12","3.3.13","3.8.0","3.9.0","3.9.1","3.9.2","4.0.2","4.0.3","4.0.4", "4.0.5","4.0.6","4.0.44","4.0.45","4.1.0","4.1.1","4.1.2","4.1.3","4.1.4","4.1.5","4.1.6","4.1.7","4.1.8","4.1.9","4.2.0","4.2.1","4.2.2", - "4.2.3","4.2.4","4.2.5","4.2.6"};// 版本列表 + "4.2.3","4.2.4","4.2.5","4.2.6","4.2.7"};// 版本列表 public final static List SOFTWARE_VERSION_LIST = Arrays .asList(SOFTWARE_VERSION_ARRAY); public final static String SOFTWARE_VERSION = SOFTWARE_VERSION_ARRAY[SOFTWARE_VERSION_ARRAY.length - 1];// 软件最新版本 Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r14322 -r14358 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 14322) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 14358) @@ -3720,13 +3720,16 @@ String returnGoodsItemPredicate = "1=1"; String receiveRecordItemPredicate = "1=1"; String outEntryPredicate = "1=1"; + String packingDisposableGoodsTypePredicate = "1=1"; + String disposableGoodsIdSql = ""; if(StringUtils.isNotBlank(disposableGoodsType)){ disposableGoodsIdSql = String.format(" select id from DisposableGoods where type='%s' ", disposableGoodsType); invoiceItemDisposableGoodsTypePredicate = String.format(" (ii.diposable='否' or ii.disposableGoodsId in(%s)) ", disposableGoodsIdSql); disposableGoodsInvoiceAmountPredicate = String.format(" (ii.diposable='是' and ii.disposableGoodsId in(%s)) ", disposableGoodsIdSql); returnGoodsItemPredicate = String.format(" (r.type!='一次性物品' or i.disposableGoodsId in(%s)) ", disposableGoodsIdSql); outEntryPredicate = String.format(" (ged.disposableGoodsID in(%s)) ", disposableGoodsIdSql); + packingDisposableGoodsTypePredicate = String.format(" (dgi.disposableGoodsID in(%s)) ", disposableGoodsIdSql); } if(StringUtils.isBlank(tousseType) || !"器械材料".equals(tousseType)){ //物品类型sql @@ -4040,7 +4043,33 @@ DatabaseUtil.closeResultSetAndStatement(rs4); } } - + // 一次性物品装配扣减库存 + { + if(isSupplyRoomUser && (StringUtils.isBlank(tousseType) || TousseItem.TYPE_DIPOSABLE_GOODS.equals(tousseType))){ + String sql = "select '一次性物品',(dgi.amount*dgi.fluctuationPrice),dgi.amount,pr.orgUnitCoding,pr.orgUnitName " + + "from PackingRecord pr inner join DiposableGoodsItem dgi on pr.id = dgi.packingRecordId where " + +packingDisposableGoodsTypePredicate+" and " + getHandleDeptCodeSql("pr.orgUnitCoding") + " and pr.packTime " + betweenSql; + + ResultSet rs = objectDao.executeSql(sql); + try { + while(rs.next()){ + String type = rs.getString(1); + Double price = rs.getDouble(2); + Double amount = rs.getDouble(3); + String code = rs.getString(4); + String orgUnitName = rs.getString(5); + if("一次性物品".equals(type)){ + newMonthReport(code, orgUnitName, "1", "价格统计", "一次性物品总价", price, list); + newMonthReport(code, orgUnitName, "2", "数量统计", "一次性物品数量", amount, list); + } + } + }catch(Exception e){ + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + } //器械包(含消毒物品、敷料包等)发货数量统计 if(StringUtils.isBlank(tousseType) || (!"器械材料".equals(tousseType) && !TousseItem.TYPE_DIPOSABLE_GOODS.equals(tousseType))){ @@ -4131,6 +4160,7 @@ public List getDepartmentMonthDetailList( String startTime,String endTime, String departSearch,String departCoding,String typeSearch, String goodsNameSearch, String batch,String searchType,boolean disinfection,String disposableGoodsType,String goodsType) { + boolean isSupplyRoomUser = supplyRoomConfigManager.isSupplyRoomUser(); if(!supplyRoomConfigManager.isSupplyRoomUser()){ departSearch = AcegiHelper.getCurrentOrgUnitName(); departCoding = AcegiHelper.getCurrentOrgUnitCode(); @@ -4143,6 +4173,7 @@ String monthFilterSql = " "; String returnGoodsFilterSql = " "; String returnGoodsTimeFilterSql = " "; + String packingDisposableGoodsTimeSql = " "; String returnGoodsDepartFilterSql = " "; String materialNameFilterSql = " "; String materialTypeFilterSql = " "; @@ -4153,6 +4184,7 @@ String invoiceItemDisposableGoodsTypePredicate = " (1=1) "; String diposableGoodsItemPredicate = " (1=1) "; + String packingDisposableGoodsTypeSql = " (1=1) "; String disposableGoodsInvoiceAmountPredicate = " (ii.diposable='是') "; String returnGoodsItemPredicate = " (1=1) "; String receiveRecordItemPredicate = " (1=1) "; @@ -4163,6 +4195,7 @@ disposableGoodsIdSql = String.format(" select id from DisposableGoods where type='%s' ", disposableGoodsType); invoiceItemDisposableGoodsTypePredicate = String.format(" (ii.diposable='否' or ii.disposableGoodsId in(%s)) ", disposableGoodsIdSql); diposableGoodsItemPredicate = String.format(" (d.disposableGoodsID in(%s)) ", disposableGoodsIdSql); + packingDisposableGoodsTypeSql = String.format(" (dgi.disposableGoodsID in(%s)) ", disposableGoodsIdSql); disposableGoodsInvoiceAmountPredicate = String.format(" (ii.diposable='是' and ii.disposableGoodsId in(%s)) ", disposableGoodsIdSql); // returnGoodsItemPredicate = String.format(" (rr.type!='一次性物品' or rr.disposableGoodsId in(%s)) ", disposableGoodsIdSql); returnGoodsItemPredicate = String.format(" (ri.disposableGoodsId in(%s)) ", disposableGoodsIdSql); @@ -4171,6 +4204,12 @@ } if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { + String betweenSql = " between " + + dateQueryAdapter.dateConverAdapter2( startTime + , "yyyy-mm-dd HH24:MI:SS") + + " and " + + dateQueryAdapter.dateConverAdapter2( endTime + , "yyyy-mm-dd HH24:MI:SS"); monthFilterSql = " and i.sendtime between " + dateQueryAdapter.dateConverAdapter2( startTime , "yyyy-mm-dd HH24:MI:SS") @@ -4184,6 +4223,7 @@ + dateQueryAdapter.dateConverAdapter2( endTime , "yyyy-mm-dd HH24:MI:SS"); returnGoodsFilterSql = returnGoodsTimeFilterSql; + packingDisposableGoodsTimeSql = " and pr.packTime "+betweenSql; lostMaterialFilterSql = " and r.additionalTime between " + dateQueryAdapter.dateConverAdapter2( startTime , "yyyy-mm-dd HH24:MI:SS") @@ -4212,17 +4252,20 @@ } else { monthFilterSql = " and 1=2 "; returnGoodsFilterSql = " and 1=2 "; + packingDisposableGoodsTimeSql = " and 1=2 "; lostMaterialFilterSql = " and 1=2 "; damageFilterSql = " and 1=2 "; } String departFilterSql = ""; + String packingDisposableGoodsDepartSql = ""; if (StringUtils.isNotBlank(departSearch)) { departFilterSql = " and i.settleaccountsdepart = '" + departSearch + "'"; returnGoodsFilterSql += " and rr.depart = '" + departSearch + "'"; returnGoodsDepartFilterSql = " and rr.depart = '" + departSearch + "'"; + packingDisposableGoodsDepartSql = " and pr.orgUnitName = '" + departSearch + "'"; lostMaterialFilterSql += " and r.depart = '" + departSearch + "'"; damageFilterSql += " and r.depart = '" @@ -4368,13 +4411,17 @@ } } String nameFilterSql = ""; + String packingDisposableGoodsNameSql = ""; if (StringUtils.isNotBlank(goodsNameSearch)) { nameFilterSql = " and d.name = '" + goodsNameSearch + "'"; + packingDisposableGoodsNameSql = " and dgi.name = '" + goodsNameSearch + "'"; + } if (StringUtils.isNotBlank(batch)) { nameFilterSql += " and d.batch = '" + batch + "'"; goodsNameFilterSql += " and 1=2 "; returnGoodsFilterSql += " and ri.batchNumber = '"+batch+"' "; + packingDisposableGoodsNameSql += " and dgi.batch = '"+batch+"' "; lostMaterialFilterSql += " and 1=2 "; damageFilterSql += " and 1=2 "; supplyRoomDiposableGoodsFilterSql += " and dbs.batchNumber = '"+batch+"'"; @@ -4409,6 +4456,20 @@ + expensiveDisposablegoodsSql + " group by i.settleaccountsdepart,d.name,d.batch) "; } + String packingDisposableGoodsSql = " "; + { + if(StringUtils.isBlank(typeSearch) || "一次性物品".equals(typeSearch)){ + packingDisposableGoodsSql = " union all (select pr.orgUnitName,dgi.name as name,sum(dgi.amount) as amount,sum(dgi.fluctuationPrice*dgi.amount) as settlementprice,'一次性物品' as type" + + ",dgi.batch from PackingRecord pr inner join DiposableGoodsItem dgi on pr.id = dgi.packingRecordId " + + " where "+getHandleDeptCodeSql("pr.orgUnitCoding")+" " + +" and "+packingDisposableGoodsTypeSql + + packingDisposableGoodsTimeSql + + packingDisposableGoodsDepartSql + + packingDisposableGoodsNameSql +// + expensiveDisposablegoodsSql + + " group by pr.orgUnitName,dgi.name,dgi.batch) "; + } + } String materialInvoiceSql = " "; if (StringUtils.isBlank(typeSearch) || "器械材料".equals(typeSearch) || "高值耗材".equals(typeSearch)) { @@ -4473,7 +4534,7 @@ + " group by oge.orgUnitName, ged.goodsName,dgb.batchNumber) "; - String sql = tousseSql + diposableGoodsSql + materialInvoiceSql + returnGoodsSql + materialReturnSql + supplyRoomDiposableGoodsSql + appropriateOutDiposableGoodsSql + String sql = tousseSql + diposableGoodsSql + packingDisposableGoodsSql + materialInvoiceSql + returnGoodsSql + materialReturnSql + supplyRoomDiposableGoodsSql + appropriateOutDiposableGoodsSql +stocktakeOutDiposableGoodsSql;