Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r35904 -r35905 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35904) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35905) @@ -48,7 +48,6 @@ import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.basedatamanager.reportoption.GoodsOptionManager; import com.forgon.disinfectsystem.basedatamanager.sterilizer.service.SterilizerManager; -import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.diposablegoods.service.GodownEntryItemManager; import com.forgon.disinfectsystem.diposablegoods.util.DisposableGoodsUtils; @@ -183,6 +182,7 @@ import com.forgon.disinfectsystem.jasperreports.util.QualityMonitoringReportTaskGroupReportHelper; import com.forgon.disinfectsystem.jasperreports.util.RealTimeBulletinBoardWorkloadHelper; import com.forgon.disinfectsystem.jasperreports.util.ReportSqlUtil; +import com.forgon.disinfectsystem.jasperreports.util.ReturnGoodReportHelper; import com.forgon.disinfectsystem.jasperreports.util.RinserStoveUseCountReportHelper; import com.forgon.disinfectsystem.jasperreports.util.StatisticalWorkloadHelper; import com.forgon.disinfectsystem.jasperreports.util.SteAmountEachBranchReportHelper; @@ -252,14 +252,11 @@ @Autowired private DateQueryAdapter dateQueryAdapter; @Autowired - private SupplyRoomConfigManager supplyRoomConfigManager; - @Autowired private InitDbConnection dbConnection; @Autowired private MaterialDefinitionManager materialDefinitionManager; @Autowired private HttpOptionManager httpOptionManager; - private static final String DIPOSABLEGOODS = "一次性物品"; @Autowired private GoodsOptionManager goodsOptionManager; @@ -371,6 +368,8 @@ private ForeignTousseReportHelper foreignTousseReportHelper; @Autowired private PackingReportHelper packingReportHelper; + @Autowired + private ReturnGoodReportHelper returnGoodReportHelper; /** * 利用sql语句做数据源创建JasperPrint对象 * @param realPath 报表的jasper文件在服务器本地机子的全路径 @@ -2290,78 +2289,7 @@ @Override public List getReturnGoodsSummarySource(String startDay, String endDay,String type, String department, String goodsName) { - ReturnGoodsSummaryService summaryService = new ReturnGoodsSummaryService(); - if(StringUtils.isNotBlank(startDay) && StringUtils.isNotBlank(endDay)){ - //器械包跟一次性物品的数据 - String returnGoodsSql = "select r.depart,r.departCoding,r.handleDepartCode,r.type,r.returnTime," - + "i.amount,i.settlementPrice,i.batchNumber,i.price,i.tousseName as name from " - + ReturnGoodsItem.class.getSimpleName() + " i inner join " - + ReturnGoodsRecord.class.getSimpleName() + " r on r.id = i.returnGoodsRecord_ID "; - //材料的数据 - String returnMaterialSql = "select rmr.depart,rmr.departCoding,rmr.handleDepartCode,'材料' as type,rmr.returnTime," - + "rmi.amount,rmi.settlementPrice,'' as batchNumber,mi.price,rmi.materialName as name from " - + ReturnMaterialItem.class.getSimpleName() + " rmi inner join " - + ReturnMaterialRecord.class.getSimpleName() + " rmr on rmr.id = rmi.returnMaterialRecord_ID " - + " inner join " + MaterialItem.class.getSimpleName() + " mi on mi.returnMaterialItemID=rmi.id"; - - //String sql = "select min(m.depart),sum(m.amount),sum(m.settlementPrice) from ( "; - String sql = "select * from ("; - sql += returnGoodsSql; - sql += " union all "; - sql += returnMaterialSql; - sql += " ) m "; - sql += String.format("left join (select sequence,orgUnitCoding from %s src where src.supplyRoomType=%s " - + "and src.orgUnitCoding not in (select orgUnitCoding from %s where status =%s )) t on m.departCoding=t.orgUnitCoding ", - SupplyRoomConfig.class.getSimpleName(), - SupplyRoomConfig.SUPPLYROOM_TYPE_APPLY, - OrgUnit.class.getSimpleName(), - OrgUnit.STATUS_DISABLED); - sql += " where " + dateQueryAdapter.dateAreaSql("m.returnTime", startDay, endDay,true); - if (StringUtils.isNotBlank(type)) { - sql += " and m.type = '" + type + "'"; - } - if (StringUtils.isNotBlank(department)) { - sql += " and m.depart = '" + department + "'"; - } - - //1.如果当前登录为供应室用户(按处理科室进行过滤) - if(supplyRoomConfigManager.isFirstOrSecondSupplyRoomOrgUnit(AcegiHelper.getCurrentOrgUnitCode())){ - //2.如果当前登录用户为非供应室用户(如:临床科室用户) - String handleDeptCode = AcegiHelper.getLoginUser().getOrgUnitCodingFromSupplyRoomConfig(); - sql += " and m.handleDepartCode = '" + handleDeptCode + "'"; - } - sql += SqlUtils.getWhereSqlByfilterFieldAndStringValue("m.name", goodsName);//精确查询 - /*if(StringUtils.isNotBlank(goodsName)){//模糊查询 - sql += " and m.name like '%" + goodsName + "%'"; - }*/ - sql += " order by (case when t.sequence is null then 9999 else t.sequence end)"; - //sql += "group by m.departCoding"; - - ResultSet rs = objectDao.executeSql(sql); - try { - while(rs.next()){ - String depart = rs.getString("depart"); - Integer amount = rs.getInt("amount"); - Double settlementPrice = rs.getDouble("settlementPrice"); - String batchNumber = rs.getString("batchNumber"); - Double price = rs.getDouble("price"); - String name = rs.getString("name"); - - ReturnGoodsItemVo item = new ReturnGoodsItemVo(); - item.setAmount(amount); - item.setSettlementPrice(settlementPrice); - item.setBatchNumber(batchNumber); - item.setName(name); - item.setPrice(price); - summaryService.addItem(depart, item); - } - } catch (SQLException e) { - e.printStackTrace(); - } finally{ - DatabaseUtil.closeResultSetAndStatement(rs); - } - } - return summaryService.getList(); + return returnGoodReportHelper.getReturnGoodsSummarySource(startDay, endDay, type, department, goodsName); } @Override public List getSignGoodsSource(String startDay,String endDay,String departmentCoding){ Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ReturnGoodReportHelper.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ReturnGoodReportHelper.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ReturnGoodReportHelper.java (revision 35905) @@ -0,0 +1,121 @@ +package com.forgon.disinfectsystem.jasperreports.util; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.model.OrgUnit; +import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; +import com.forgon.disinfectsystem.entity.invoicemanager.MaterialItem; +import com.forgon.disinfectsystem.entity.returngoodsrecord.ReturnGoodsItem; +import com.forgon.disinfectsystem.entity.returngoodsrecord.ReturnGoodsRecord; +import com.forgon.disinfectsystem.entity.returnmaterialrecord.ReturnMaterialItem; +import com.forgon.disinfectsystem.entity.returnmaterialrecord.ReturnMaterialRecord; +import com.forgon.disinfectsystem.jasperreports.javabeansource.ReturnGoodsItemVo; +import com.forgon.disinfectsystem.jasperreports.javabeansource.ReturnGoodsVo; +import com.forgon.disinfectsystem.jasperreports.service.ReturnGoodsSummaryService; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.util.SqlUtils; +/** + * 退货相关的一些报表 + * 退货统计报表 + */ +@Component +public class ReturnGoodReportHelper { + @Autowired + private DateQueryAdapter dateQueryAdapter; + @Autowired + private ObjectDao objectDao; + @Autowired + private SupplyRoomConfigManager supplyRoomConfigManager; + /** + * 退货统计报表数据查询 + * @param startDay + * @param endDay + * @param type + * @param department + * @param goodsName 物品名称 + * @return + */ + public List getReturnGoodsSummarySource(String startDay, String endDay,String type, + String department, String goodsName) { + ReturnGoodsSummaryService summaryService = new ReturnGoodsSummaryService(); + if(StringUtils.isNotBlank(startDay) && StringUtils.isNotBlank(endDay)){ + //器械包跟一次性物品的数据 + String returnGoodsSql = "select r.depart,r.departCoding,r.handleDepartCode,r.type,r.returnTime," + + "i.amount,i.settlementPrice,i.batchNumber,i.price,i.tousseName as name from " + + ReturnGoodsItem.class.getSimpleName() + " i inner join " + + ReturnGoodsRecord.class.getSimpleName() + " r on r.id = i.returnGoodsRecord_ID "; + //材料的数据 + String returnMaterialSql = "select rmr.depart,rmr.departCoding,rmr.handleDepartCode,'材料' as type,rmr.returnTime," + + "rmi.amount,rmi.settlementPrice,'' as batchNumber,mi.price,rmi.materialName as name from " + + ReturnMaterialItem.class.getSimpleName() + " rmi inner join " + + ReturnMaterialRecord.class.getSimpleName() + " rmr on rmr.id = rmi.returnMaterialRecord_ID " + + " inner join " + MaterialItem.class.getSimpleName() + " mi on mi.returnMaterialItemID=rmi.id"; + + //String sql = "select min(m.depart),sum(m.amount),sum(m.settlementPrice) from ( "; + String sql = "select * from ("; + sql += returnGoodsSql; + sql += " union all "; + sql += returnMaterialSql; + sql += " ) m "; + sql += String.format("left join (select sequence,orgUnitCoding from %s src where src.supplyRoomType=%s " + + "and src.orgUnitCoding not in (select orgUnitCoding from %s where status =%s )) t on m.departCoding=t.orgUnitCoding ", + SupplyRoomConfig.class.getSimpleName(), + SupplyRoomConfig.SUPPLYROOM_TYPE_APPLY, + OrgUnit.class.getSimpleName(), + OrgUnit.STATUS_DISABLED); + sql += " where " + dateQueryAdapter.dateAreaSql("m.returnTime", startDay, endDay,true); + if (StringUtils.isNotBlank(type)) { + sql += " and m.type = '" + type + "'"; + } + if (StringUtils.isNotBlank(department)) { + sql += " and m.depart = '" + department + "'"; + } + + //1.如果当前登录为供应室用户(按处理科室进行过滤) + if(supplyRoomConfigManager.isFirstOrSecondSupplyRoomOrgUnit(AcegiHelper.getCurrentOrgUnitCode())){ + //2.如果当前登录用户为非供应室用户(如:临床科室用户) + String handleDeptCode = AcegiHelper.getLoginUser().getOrgUnitCodingFromSupplyRoomConfig(); + sql += " and m.handleDepartCode = '" + handleDeptCode + "'"; + } + sql += SqlUtils.getWhereSqlByfilterFieldAndStringValue("m.name", goodsName);//精确查询 + /*if(StringUtils.isNotBlank(goodsName)){//模糊查询 + sql += " and m.name like '%" + goodsName + "%'"; + }*/ + sql += " order by (case when t.sequence is null then 9999 else t.sequence end)"; + //sql += "group by m.departCoding"; + + ResultSet rs = objectDao.executeSql(sql); + try { + while(rs.next()){ + String depart = rs.getString("depart"); + Integer amount = rs.getInt("amount"); + Double settlementPrice = rs.getDouble("settlementPrice"); + String batchNumber = rs.getString("batchNumber"); + Double price = rs.getDouble("price"); + String name = rs.getString("name"); + + ReturnGoodsItemVo item = new ReturnGoodsItemVo(); + item.setAmount(amount); + item.setSettlementPrice(settlementPrice); + item.setBatchNumber(batchNumber); + item.setName(name); + item.setPrice(price); + summaryService.addItem(depart, item); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally{ + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + return summaryService.getList(); + } +}