Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r35952 -r35954 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35952) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35954) @@ -189,6 +189,7 @@ import com.forgon.disinfectsystem.jasperreports.util.DepartmentMonthDetailHelper; import com.forgon.disinfectsystem.jasperreports.util.DeviceMaintenanceCusDataSourceHelper; import com.forgon.disinfectsystem.jasperreports.util.DeviceMaintenanceHelper; +import com.forgon.disinfectsystem.jasperreports.util.DisposableGoodsInventoryHelper; import com.forgon.disinfectsystem.jasperreports.util.EighteenQuotaBeanHelper; import com.forgon.disinfectsystem.jasperreports.util.ForeignTousseApplicationReportHelper; import com.forgon.disinfectsystem.jasperreports.util.ForeignTousseReportHelper; @@ -392,6 +393,8 @@ private TousseDeliverDetailReportHelper tousseDeliverDetailReportHelper; @Autowired private ReportHelper1 reportHelper1; + @Autowired + private DisposableGoodsInventoryHelper disposableGoodsInventoryHelper; /** * 利用sql语句做数据源创建JasperPrint对象 * @param realPath 报表的jasper文件在服务器本地机子的全路径 @@ -582,214 +585,10 @@ String endDate, String tousseName, String orgUnit,String tousseType, String tousseGroupName, String sterilizationMode){ return informationOfDepartmentOperationMonitoringHelper.getSummaryInformationOfDepartmentOperationMonitoring(startDate, endDate, tousseName, orgUnit, tousseType, tousseGroupName, sterilizationMode); } - private Map getWarehouseData(String sql, - Map diposableGoodsMap) { - - ResultSet rs = objectDao.executeSql(sql); - String name = ""; - String specification = ""; - Integer amount = 0; - try { - if (rs != null) { - while (rs.next()) { - name = rs.getString(1); - specification = rs.getString(2); - amount = rs.getInt(3); - if (!"".equals(specification) && specification != null) { - name = name + "[" + specification + "]"; - } - if (diposableGoodsMap != null - && diposableGoodsMap.size() > 0 - && diposableGoodsMap.get(name) != null) { - Integer tempAmount = diposableGoodsMap.get(name); - diposableGoodsMap.put(name, tempAmount + amount); - } else if(diposableGoodsMap != null){ - diposableGoodsMap.put(name, amount); - } - } - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(rs); - } - return diposableGoodsMap; - } - - /** - * 获取月份供应室领用物品入库数据 - * - * @param diposableGoodsMap - * @param startDay - * @param endDay - * @return - */ - private Map getInWarehouseData( - Map diposableGoodsMap, String startDay, - String endDay) { - - String sql = "select dg.name,dg.specification,gei.amount from GodownEntry ge,GodownEntryItem gei," + DisposableGoodsStock.class.getSimpleName() + " dg" - + " where ge.id = gei.godownEntry_id" - + " and gei.diposableGoods_id = dg.id" - + " and dg.isSupplyRoomGoods = '是'" - + " and ge.type = '入库单'" - + " and ge.time between " - + dateQueryAdapter.dateAdapter(startDay) - + " and " - + dateQueryAdapter.dateAdapter(endDay); - - return getWarehouseData(sql, diposableGoodsMap); - - } - - /** - * 获取月份供应室领用物品出库数据 - * - * @param diposableGoodsMap - * @param startDay - * @param endDay - * @return - */ - private Map getOutWarehouseData( - Map diposableGoodsMap, String startDay, - String endDay) { - - String sql = "select dg.name,dg.specification,rri.amount from" - + " ReceiveRecord rr,ReceiveRecordItem rri," + DisposableGoodsBatchStock.class.getSimpleName() + " dgbs," + DisposableGoodsStock.class.getSimpleName() + " dg" - + " where rr.id = rri.receiveRecord_id" - + " and rri.DiposableGoodBatchStock_id = dgbs.id" - + " and dgbs.diposableGoods_id = dg.id" - + " and dg.isSupplyRoomGoods = '是'" + " and rr.time between "+dateQueryAdapter.dateAdapter(startDay) - + " and "+ dateQueryAdapter.dateAdapter(endDay); - - diposableGoodsMap = getWarehouseData(sql, diposableGoodsMap); - - sql = "select dg.name,dg.specification,gei.amount from GodownEntry ge,GodownEntryItem gei," + DisposableGoodsStock.class.getSimpleName() + " dg" - + " where ge.id = gei.godownEntry_id" - + " and gei.diposableGoods_id = dg.id" - + " and dg.isSupplyRoomGoods = '是'" - + " and ge.type = '退库单'" - + " and ge.time between " - + dateQueryAdapter.dateAdapter(startDay) - + " and " - + dateQueryAdapter.dateAdapter(endDay); - - return getWarehouseData(sql, diposableGoodsMap); - - } - @Override public List getDisposableGoodsInventoryBean( String startDay, String endDay) { - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); - Date date = null; - Date currentDate = new Date(); - String time = ""; - try { - date = sdf.parse(startDay); - String format = sdf.format(currentDate); - time = sdf.format(date); - currentDate = sdf.parse(format); - } catch (ParseException e) { - e.printStackTrace(); - } - if (currentDate.equals(date)) { - - Map diposableGoodsOutWarehouseMap = new HashMap(); - Map diposableGoodsInWarehouseMap = new HashMap(); - Map dgiMap = new HashMap(); - List dgiList = new ArrayList(); - // 获取本月出库数据 - diposableGoodsOutWarehouseMap = getOutWarehouseData( - diposableGoodsOutWarehouseMap, startDay, endDay); - // 获取本月入库数据 - diposableGoodsInWarehouseMap = getInWarehouseData( - diposableGoodsInWarehouseMap, startDay, endDay); - - if (diposableGoodsOutWarehouseMap != null - && diposableGoodsOutWarehouseMap.size() > 0) { - Iterator> iterator = diposableGoodsOutWarehouseMap - .entrySet().iterator(); - while (iterator.hasNext()) { - DisposableGoodsInventory dgi = new DisposableGoodsInventory(); - Entry entry = iterator.next(); - String name = entry.getKey(); - Integer outWarehouse = entry.getValue(); - dgi.setName(name); - dgi.setOutWarehouse(outWarehouse + ""); - dgi.setInWarehouse("0"); - dgiMap.put(name, dgi); - } - } - - if (diposableGoodsInWarehouseMap != null - && diposableGoodsInWarehouseMap.size() > 0) { - Iterator> iterator = diposableGoodsInWarehouseMap - .entrySet().iterator(); - while (iterator.hasNext()) { - Entry entry = iterator.next(); - String name = entry.getKey(); - Integer inWarehouse = entry.getValue(); - DisposableGoodsInventory dgi = null; - if (dgiMap != null && dgiMap.size() > 0 - && dgiMap.get(name) != null) { - dgi = dgiMap.get(name); - dgi.setInWarehouse(inWarehouse + ""); - } else { - dgi = new DisposableGoodsInventory(); - dgi.setName(name); - dgi.setInWarehouse(inWarehouse + ""); - dgi.setOutWarehouse("0"); - } - dgiMap.put(name, dgi); - } - } - - // 删除本月数据 - String sql = "delete DisposableGoodsInventory where time between " - + dateQueryAdapter.dateAdapter(startDay) + " and " - + dateQueryAdapter.dateAdapter(endDay); - objectDao.excuteSQL(sql); - - String title = "消耗物品月盘点(" + time + ")"; - // 保存数据 - if (dgiMap != null && dgiMap.size() > 0) { - Iterator> iterator = dgiMap - .entrySet().iterator(); - int i = 0; - while (iterator.hasNext()) { - i++; - Entry entry = iterator - .next(); - DisposableGoodsInventory dgi = entry.getValue(); - dgi.setSnumber(i); - dgi.setTime(date); - - dgi.setTitle(title); - // 查询当月数据时需保存 - objectDao.save(dgi); - dgiList.add(dgi); - } - } - return dgiList; - } else if (date.before(currentDate)) {// 查询之前的月份 - String sql = "where po.time between " - + dateQueryAdapter.dateAdapter(startDay) + " and " - + dateQueryAdapter.dateAdapter(endDay); - List dgiList = objectDao.findBySql( - DisposableGoodsInventory.class.getSimpleName(), sql); - for (int i = 0; i < dgiList.size(); i++) { - DisposableGoodsInventory disposableGoodsInventory = dgiList - .get(i); - String title = "消耗物品月盘点(" + time + ")"; - disposableGoodsInventory.setTitle(title); - disposableGoodsInventory.setSnumber(i + 1); - } - return dgiList; - } else { - return null; - } + return disposableGoodsInventoryHelper.getDisposableGoodsInventoryBean(startDay, endDay); } @Override public List getUseRecordDataSource2(String departmentName, String operator, Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/DisposableGoodsInventoryHelper.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/DisposableGoodsInventoryHelper.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/DisposableGoodsInventoryHelper.java (revision 35954) @@ -0,0 +1,245 @@ +package com.forgon.disinfectsystem.jasperreports.util; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; +import com.forgon.disinfectsystem.entity.disposablegoods.DisposableGoodsInventory; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.ObjectDao; +/** + * 消耗物品月盘点统计报表 + * + */ +@Component +public class DisposableGoodsInventoryHelper { + @Autowired + private DateQueryAdapter dateQueryAdapter; + @Autowired + private ObjectDao objectDao; + /** + * 消耗物品月盘点统计报表 + * @param startDay + * @param endDay + * @return + */ + public List getDisposableGoodsInventoryBean( + String startDay, String endDay) { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + Date date = null; + Date currentDate = new Date(); + String time = ""; + try { + date = sdf.parse(startDay); + String format = sdf.format(currentDate); + time = sdf.format(date); + currentDate = sdf.parse(format); + } catch (ParseException e) { + e.printStackTrace(); + } + if (currentDate.equals(date)) { + + Map diposableGoodsOutWarehouseMap = new HashMap(); + Map diposableGoodsInWarehouseMap = new HashMap(); + Map dgiMap = new HashMap(); + List dgiList = new ArrayList(); + // 获取本月出库数据 + diposableGoodsOutWarehouseMap = getOutWarehouseData( + diposableGoodsOutWarehouseMap, startDay, endDay); + // 获取本月入库数据 + diposableGoodsInWarehouseMap = getInWarehouseData( + diposableGoodsInWarehouseMap, startDay, endDay); + + if (diposableGoodsOutWarehouseMap != null + && diposableGoodsOutWarehouseMap.size() > 0) { + Iterator> iterator = diposableGoodsOutWarehouseMap + .entrySet().iterator(); + while (iterator.hasNext()) { + DisposableGoodsInventory dgi = new DisposableGoodsInventory(); + Entry entry = iterator.next(); + String name = entry.getKey(); + Integer outWarehouse = entry.getValue(); + dgi.setName(name); + dgi.setOutWarehouse(outWarehouse + ""); + dgi.setInWarehouse("0"); + dgiMap.put(name, dgi); + } + } + + if (diposableGoodsInWarehouseMap != null + && diposableGoodsInWarehouseMap.size() > 0) { + Iterator> iterator = diposableGoodsInWarehouseMap + .entrySet().iterator(); + while (iterator.hasNext()) { + Entry entry = iterator.next(); + String name = entry.getKey(); + Integer inWarehouse = entry.getValue(); + DisposableGoodsInventory dgi = null; + if (dgiMap != null && dgiMap.size() > 0 + && dgiMap.get(name) != null) { + dgi = dgiMap.get(name); + dgi.setInWarehouse(inWarehouse + ""); + } else { + dgi = new DisposableGoodsInventory(); + dgi.setName(name); + dgi.setInWarehouse(inWarehouse + ""); + dgi.setOutWarehouse("0"); + } + dgiMap.put(name, dgi); + } + } + + // 删除本月数据 + String sql = "delete DisposableGoodsInventory where time between " + + dateQueryAdapter.dateAdapter(startDay) + " and " + + dateQueryAdapter.dateAdapter(endDay); + objectDao.excuteSQL(sql); + + String title = "消耗物品月盘点(" + time + ")"; + // 保存数据 + if (dgiMap != null && dgiMap.size() > 0) { + Iterator> iterator = dgiMap + .entrySet().iterator(); + int i = 0; + while (iterator.hasNext()) { + i++; + Entry entry = iterator + .next(); + DisposableGoodsInventory dgi = entry.getValue(); + dgi.setSnumber(i); + dgi.setTime(date); + + dgi.setTitle(title); + // 查询当月数据时需保存 + objectDao.save(dgi); + dgiList.add(dgi); + } + } + return dgiList; + } else if (date.before(currentDate)) {// 查询之前的月份 + String sql = "where po.time between " + + dateQueryAdapter.dateAdapter(startDay) + " and " + + dateQueryAdapter.dateAdapter(endDay); + List dgiList = objectDao.findBySql( + DisposableGoodsInventory.class.getSimpleName(), sql); + for (int i = 0; i < dgiList.size(); i++) { + DisposableGoodsInventory disposableGoodsInventory = dgiList + .get(i); + String title = "消耗物品月盘点(" + time + ")"; + disposableGoodsInventory.setTitle(title); + disposableGoodsInventory.setSnumber(i + 1); + } + return dgiList; + } else { + return null; + } + } + /** + * 获取月份供应室领用物品出库数据 + * + * @param diposableGoodsMap + * @param startDay + * @param endDay + * @return + */ + private Map getOutWarehouseData( + Map diposableGoodsMap, String startDay, + String endDay) { + + String sql = "select dg.name,dg.specification,rri.amount from" + + " ReceiveRecord rr,ReceiveRecordItem rri," + DisposableGoodsBatchStock.class.getSimpleName() + " dgbs," + DisposableGoodsStock.class.getSimpleName() + " dg" + + " where rr.id = rri.receiveRecord_id" + + " and rri.DiposableGoodBatchStock_id = dgbs.id" + + " and dgbs.diposableGoods_id = dg.id" + + " and dg.isSupplyRoomGoods = '是'" + " and rr.time between "+dateQueryAdapter.dateAdapter(startDay) + + " and "+ dateQueryAdapter.dateAdapter(endDay); + + diposableGoodsMap = getWarehouseData(sql, diposableGoodsMap); + + sql = "select dg.name,dg.specification,gei.amount from GodownEntry ge,GodownEntryItem gei," + DisposableGoodsStock.class.getSimpleName() + " dg" + + " where ge.id = gei.godownEntry_id" + + " and gei.diposableGoods_id = dg.id" + + " and dg.isSupplyRoomGoods = '是'" + + " and ge.type = '退库单'" + + " and ge.time between " + + dateQueryAdapter.dateAdapter(startDay) + + " and " + + dateQueryAdapter.dateAdapter(endDay); + + return getWarehouseData(sql, diposableGoodsMap); + + } + /** + * 获取月份供应室领用物品入库数据 + * + * @param diposableGoodsMap + * @param startDay + * @param endDay + * @return + */ + private Map getInWarehouseData( + Map diposableGoodsMap, String startDay, + String endDay) { + + String sql = "select dg.name,dg.specification,gei.amount from GodownEntry ge,GodownEntryItem gei," + DisposableGoodsStock.class.getSimpleName() + " dg" + + " where ge.id = gei.godownEntry_id" + + " and gei.diposableGoods_id = dg.id" + + " and dg.isSupplyRoomGoods = '是'" + + " and ge.type = '入库单'" + + " and ge.time between " + + dateQueryAdapter.dateAdapter(startDay) + + " and " + + dateQueryAdapter.dateAdapter(endDay); + + return getWarehouseData(sql, diposableGoodsMap); + + } + private Map getWarehouseData(String sql, + Map diposableGoodsMap) { + + ResultSet rs = objectDao.executeSql(sql); + String name = ""; + String specification = ""; + Integer amount = 0; + try { + if (rs != null) { + while (rs.next()) { + name = rs.getString(1); + specification = rs.getString(2); + amount = rs.getInt(3); + if (!"".equals(specification) && specification != null) { + name = name + "[" + specification + "]"; + } + if (diposableGoodsMap != null + && diposableGoodsMap.size() > 0 + && diposableGoodsMap.get(name) != null) { + Integer tempAmount = diposableGoodsMap.get(name); + diposableGoodsMap.put(name, tempAmount + amount); + } else if(diposableGoodsMap != null){ + diposableGoodsMap.put(name, amount); + } + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return diposableGoodsMap; + } +} Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java =================================================================== diff -u -r35940 -r35954 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 35940) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 35954) @@ -299,7 +299,12 @@ */ public List getmaterialWashUnqualifiedAssessMethodBean( String startDay, String endDay); - + /** + * 消耗物品月盘点统计报表 + * @param startDay + * @param endDay + * @return + */ public List getDisposableGoodsInventoryBean( String startDay, String endDay);