Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/InformationOfDepartmentOperationMonitoringHelper.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/InformationOfDepartmentOperationMonitoringHelper.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/InformationOfDepartmentOperationMonitoringHelper.java (revision 35810) @@ -0,0 +1,640 @@ +package com.forgon.disinfectsystem.jasperreports.util; + +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import net.sf.json.JSONObject; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.springframework.stereotype.Component; + +import com.forgon.Constants; +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.model.BarcodeDevice; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.util.SqlUtils; + +/** + * 科室运作监控 + * + */ +@Component +public class InformationOfDepartmentOperationMonitoringHelper extends ReportHelper{ + private Logger logger = Logger.getLogger(this.getClass()); + /** + * 获取运作监控汇总信息 + * @param startDate + * @param endDate + * @param tousseName 包名 + * @param orgUnit 当前登录科室名 + * @param tousseType 包类型 + * @param tousseGroupName 器械包分组 + * @param sterilizationMode 灭菌方式 + * @return 器械包各个指标的实例 + */ + public String getSummaryInformationOfDepartmentOperationMonitoring(String startDate, + String endDate, String tousseName, String orgUnit,String tousseType, String tousseGroupName, String sterilizationMode){ + + if("全部".equals(tousseType)){ + tousseType = ""; + }else if("全部器械包".equals(tousseType)){ + tousseType = String.format("%s,%s,%s,%s,%s", TousseDefinition.PACKAGE_TYPE_INSIDE, + TousseDefinition.PACKAGE_TYPE_DRESSING, TousseDefinition.PACKAGE_TYPE_DISINFECTION, TousseDefinition.PACKAGE_TYPE_FOREIGN, + TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY, TousseDefinition.PACKAGE_TYPE_CUSTOM); + }else if("外部代理灭菌包".equals(tousseType)){ + tousseType = TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY; + } + if("全部".equals(sterilizationMode)){ + sterilizationMode = ""; + } + if("全部".equals(tousseGroupName)){ + tousseGroupName = ""; + } + + String tdTousseTypeWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValueAndSeparator("td.tousseType", tousseType,","); + String tdTousseGroupWhereName = SqlUtils.getWhereSqlByfilterFieldAndStringValue("tdc.tousseGroupName", tousseGroupName); + String tousseDefinitionJoinSterilisationJoin = ""; + String ssSterilisationWhereSql = ""; + if(StringUtils.isNotBlank(sterilizationMode)){ + ssSterilisationWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("ss.sterilizationMode", sterilizationMode); + tousseDefinitionJoinSterilisationJoin = " join Sterilisation ss on ss.sterilisation=td.sterilingMethod "; + } + + String iiTousseNameWhereSql = ""; + String tiTousseNameWhereSql = ""; + String tdTousseNameWhereSql = ""; + if(StringUtils.isNotBlank(tousseName)){ + iiTousseNameWhereSql = " and ii.tousseName='"+ tousseName + "'"; + tiTousseNameWhereSql = " and ti.tousseName='"+ tousseName + "'"; + tdTousseNameWhereSql = " and td.name='"+ tousseName + "'"; + } + String currentOrgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); + Map resultMap = new HashMap(); + List listArr = new ArrayList(); + String tousseSql = ""; + if(StringUtils.isNotBlank(tousseName)){ + try { + tousseName = URLDecoder.decode(tousseName, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + if(TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(tousseType)){ + tousseName = tousseName.replace("[", "[[]"); + tousseSql = " and ti.tousseName like '%"+tousseName+"%'"; + }else{ + tousseSql = " and ti.tousseName = '"+tousseName+"'"; + } + } + + String appAndRecyAmountSql = " select ti.tousseName as tousseName ,sum(ti.amount) as amount " + + " from invoicePlan ip inner join TousseItem ti on ip.id = ti.recyclingApplication_ID " + + " join RecyclingApplication ra on ra.id=ip.id " + + " join TousseDefinition td on td.id=ti.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID " + + tousseDefinitionJoinSterilisationJoin + + " where ip.applicationTime between "+ dateQueryAdapter.dateAdapter(startDate) + +" and "+ dateQueryAdapter.dateAdapter(endDate) + +" and ip.depart = '"+orgUnit+"' " + + " and (ra.userecord_id is not null or (ra.userecord_id is null and (ti.isterminated is null or ti.isterminated<>1) )) " + + tousseSql + + tdTousseTypeWhereSql + + ssSterilisationWhereSql + + tdTousseGroupWhereName + +" and ti.amount > 0 group by ti.tousseName"; + ResultSet applicationRs = null; + try { + logger.debug("运作监控申请查询sql:" + appAndRecyAmountSql); + applicationRs = objectDao.executeSql(appAndRecyAmountSql); + while(applicationRs.next()){ + Long applicationAmount = applicationRs.getLong("amount"); + String applicationRstousseName = applicationRs.getString("tousseName"); + JSONObject obj = new JSONObject(); + obj.put("tousseName", applicationRstousseName); + obj.put("applicationAmount", applicationAmount); + obj.put("uiProvider", "col");//前台需要 + obj.put("cls", "master-task");//前台需要 + obj.put("iconCls", "task-folder");//前台需要 + obj.put("children", "[]");//前台需要 + resultMap.put(applicationRstousseName, obj); + listArr.add(obj); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(applicationRs); + } + String recySql = String.format("select td.name,sum(ri.amount) amount " + + " from RecyclingItem ri inner join RecyclingRecord rr on ri.recyclingRecord_id=rr.id " + + " join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID " + + tousseDefinitionJoinSterilisationJoin + + " left join OrgUnit ou on ou.orgUnitCoding=rr.orgUnitCoding " + + " where rr.recyclingTime between "+ dateQueryAdapter.dateAdapter(startDate) + +" and "+ dateQueryAdapter.dateAdapter(endDate) + + " %s %s %s %s %s group by td.name ", + SqlUtils.getWhereSqlByfilterFieldAndStringValue("rr.departCode", AcegiHelper.getCurrentOrgUnitCode()), + tdTousseGroupWhereName, + ssSterilisationWhereSql, + tdTousseTypeWhereSql, + tdTousseNameWhereSql); + ResultSet recyRs = null; + try { + logger.debug("运作监控回收查询sql:" + recySql); + applicationRs = objectDao.executeSql(recySql); + while(applicationRs.next()){ + Long amount = applicationRs.getLong("amount"); + String recyTousseName = applicationRs.getString("name"); + JSONObject obj = null; + if(resultMap.containsKey(recyTousseName)){ + obj = resultMap.get(recyTousseName); + obj.put("recyAmount", amount); + }else{ + obj = new JSONObject(); + obj.put("tousseName", recyTousseName); + obj.put("recyAmount", amount); + obj.put("uiProvider", "col");//前台需要 + obj.put("cls", "master-task");//前台需要 + obj.put("iconCls", "task-folder");//前台需要 + obj.put("children", "[]");//前台需要 + resultMap.put(recyTousseName, obj); + listArr.add(obj); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(recyRs); + } + String invoiceSql = String.format(" select ii.tousseName,sum(ii.amount) amount " + + "from Invoice i inner " + + "join InvoiceItem ii on i.id=ii.invoice_id " + + " join TousseDefinition td on ii.tousseDefinitionId=td.id join TousseDefinition tdc on tdc.id=td.ancestorID " + + tousseDefinitionJoinSterilisationJoin + + "where i.sendTime between "+ dateQueryAdapter.dateAdapter(startDate) + +" and "+ dateQueryAdapter.dateAdapter(endDate) + +" %s %s %s %s %s group by ii.tousseName ", + tdTousseGroupWhereName, + ssSterilisationWhereSql, + tdTousseTypeWhereSql, + iiTousseNameWhereSql, + SqlUtils.getWhereSqlByfilterFieldAndStringValue("i.departCoding", currentOrgUnitCode)); + ResultSet invoiceRs = null; + try { + logger.debug("运作监控发货查询sql:" + invoiceSql); + invoiceRs = objectDao.executeSql(invoiceSql); + while(invoiceRs.next()){ + String tousseNameinvoiceRs = invoiceRs.getString("tousseName"); + Long invoiceAmount = invoiceRs.getLong("amount"); + JSONObject obj = null; + if(resultMap.containsKey(tousseNameinvoiceRs)){ + obj = resultMap.get(tousseNameinvoiceRs); + obj.put("invoiceAmount", invoiceAmount); + }else{ + obj = new JSONObject(); + obj.put("tousseName", tousseNameinvoiceRs); + obj.put("invoiceAmount", invoiceAmount); + obj.put("uiProvider", "col");//前台需要 + obj.put("cls", "master-task");//前台需要 + obj.put("iconCls", "task-folder");//前台需要 + obj.put("children", "[]");//前台需要 + resultMap.put(tousseNameinvoiceRs, obj); + listArr.add(obj); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(invoiceRs); + } + String signedSql = String.format("select ti.tousseName,count(*) amount from SignRecord sr " + + " join OrgUnit ou on ou.orgUnitCoding=sr.departCode " + + " join TousseInstance ti on ti.signRecordId=sr.id " + + " join TousseDefinition td on td.id=ti.tousseDefinition_id join TousseDefinition tdc on tdc.id=td.ancestorID " + + tousseDefinitionJoinSterilisationJoin + + " where ti.signedDate between "+ dateQueryAdapter.dateAdapter(startDate) + + " and "+ dateQueryAdapter.dateAdapter(endDate) + + " %s %s %s %s %s group by ti.tousseName ", + SqlUtils.getWhereSqlByfilterFieldAndStringValue("sr.departCode", currentOrgUnitCode), + tiTousseNameWhereSql + ,tdTousseGroupWhereName + ,tdTousseTypeWhereSql + ,ssSterilisationWhereSql); + ResultSet signRs = null; + try { + logger.debug("运作监控签收查询sql:" + signedSql); + signRs = objectDao.executeSql(signedSql); + while(signRs.next()){ + String tousseNameRs2 = signRs.getString("tousseName"); + Long signAmount = signRs.getLong("amount"); + JSONObject obj = null; + if(resultMap.containsKey(tousseNameRs2)){ + obj = resultMap.get(tousseNameRs2); + obj.put("signAmount", signAmount); + }else{ + obj = new JSONObject(); + obj.put("tousseName", tousseNameRs2); + obj.put("signAmount", signAmount); + obj.put("uiProvider", "col");//前台需要 + obj.put("cls", "master-task");//前台需要 + obj.put("iconCls", "task-folder");//前台需要 + obj.put("children", "[]");//前台需要 + resultMap.put(tousseNameRs2, obj); + listArr.add(obj); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(signRs); + } + return listArr.toString(); + } + public String getInformationOfDepartmentOperationMonitoringByMode( + String startDate, String endDate, String tousseName, + String orgUnit, String tousseType, String tousseGroupName, + String sterilizationMode, String modeName) { + + if("全部".equals(tousseType)){ + tousseType = ""; + }else if("全部器械包".equals(tousseType)){ + tousseType = String.format("%s,%s,%s,%s,%s", TousseDefinition.PACKAGE_TYPE_INSIDE, + TousseDefinition.PACKAGE_TYPE_DRESSING, TousseDefinition.PACKAGE_TYPE_DISINFECTION, TousseDefinition.PACKAGE_TYPE_FOREIGN, + TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY, TousseDefinition.PACKAGE_TYPE_CUSTOM); + }else if("外部代理灭菌包".equals(tousseType)){ + tousseType = TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY; + } + if("全部".equals(sterilizationMode)){ + sterilizationMode = ""; + } + if("全部".equals(tousseGroupName)){ + tousseGroupName = ""; + } + String resultStr = ""; + if("invoiceDetails".equals(modeName)){ + resultStr = getInvoieInformationOfDepartmentOperationMonitoring(startDate, endDate, tousseName, orgUnit, tousseType, tousseGroupName, sterilizationMode); + }else if("recyDetails".equals(modeName)){ + resultStr = getRecyInformationOfDepartmentOperationMonitoring(startDate, endDate, tousseName, orgUnit, tousseType, tousseGroupName, sterilizationMode); + }else if("applicationDetails".equals(modeName)){ + resultStr = getInvoicePlanInformationOfDepartmentOperationMonitoring(startDate, endDate, tousseName, orgUnit, tousseType, tousseGroupName, sterilizationMode); + }else if("signDetails".equals(modeName)){ + resultStr = getSignInformationOfDepartmentOperationMonitoring(startDate, endDate, tousseName, orgUnit, tousseType, tousseGroupName, sterilizationMode); + }else if("useDetails".equals(modeName)){ + resultStr = getUseInformationOfDepartmentOperationMonitoring(startDate, endDate, tousseName, orgUnit, tousseType, tousseGroupName, sterilizationMode); + } + return resultStr; + } + /** + * 获取科室运作监控发货详情信息 + * @param startDate + * @param endDate + * @param tousseName + * @param orgUnit 当前登录科室 + * @param tousseType 包类型 + * @param tousseGroupName 器械包分组 + * @param sterilizationMode 灭菌方式 + * @return 发货物品的信息 + */ + private String getInvoieInformationOfDepartmentOperationMonitoring( + String startDate, String endDate, String tousseName, + String orgUnit, String tousseType, String tousseGroupName, + String sterilizationMode){ + String tousseDefinitionJoinSterilisationJoin = ""; + String ssSterilisationWhereSql = ""; + if(StringUtils.isNotBlank(sterilizationMode)){ + ssSterilisationWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("ss.sterilizationMode", sterilizationMode); + tousseDefinitionJoinSterilisationJoin = " join Sterilisation ss on ss.sterilisation=td.sterilingMethod "; + } + String tdTousseTypeWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValueAndSeparator("td.tousseType", tousseType,","); + String tdTousseGroupWhereName = SqlUtils.getWhereSqlByfilterFieldAndStringValue("tdc.tousseGroupName", tousseGroupName); + String iiTousseNameWhereSql = ""; + if(StringUtils.isNotBlank(tousseName)){ + iiTousseNameWhereSql = " and ii.tousseName='"+ tousseName + "'"; + } + String currentOrgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); + String invoiceSql = String.format(" select i.sendTime,ii.amount,i.depart,i.settleAccountsDepart,i.sender " + + "from Invoice i inner " + + "join InvoiceItem ii on i.id=ii.invoice_id " + + " join TousseDefinition td on ii.tousseDefinitionId=td.id join TousseDefinition tdc on tdc.id=td.ancestorID " + + tousseDefinitionJoinSterilisationJoin + + "where i.sendTime between "+ dateQueryAdapter.dateAdapter(startDate) + +" and "+ dateQueryAdapter.dateAdapter(endDate) + +" %s %s %s %s %s order by i.sendTime desc ", + tdTousseGroupWhereName, + ssSterilisationWhereSql, + tdTousseTypeWhereSql, + iiTousseNameWhereSql, + SqlUtils.getWhereSqlByfilterFieldAndStringValue("i.departCoding", currentOrgUnitCode)); + ResultSet invoiceRs = null; + List listArr = new ArrayList(); + try { + logger.debug("运作监控发货详情查询sql:" + invoiceSql); + invoiceRs = objectDao.executeSql(invoiceSql); + while(invoiceRs.next()){ + Date sendTime = invoiceRs.getTimestamp("sendTime"); + String depart = invoiceRs.getString("depart"); + Long invoiceAmount = invoiceRs.getLong("amount"); + String settleAccountsDepart = invoiceRs.getString("settleAccountsDepart"); + String sender = invoiceRs.getString("sender"); + JSONObject obj = new JSONObject(); + obj.put("sendTime", sendTime == null?"":Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(sendTime)); + obj.put("invoiceAmount", invoiceAmount); + obj.put("depart", depart); + obj.put("settleAccountsDepart", settleAccountsDepart); + obj.put("sender", sender); + listArr.add(obj); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(invoiceRs); + } + return listArr.toString(); + } + /** + * 获取部门运作监控回收信息详情 + * @param startDate + * @param endDate + * @param tousseName + * @param orgUnit 当前登录科室 + * @param tousseType + * @param tousseGroupName 器械包分组 + * @param sterilizationMode 灭菌方式 + * @return 回收物品的信息 + */ + private String getRecyInformationOfDepartmentOperationMonitoring( + String startDate, String endDate, String tousseName, + String orgUnit, String tousseType, String tousseGroupName, + String sterilizationMode){ + String tousseDefinitionJoinSterilisationJoin = ""; + String ssSterilisationWhereSql = ""; + if(StringUtils.isNotBlank(sterilizationMode)){ + ssSterilisationWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("ss.sterilizationMode", sterilizationMode); + tousseDefinitionJoinSterilisationJoin = " join Sterilisation ss on ss.sterilisation=td.sterilingMethod "; + } + String tdTousseTypeWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValueAndSeparator("td.tousseType", tousseType,","); + String tdTousseGroupWhereName = SqlUtils.getWhereSqlByfilterFieldAndStringValue("tdc.tousseGroupName", tousseGroupName); + String tdTousseNameWhereSql = ""; + if(StringUtils.isNotBlank(tousseName)){ + tdTousseNameWhereSql = " and td.name='"+ tousseName + "'"; + } + String sql = String.format("select rr.recyclingTime,ri.amount,rr.depart,ou.name orgUnitName,rr.recyclingUser,rr.operator " + + " from RecyclingItem ri inner join RecyclingRecord rr on ri.recyclingRecord_id=rr.id " + + " join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID " + + tousseDefinitionJoinSterilisationJoin + + " left join OrgUnit ou on ou.orgUnitCoding=rr.orgUnitCoding " + + " where rr.recyclingTime between "+ dateQueryAdapter.dateAdapter(startDate) + +" and "+ dateQueryAdapter.dateAdapter(endDate) + + " %s %s %s %s %s order by rr.recyclingTime desc ", + SqlUtils.getWhereSqlByfilterFieldAndStringValue("rr.departCode", AcegiHelper.getCurrentOrgUnitCode()), + tdTousseGroupWhereName, + ssSterilisationWhereSql, + tdTousseTypeWhereSql, + tdTousseNameWhereSql); + ResultSet rs = null; + List listArr = new ArrayList(); + try { + logger.debug("运作监控回收详情查询sql:" + sql); + rs = objectDao.executeSql(sql); + while(rs.next()){ + Date recyclingTime = rs.getTimestamp("recyclingTime"); + Long amount = rs.getLong("amount"); + String depart = rs.getString("depart"); + String orgUnitName = rs.getString("orgUnitName"); + String recyclingUser = rs.getString("recyclingUser"); + String operator = rs.getString("operator"); + JSONObject obj = new JSONObject(); + obj.put("recyclingTime", recyclingTime == null?"":Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(recyclingTime)); + obj.put("recyAmount", amount); + obj.put("depart", depart); + obj.put("orgUnitName", orgUnitName); + obj.put("recyclingUser", recyclingUser); + obj.put("operator", operator); + listArr.add(obj); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return listArr.toString(); + } + /** + * 获取部门运作监控申请信息详情 + * @param startDate + * @param endDate + * @param tousseName + * @param orgUnit 当前登录科室 + * @param tousseType + * @param tousseGroupName 器械包分组 + * @param sterilizationMode 灭菌方式 + * @return 申请物品的信息 + */ + private String getInvoicePlanInformationOfDepartmentOperationMonitoring( + String startDate, String endDate, String tousseName, + String orgUnit, String tousseType, String tousseGroupName, + String sterilizationMode){ + String tousseDefinitionJoinSterilisationJoin = ""; + String ssSterilisationWhereSql = ""; + if(StringUtils.isNotBlank(sterilizationMode)){ + ssSterilisationWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("ss.sterilizationMode", sterilizationMode); + tousseDefinitionJoinSterilisationJoin = " join Sterilisation ss on ss.sterilisation=td.sterilingMethod "; + } + String tdTousseTypeWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValueAndSeparator("td.tousseType", tousseType,","); + String tdTousseGroupWhereName = SqlUtils.getWhereSqlByfilterFieldAndStringValue("tdc.tousseGroupName", tousseGroupName); + String tousseSql = ""; + if(StringUtils.isNotBlank(tousseName)){ + try { + tousseName = URLDecoder.decode(tousseName, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + tousseSql = " and ti.tousseName = '"+tousseName+"'"; + } + String sql = " select ip.applicationTime,ti.amount,ip.depart,ip.applicant " + + " from invoicePlan ip inner join TousseItem ti on ip.id = ti.recyclingApplication_ID " + + " join TousseDefinition td on td.id=ti.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID " + + " join RecyclingApplication ra on ra.id=ip.id " + + tousseDefinitionJoinSterilisationJoin + + " where ip.applicationTime between "+ dateQueryAdapter.dateAdapter(startDate) + +" and "+ dateQueryAdapter.dateAdapter(endDate) + +" and amount>0 and ip.depart = '"+orgUnit+"' " + + " and (ra.userecord_id is not null or (ra.userecord_id is null and (ti.isterminated is null or ti.isterminated<>1) )) " + + tousseSql + + tdTousseTypeWhereSql + + ssSterilisationWhereSql + + tdTousseGroupWhereName + +" order by applicationTime desc "; + ResultSet rs = null; + List listArr = new ArrayList(); + try { + logger.debug("运作监控申请详情查询sql:" + sql); + rs = objectDao.executeSql(sql); + while(rs.next()){ + Date applicationTime = rs.getTimestamp("applicationTime"); + Long amount = rs.getLong("amount"); + String depart = rs.getString("depart"); + String applicant = rs.getString("applicant"); + JSONObject obj = new JSONObject(); + obj.put("applicationTime",applicationTime == null?"":Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(applicationTime)); + obj.put("amount", amount); + obj.put("depart", depart); + obj.put("applicant", applicant); + listArr.add(obj); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return listArr.toString(); + } + /** + * 获取部门运作监控签收信息详情 + * @param startDate + * @param endDate + * @param tousseName + * @param orgUnit 当前登录科室 + * @param tousseType + * @param tousseGroupName 器械包分组 + * @param sterilizationMode 灭菌方式 + * @return 签收物品的信息 + */ + private String getSignInformationOfDepartmentOperationMonitoring( + String startDate, String endDate, String tousseName, + String orgUnit, String tousseType, String tousseGroupName, + String sterilizationMode){ + String tousseDefinitionJoinSterilisationJoin = ""; + String ssSterilisationWhereSql = ""; + if(StringUtils.isNotBlank(sterilizationMode)){ + ssSterilisationWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("ss.sterilizationMode", sterilizationMode); + tousseDefinitionJoinSterilisationJoin = " join Sterilisation ss on ss.sterilisation=td.sterilingMethod "; + } + String tdTousseTypeWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValueAndSeparator("td.tousseType", tousseType,","); + String tdTousseGroupWhereName = SqlUtils.getWhereSqlByfilterFieldAndStringValue("tdc.tousseGroupName", tousseGroupName); + String tdTousseNameWhereSql = ""; + if(StringUtils.isNotBlank(tousseName)){ + tdTousseNameWhereSql = " and ti.tousseName='"+ tousseName + "'"; + } + + String queryFixedBarcodeSql = ""; + if(dbConnection.isSqlServer()){ + queryFixedBarcodeSql = " (select top 1 barcode from "+ TousseInstance.class.getSimpleName() +" ti1 join "+ BarcodeDevice.class.getSimpleName() +" b1 on b1.id=ti1.id where ti1.tousseFixedBarcode=1 and ti1.tousseDefinition_id=td.id) "; + } else if(dbConnection.isOracle()){ + queryFixedBarcodeSql = " (select barcode from "+ TousseInstance.class.getSimpleName() +" ti1 join "+ BarcodeDevice.class.getSimpleName() +" b1 on b1.id=ti1.id where ti1.tousseFixedBarcode=1 and ti1.tousseDefinition_id=td.id and rownum <= 1) "; + } + String sql = String.format("select ti.signedDate,ou.name depart,sr.signUserName,ti.orgUnitName" + + ",case when td.isTraceable='否' then " + + queryFixedBarcodeSql + + " else bd.barcode end barcode from SignRecord sr " + + " join OrgUnit ou on ou.orgUnitCoding=sr.departCode " + + " join TousseInstance ti on ti.signRecordId=sr.id " + + " join TousseDefinition td on td.id=ti.tousseDefinition_id join TousseDefinition tdc on tdc.id=td.ancestorID " + + " left join barcodeDevice bd on bd.id=ti.id " + + tousseDefinitionJoinSterilisationJoin + + " where ti.signedDate between "+ dateQueryAdapter.dateAdapter(startDate) + + " and "+ dateQueryAdapter.dateAdapter(endDate) + + " %s %s %s %s %s order by signDate desc ", + SqlUtils.getWhereSqlByfilterFieldAndStringValue("sr.departCode", AcegiHelper.getCurrentOrgUnitCode()), + tdTousseNameWhereSql + ,tdTousseGroupWhereName + ,tdTousseTypeWhereSql + ,ssSterilisationWhereSql); + ResultSet rs = null; + List listArr = new ArrayList(); + try { + logger.debug("运作监控签收详情查询sql:" + sql); + rs = objectDao.executeSql(sql); + while(rs.next()){ + Date signedDate = rs.getTimestamp("signedDate"); + String depart = rs.getString("depart"); + String signUserName = rs.getString("signUserName"); + String orgUnitName = rs.getString("orgUnitName"); + String barcode = rs.getString("barcode"); + JSONObject obj = new JSONObject(); + obj.put("signedDate",signedDate == null?"":Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(signedDate)); + obj.put("amount", 1); + obj.put("depart", depart); + obj.put("signUserName", signUserName); + obj.put("orgUnitName", orgUnitName); + obj.put("barcode", barcode); + listArr.add(obj); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return listArr.toString(); + } + /** + * 获取部门运作监控使用信息详情 + * @param startDate + * @param endDate + * @param tousseName + * @param orgUnit 当前登录科室 + * @param tousseType + * @param tousseGroupName 器械包分组 + * @param sterilizationMode 灭菌方式 + * @return 物品使用的信息 + */ + private String getUseInformationOfDepartmentOperationMonitoring( + String startDate, String endDate, String tousseName, + String orgUnit, String tousseType, String tousseGroupName, + String sterilizationMode){ + String tousseDefinitionJoinSterilisationJoin = ""; + String ssSterilisationWhereSql = ""; + if(StringUtils.isNotBlank(sterilizationMode)){ + ssSterilisationWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("ss.sterilizationMode", sterilizationMode); + tousseDefinitionJoinSterilisationJoin = " join Sterilisation ss on ss.sterilisation=td.sterilingMethod "; + } + String tdTousseTypeWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValueAndSeparator("td.tousseType", tousseType,","); + String tdTousseGroupWhereName = SqlUtils.getWhereSqlByfilterFieldAndStringValue("tdc.tousseGroupName", tousseGroupName); + String tiTousseNameWhereSql = ""; + if(StringUtils.isNotBlank(tousseName)){ + tiTousseNameWhereSql = " and ti.tousseName='"+ tousseName + "'"; + } + String useRecordDepartCodingWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("u.departCoding", AcegiHelper.getCurrentOrgUnitCode()); + String sql = String.format(" select ti.useTime,u.depart,u.operator from userecord u " + + " inner join TousseInstance ti on ti.useRecord_id=u.id " + + " join TousseDefinition td on td.id=ti.tousseDefinition_id join TousseDefinition tdc on tdc.id=td.ancestorID %s " + + " where ti.useTime between " + dateQueryAdapter.dateAdapter(startDate) + +" and "+ dateQueryAdapter.dateAdapter(endDate) + + " %s %s %s %s %s order by ti.useTime desc " , + tousseDefinitionJoinSterilisationJoin, + tiTousseNameWhereSql, + tdTousseGroupWhereName, + tdTousseTypeWhereSql, + useRecordDepartCodingWhereSql, + ssSterilisationWhereSql); + ResultSet rs = null; + List listArr = new ArrayList(); + try { + logger.debug("运作监控使用详情查询sql:" + sql); + rs = objectDao.executeSql(sql); + while(rs.next()){ + Date useTime = rs.getTimestamp("useTime"); + String depart = rs.getString("depart"); + String operator = rs.getString("operator"); + JSONObject obj = new JSONObject(); + obj.put("useTime",useTime == null?"":Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(useTime)); + obj.put("amount", 1); + obj.put("depart", depart); + obj.put("operator", operator); + listArr.add(obj); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return listArr.toString(); + } +} Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r35808 -r35810 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35808) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35810) @@ -183,6 +183,7 @@ import com.forgon.disinfectsystem.jasperreports.util.EighteenQuotaBeanHelper; import com.forgon.disinfectsystem.jasperreports.util.ForeignTousseApplicationReportHelper; import com.forgon.disinfectsystem.jasperreports.util.FormDefinitionHelper; +import com.forgon.disinfectsystem.jasperreports.util.InformationOfDepartmentOperationMonitoringHelper; import com.forgon.disinfectsystem.jasperreports.util.InstrumentRepairReportHelper; import com.forgon.disinfectsystem.jasperreports.util.MonthReportGroupByDisposableGoodsTypeHelper; import com.forgon.disinfectsystem.jasperreports.util.MonthReportGroupBySterilizationModeHelper; @@ -369,6 +370,8 @@ private QualityMonitoringReportTaskGroupReportHelper qualityMonitoringReportTaskGroupReportHelper; @Autowired private DeviceMaintenanceHelper deviceMaintenanceHelper; + @Autowired + private InformationOfDepartmentOperationMonitoringHelper informationOfDepartmentOperationMonitoringHelper; public void setPackingManager(PackingManager packingManager) { this.packingManager = packingManager; } @@ -1869,653 +1872,13 @@ String startDate, String endDate, String tousseName, String orgUnit, String tousseType, String tousseGroupName, String sterilizationMode, String modeName) { - - if("全部".equals(tousseType)){ - tousseType = ""; - }else if("全部器械包".equals(tousseType)){ - tousseType = String.format("%s,%s,%s,%s,%s", TousseDefinition.PACKAGE_TYPE_INSIDE, - TousseDefinition.PACKAGE_TYPE_DRESSING, TousseDefinition.PACKAGE_TYPE_DISINFECTION, TousseDefinition.PACKAGE_TYPE_FOREIGN, - TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY, TousseDefinition.PACKAGE_TYPE_CUSTOM); - }else if("外部代理灭菌包".equals(tousseType)){ - tousseType = TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY; - } - if("全部".equals(sterilizationMode)){ - sterilizationMode = ""; - } - if("全部".equals(tousseGroupName)){ - tousseGroupName = ""; - } - String resultStr = ""; - if("invoiceDetails".equals(modeName)){ - resultStr = getInvoieInformationOfDepartmentOperationMonitoring(startDate, endDate, tousseName, orgUnit, tousseType, tousseGroupName, sterilizationMode); - }else if("recyDetails".equals(modeName)){ - resultStr = getRecyInformationOfDepartmentOperationMonitoring(startDate, endDate, tousseName, orgUnit, tousseType, tousseGroupName, sterilizationMode); - }else if("applicationDetails".equals(modeName)){ - resultStr = getInvoicePlanInformationOfDepartmentOperationMonitoring(startDate, endDate, tousseName, orgUnit, tousseType, tousseGroupName, sterilizationMode); - }else if("signDetails".equals(modeName)){ - resultStr = getSignInformationOfDepartmentOperationMonitoring(startDate, endDate, tousseName, orgUnit, tousseType, tousseGroupName, sterilizationMode); - }else if("useDetails".equals(modeName)){ - resultStr = getUseInformationOfDepartmentOperationMonitoring(startDate, endDate, tousseName, orgUnit, tousseType, tousseGroupName, sterilizationMode); - } - return resultStr; + return informationOfDepartmentOperationMonitoringHelper.getInformationOfDepartmentOperationMonitoringByMode(startDate, endDate, tousseName, orgUnit, tousseType, tousseGroupName, sterilizationMode, modeName); } - /** - * 获取部门运作监控使用信息详情 - * @param startDate - * @param endDate - * @param tousseName - * @param orgUnit 当前登录科室 - * @param tousseType - * @param tousseGroupName 器械包分组 - * @param sterilizationMode 灭菌方式 - * @return 物品使用的信息 - */ - private String getUseInformationOfDepartmentOperationMonitoring( - String startDate, String endDate, String tousseName, - String orgUnit, String tousseType, String tousseGroupName, - String sterilizationMode){ - String tousseDefinitionJoinSterilisationJoin = ""; - String ssSterilisationWhereSql = ""; - if(StringUtils.isNotBlank(sterilizationMode)){ - ssSterilisationWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("ss.sterilizationMode", sterilizationMode); - tousseDefinitionJoinSterilisationJoin = " join Sterilisation ss on ss.sterilisation=td.sterilingMethod "; - } - String tdTousseTypeWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValueAndSeparator("td.tousseType", tousseType,","); - String tdTousseGroupWhereName = SqlUtils.getWhereSqlByfilterFieldAndStringValue("tdc.tousseGroupName", tousseGroupName); - String tiTousseNameWhereSql = ""; - if(StringUtils.isNotBlank(tousseName)){ - tiTousseNameWhereSql = " and ti.tousseName='"+ tousseName + "'"; - } - String useRecordDepartCodingWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("u.departCoding", AcegiHelper.getCurrentOrgUnitCode()); - String sql = String.format(" select ti.useTime,u.depart,u.operator from userecord u " - + " inner join TousseInstance ti on ti.useRecord_id=u.id " - + " join TousseDefinition td on td.id=ti.tousseDefinition_id join TousseDefinition tdc on tdc.id=td.ancestorID %s " - + " where ti.useTime between " + dateQueryAdapter.dateAdapter(startDate) - +" and "+ dateQueryAdapter.dateAdapter(endDate) - + " %s %s %s %s %s order by ti.useTime desc " , - tousseDefinitionJoinSterilisationJoin, - tiTousseNameWhereSql, - tdTousseGroupWhereName, - tdTousseTypeWhereSql, - useRecordDepartCodingWhereSql, - ssSterilisationWhereSql); - ResultSet rs = null; - List listArr = new ArrayList(); - try { - logger.debug("运作监控使用详情查询sql:" + sql); - rs = objectDao.executeSql(sql); - while(rs.next()){ - Date useTime = rs.getTimestamp("useTime"); - String depart = rs.getString("depart"); - String operator = rs.getString("operator"); - JSONObject obj = new JSONObject(); - obj.put("useTime",useTime == null?"":Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(useTime)); - obj.put("amount", 1); - obj.put("depart", depart); - obj.put("operator", operator); - listArr.add(obj); - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(rs); - } - return listArr.toString(); - } - /** - * 获取部门运作监控签收信息详情 - * @param startDate - * @param endDate - * @param tousseName - * @param orgUnit 当前登录科室 - * @param tousseType - * @param tousseGroupName 器械包分组 - * @param sterilizationMode 灭菌方式 - * @return 签收物品的信息 - */ - private String getSignInformationOfDepartmentOperationMonitoring( - String startDate, String endDate, String tousseName, - String orgUnit, String tousseType, String tousseGroupName, - String sterilizationMode){ - String tousseDefinitionJoinSterilisationJoin = ""; - String ssSterilisationWhereSql = ""; - if(StringUtils.isNotBlank(sterilizationMode)){ - ssSterilisationWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("ss.sterilizationMode", sterilizationMode); - tousseDefinitionJoinSterilisationJoin = " join Sterilisation ss on ss.sterilisation=td.sterilingMethod "; - } - String tdTousseTypeWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValueAndSeparator("td.tousseType", tousseType,","); - String tdTousseGroupWhereName = SqlUtils.getWhereSqlByfilterFieldAndStringValue("tdc.tousseGroupName", tousseGroupName); - String tdTousseNameWhereSql = ""; - if(StringUtils.isNotBlank(tousseName)){ - tdTousseNameWhereSql = " and ti.tousseName='"+ tousseName + "'"; - } - String queryFixedBarcodeSql = ""; - if(dbConnection.isSqlServer()){ - queryFixedBarcodeSql = " (select top 1 barcode from "+ TousseInstance.class.getSimpleName() +" ti1 join "+ BarcodeDevice.class.getSimpleName() +" b1 on b1.id=ti1.id where ti1.tousseFixedBarcode=1 and ti1.tousseDefinition_id=td.id) "; - } else if(dbConnection.isOracle()){ - queryFixedBarcodeSql = " (select barcode from "+ TousseInstance.class.getSimpleName() +" ti1 join "+ BarcodeDevice.class.getSimpleName() +" b1 on b1.id=ti1.id where ti1.tousseFixedBarcode=1 and ti1.tousseDefinition_id=td.id and rownum <= 1) "; - } - String sql = String.format("select ti.signedDate,ou.name depart,sr.signUserName,ti.orgUnitName" - + ",case when td.isTraceable='否' then " - + queryFixedBarcodeSql - + " else bd.barcode end barcode from SignRecord sr " - + " join OrgUnit ou on ou.orgUnitCoding=sr.departCode " - + " join TousseInstance ti on ti.signRecordId=sr.id " - + " join TousseDefinition td on td.id=ti.tousseDefinition_id join TousseDefinition tdc on tdc.id=td.ancestorID " - + " left join barcodeDevice bd on bd.id=ti.id " - + tousseDefinitionJoinSterilisationJoin - + " where ti.signedDate between "+ dateQueryAdapter.dateAdapter(startDate) - + " and "+ dateQueryAdapter.dateAdapter(endDate) - + " %s %s %s %s %s order by signDate desc ", - SqlUtils.getWhereSqlByfilterFieldAndStringValue("sr.departCode", AcegiHelper.getCurrentOrgUnitCode()), - tdTousseNameWhereSql - ,tdTousseGroupWhereName - ,tdTousseTypeWhereSql - ,ssSterilisationWhereSql); - ResultSet rs = null; - List listArr = new ArrayList(); - try { - logger.debug("运作监控签收详情查询sql:" + sql); - rs = objectDao.executeSql(sql); - while(rs.next()){ - Date signedDate = rs.getTimestamp("signedDate"); - String depart = rs.getString("depart"); - String signUserName = rs.getString("signUserName"); - String orgUnitName = rs.getString("orgUnitName"); - String barcode = rs.getString("barcode"); - JSONObject obj = new JSONObject(); - obj.put("signedDate",signedDate == null?"":Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(signedDate)); - obj.put("amount", 1); - obj.put("depart", depart); - obj.put("signUserName", signUserName); - obj.put("orgUnitName", orgUnitName); - obj.put("barcode", barcode); - listArr.add(obj); - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(rs); - } - return listArr.toString(); - } - /** - * 获取部门运作监控申请信息详情 - * @param startDate - * @param endDate - * @param tousseName - * @param orgUnit 当前登录科室 - * @param tousseType - * @param tousseGroupName 器械包分组 - * @param sterilizationMode 灭菌方式 - * @return 申请物品的信息 - */ - private String getInvoicePlanInformationOfDepartmentOperationMonitoring( - String startDate, String endDate, String tousseName, - String orgUnit, String tousseType, String tousseGroupName, - String sterilizationMode){ - String tousseDefinitionJoinSterilisationJoin = ""; - String ssSterilisationWhereSql = ""; - if(StringUtils.isNotBlank(sterilizationMode)){ - ssSterilisationWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("ss.sterilizationMode", sterilizationMode); - tousseDefinitionJoinSterilisationJoin = " join Sterilisation ss on ss.sterilisation=td.sterilingMethod "; - } - String tdTousseTypeWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValueAndSeparator("td.tousseType", tousseType,","); - String tdTousseGroupWhereName = SqlUtils.getWhereSqlByfilterFieldAndStringValue("tdc.tousseGroupName", tousseGroupName); - String tdTousseNameWhereSql = ""; - if(StringUtils.isNotBlank(tousseName)){ - tdTousseNameWhereSql = " and td.tousseName='"+ tousseName + "'"; - } - String tousseSql = ""; - if(StringUtils.isNotBlank(tousseName)){ - try { - tousseName = URLDecoder.decode(tousseName, "utf-8"); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - tousseSql = " and ti.tousseName = '"+tousseName+"'"; - } - String sql = " select ip.applicationTime,ti.amount,ip.depart,ip.applicant " - + " from invoicePlan ip inner join TousseItem ti on ip.id = ti.recyclingApplication_ID " - + " join TousseDefinition td on td.id=ti.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID " - + " join RecyclingApplication ra on ra.id=ip.id " - + tousseDefinitionJoinSterilisationJoin - + " where ip.applicationTime between "+ dateQueryAdapter.dateAdapter(startDate) - +" and "+ dateQueryAdapter.dateAdapter(endDate) - +" and amount>0 and ip.depart = '"+orgUnit+"' " - + " and (ra.userecord_id is not null or (ra.userecord_id is null and (ti.isterminated is null or ti.isterminated<>1) )) " - + tousseSql - + tdTousseTypeWhereSql - + ssSterilisationWhereSql - + tdTousseGroupWhereName - +" order by applicationTime desc "; - ResultSet rs = null; - List listArr = new ArrayList(); - try { - logger.debug("运作监控申请详情查询sql:" + sql); - rs = objectDao.executeSql(sql); - while(rs.next()){ - Date applicationTime = rs.getTimestamp("applicationTime"); - Long amount = rs.getLong("amount"); - String depart = rs.getString("depart"); - String applicant = rs.getString("applicant"); - JSONObject obj = new JSONObject(); - obj.put("applicationTime",applicationTime == null?"":Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(applicationTime)); - obj.put("amount", amount); - obj.put("depart", depart); - obj.put("applicant", applicant); - listArr.add(obj); - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(rs); - } - return listArr.toString(); - } - /** - * 获取部门运作监控回收信息详情 - * @param startDate - * @param endDate - * @param tousseName - * @param orgUnit 当前登录科室 - * @param tousseType - * @param tousseGroupName 器械包分组 - * @param sterilizationMode 灭菌方式 - * @return 回收物品的信息 - */ - private String getRecyInformationOfDepartmentOperationMonitoring( - String startDate, String endDate, String tousseName, - String orgUnit, String tousseType, String tousseGroupName, - String sterilizationMode){ - String tousseDefinitionJoinSterilisationJoin = ""; - String ssSterilisationWhereSql = ""; - if(StringUtils.isNotBlank(sterilizationMode)){ - ssSterilisationWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("ss.sterilizationMode", sterilizationMode); - tousseDefinitionJoinSterilisationJoin = " join Sterilisation ss on ss.sterilisation=td.sterilingMethod "; - } - String tdTousseTypeWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValueAndSeparator("td.tousseType", tousseType,","); - String tdTousseGroupWhereName = SqlUtils.getWhereSqlByfilterFieldAndStringValue("tdc.tousseGroupName", tousseGroupName); - String tdTousseNameWhereSql = ""; - if(StringUtils.isNotBlank(tousseName)){ - tdTousseNameWhereSql = " and td.name='"+ tousseName + "'"; - } - String sql = String.format("select rr.recyclingTime,ri.amount,rr.depart,ou.name orgUnitName,rr.recyclingUser,rr.operator " - + " from RecyclingItem ri inner join RecyclingRecord rr on ri.recyclingRecord_id=rr.id " - + " join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID " - + tousseDefinitionJoinSterilisationJoin - + " left join OrgUnit ou on ou.orgUnitCoding=rr.orgUnitCoding " - + " where rr.recyclingTime between "+ dateQueryAdapter.dateAdapter(startDate) - +" and "+ dateQueryAdapter.dateAdapter(endDate) - + " %s %s %s %s %s order by rr.recyclingTime desc ", - SqlUtils.getWhereSqlByfilterFieldAndStringValue("rr.departCode", AcegiHelper.getCurrentOrgUnitCode()), - tdTousseGroupWhereName, - ssSterilisationWhereSql, - tdTousseTypeWhereSql, - tdTousseNameWhereSql); - ResultSet rs = null; - List listArr = new ArrayList(); - try { - logger.debug("运作监控回收详情查询sql:" + sql); - rs = objectDao.executeSql(sql); - while(rs.next()){ - Date recyclingTime = rs.getTimestamp("recyclingTime"); - Long amount = rs.getLong("amount"); - String depart = rs.getString("depart"); - String orgUnitName = rs.getString("orgUnitName"); - String recyclingUser = rs.getString("recyclingUser"); - String operator = rs.getString("operator"); - JSONObject obj = new JSONObject(); - obj.put("recyclingTime", recyclingTime == null?"":Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(recyclingTime)); - obj.put("recyAmount", amount); - obj.put("depart", depart); - obj.put("orgUnitName", orgUnitName); - obj.put("recyclingUser", recyclingUser); - obj.put("operator", operator); - listArr.add(obj); - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(rs); - } - return listArr.toString(); - } - /** - * 获取科室运作监控发货详情信息 - * @param startDate - * @param endDate - * @param tousseName - * @param orgUnit 当前登录科室 - * @param tousseType 包类型 - * @param tousseGroupName 器械包分组 - * @param sterilizationMode 灭菌方式 - * @return 发货物品的信息 - */ - private String getInvoieInformationOfDepartmentOperationMonitoring( - String startDate, String endDate, String tousseName, - String orgUnit, String tousseType, String tousseGroupName, - String sterilizationMode){ - String tousseDefinitionJoinSterilisationJoin = ""; - String ssSterilisationWhereSql = ""; - if(StringUtils.isNotBlank(sterilizationMode)){ - ssSterilisationWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("ss.sterilizationMode", sterilizationMode); - tousseDefinitionJoinSterilisationJoin = " join Sterilisation ss on ss.sterilisation=td.sterilingMethod "; - } - String tdTousseTypeWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValueAndSeparator("td.tousseType", tousseType,","); - String tdTousseGroupWhereName = SqlUtils.getWhereSqlByfilterFieldAndStringValue("tdc.tousseGroupName", tousseGroupName); - String iiTousseNameWhereSql = ""; - String tiTousseNameWhereSql = ""; - if(StringUtils.isNotBlank(tousseName)){ - iiTousseNameWhereSql = " and ii.tousseName='"+ tousseName + "'"; - } - String currentOrgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); - String invoiceSql = String.format(" select i.sendTime,ii.amount,i.depart,i.settleAccountsDepart,i.sender " - + "from Invoice i inner " - + "join InvoiceItem ii on i.id=ii.invoice_id " - + " join TousseDefinition td on ii.tousseDefinitionId=td.id join TousseDefinition tdc on tdc.id=td.ancestorID " - + tousseDefinitionJoinSterilisationJoin - + "where i.sendTime between "+ dateQueryAdapter.dateAdapter(startDate) - +" and "+ dateQueryAdapter.dateAdapter(endDate) - +" %s %s %s %s %s order by i.sendTime desc ", - tdTousseGroupWhereName, - ssSterilisationWhereSql, - tdTousseTypeWhereSql, - iiTousseNameWhereSql, - SqlUtils.getWhereSqlByfilterFieldAndStringValue("i.departCoding", currentOrgUnitCode)); - ResultSet invoiceRs = null; - List listArr = new ArrayList(); - try { - logger.debug("运作监控发货详情查询sql:" + invoiceSql); - invoiceRs = objectDao.executeSql(invoiceSql); - while(invoiceRs.next()){ - Date sendTime = invoiceRs.getTimestamp("sendTime"); - String depart = invoiceRs.getString("depart"); - Long invoiceAmount = invoiceRs.getLong("amount"); - String settleAccountsDepart = invoiceRs.getString("settleAccountsDepart"); - String sender = invoiceRs.getString("sender"); - JSONObject obj = new JSONObject(); - obj.put("sendTime", sendTime == null?"":Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(sendTime)); - obj.put("invoiceAmount", invoiceAmount); - obj.put("depart", depart); - obj.put("settleAccountsDepart", settleAccountsDepart); - obj.put("sender", sender); - listArr.add(obj); - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(invoiceRs); - } - return listArr.toString(); - } @Override public String getSummaryInformationOfDepartmentOperationMonitoring(String startDate, String endDate, String tousseName, String orgUnit,String tousseType, String tousseGroupName, String sterilizationMode){ - - if("全部".equals(tousseType)){ - tousseType = ""; - }else if("全部器械包".equals(tousseType)){ - tousseType = String.format("%s,%s,%s,%s,%s", TousseDefinition.PACKAGE_TYPE_INSIDE, - TousseDefinition.PACKAGE_TYPE_DRESSING, TousseDefinition.PACKAGE_TYPE_DISINFECTION, TousseDefinition.PACKAGE_TYPE_FOREIGN, - TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY, TousseDefinition.PACKAGE_TYPE_CUSTOM); - }else if("外部代理灭菌包".equals(tousseType)){ - tousseType = TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY; - } - if("全部".equals(sterilizationMode)){ - sterilizationMode = ""; - } - if("全部".equals(tousseGroupName)){ - tousseGroupName = ""; - } - - String tdTousseTypeWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValueAndSeparator("td.tousseType", tousseType,","); - String tdTousseGroupWhereName = SqlUtils.getWhereSqlByfilterFieldAndStringValue("tdc.tousseGroupName", tousseGroupName); - String tousseDefinitionJoinSterilisationJoin = ""; - String ssSterilisationWhereSql = ""; - if(StringUtils.isNotBlank(sterilizationMode)){ - ssSterilisationWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("ss.sterilizationMode", sterilizationMode); - tousseDefinitionJoinSterilisationJoin = " join Sterilisation ss on ss.sterilisation=td.sterilingMethod "; - } - - String iiTousseNameWhereSql = ""; - String tiTousseNameWhereSql = ""; - String tdTousseNameWhereSql = ""; - if(StringUtils.isNotBlank(tousseName)){ - iiTousseNameWhereSql = " and ii.tousseName='"+ tousseName + "'"; - tiTousseNameWhereSql = " and ti.tousseName='"+ tousseName + "'"; - tdTousseNameWhereSql = " and td.name='"+ tousseName + "'"; - } - String currentOrgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); - Map resultMap = new HashMap(); - List listArr = new ArrayList(); - String tousseSql = ""; - String tdSql = ""; - String recycSql = ""; - if(StringUtils.isNotBlank(tousseName)){ - try { - tousseName = URLDecoder.decode(tousseName, "utf-8"); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - if(false && TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(tousseType)){ - tousseName = tousseName.replace("[", "[[]"); - tousseSql = " and ti.tousseName like '%"+tousseName+"%'"; - tdSql = " and po.name like '%"+tousseName+"%'"; - recycSql = ""; - }else{ - tousseSql = " and ti.tousseName = '"+tousseName+"'"; - tdSql = " and po.name = '"+tousseName+"'"; - recycSql = ""; - } - } - - String appAndRecyAmountSql = " select ti.tousseName as tousseName ,sum(ti.amount) as amount " - + " from invoicePlan ip inner join TousseItem ti on ip.id = ti.recyclingApplication_ID " - + " join RecyclingApplication ra on ra.id=ip.id " - + " join TousseDefinition td on td.id=ti.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID " - + tousseDefinitionJoinSterilisationJoin - + " where ip.applicationTime between "+ dateQueryAdapter.dateAdapter(startDate) - +" and "+ dateQueryAdapter.dateAdapter(endDate) - +" and ip.depart = '"+orgUnit+"' " - + " and (ra.userecord_id is not null or (ra.userecord_id is null and (ti.isterminated is null or ti.isterminated<>1) )) " - + tousseSql - + tdTousseTypeWhereSql - + ssSterilisationWhereSql - + tdTousseGroupWhereName - +" and ti.amount > 0 group by ti.tousseName"; - ResultSet applicationRs = null; - try { - logger.debug("运作监控申请查询sql:" + appAndRecyAmountSql); - applicationRs = objectDao.executeSql(appAndRecyAmountSql); - while(applicationRs.next()){ - Long applicationAmount = applicationRs.getLong("amount"); - String applicationRstousseName = applicationRs.getString("tousseName"); - JSONObject obj = new JSONObject(); - obj.put("tousseName", applicationRstousseName); - obj.put("applicationAmount", applicationAmount); - obj.put("uiProvider", "col");//前台需要 - obj.put("cls", "master-task");//前台需要 - obj.put("iconCls", "task-folder");//前台需要 - obj.put("children", "[]");//前台需要 - resultMap.put(applicationRstousseName, obj); - listArr.add(obj); - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(applicationRs); - } - String recySql = String.format("select td.name,sum(ri.amount) amount " - + " from RecyclingItem ri inner join RecyclingRecord rr on ri.recyclingRecord_id=rr.id " - + " join TousseDefinition td on td.id=ri.tousseDefinitionId join TousseDefinition tdc on tdc.id=td.ancestorID " - + tousseDefinitionJoinSterilisationJoin - + " left join OrgUnit ou on ou.orgUnitCoding=rr.orgUnitCoding " - + " where rr.recyclingTime between "+ dateQueryAdapter.dateAdapter(startDate) - +" and "+ dateQueryAdapter.dateAdapter(endDate) - + " %s %s %s %s %s group by td.name ", - SqlUtils.getWhereSqlByfilterFieldAndStringValue("rr.departCode", AcegiHelper.getCurrentOrgUnitCode()), - tdTousseGroupWhereName, - ssSterilisationWhereSql, - tdTousseTypeWhereSql, - tdTousseNameWhereSql); - ResultSet recyRs = null; - try { - logger.debug("运作监控回收查询sql:" + recySql); - applicationRs = objectDao.executeSql(recySql); - while(applicationRs.next()){ - Long amount = applicationRs.getLong("amount"); - String recyTousseName = applicationRs.getString("name"); - JSONObject obj = null; - if(resultMap.containsKey(recyTousseName)){ - obj = resultMap.get(recyTousseName); - obj.put("recyAmount", amount); - }else{ - obj = new JSONObject(); - obj.put("tousseName", recyTousseName); - obj.put("recyAmount", amount); - obj.put("uiProvider", "col");//前台需要 - obj.put("cls", "master-task");//前台需要 - obj.put("iconCls", "task-folder");//前台需要 - obj.put("children", "[]");//前台需要 - resultMap.put(recyTousseName, obj); - listArr.add(obj); - } - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(recyRs); - } - String invoiceSql = String.format(" select ii.tousseName,sum(ii.amount) amount " - + "from Invoice i inner " - + "join InvoiceItem ii on i.id=ii.invoice_id " - + " join TousseDefinition td on ii.tousseDefinitionId=td.id join TousseDefinition tdc on tdc.id=td.ancestorID " - + tousseDefinitionJoinSterilisationJoin - + "where i.sendTime between "+ dateQueryAdapter.dateAdapter(startDate) - +" and "+ dateQueryAdapter.dateAdapter(endDate) - +" %s %s %s %s %s group by ii.tousseName ", - tdTousseGroupWhereName, - ssSterilisationWhereSql, - tdTousseTypeWhereSql, - iiTousseNameWhereSql, - SqlUtils.getWhereSqlByfilterFieldAndStringValue("i.departCoding", currentOrgUnitCode)); - ResultSet invoiceRs = null; - try { - logger.debug("运作监控发货查询sql:" + invoiceSql); - invoiceRs = objectDao.executeSql(invoiceSql); - while(invoiceRs.next()){ - String tousseNameinvoiceRs = invoiceRs.getString("tousseName"); - Long invoiceAmount = invoiceRs.getLong("amount"); - JSONObject obj = null; - if(resultMap.containsKey(tousseNameinvoiceRs)){ - obj = resultMap.get(tousseNameinvoiceRs); - obj.put("invoiceAmount", invoiceAmount); - }else{ - obj = new JSONObject(); - obj.put("tousseName", tousseNameinvoiceRs); - obj.put("invoiceAmount", invoiceAmount); - obj.put("uiProvider", "col");//前台需要 - obj.put("cls", "master-task");//前台需要 - obj.put("iconCls", "task-folder");//前台需要 - obj.put("children", "[]");//前台需要 - resultMap.put(tousseNameinvoiceRs, obj); - listArr.add(obj); - } - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(invoiceRs); - } - String signedSql = String.format("select ti.tousseName,count(*) amount from SignRecord sr " - + " join OrgUnit ou on ou.orgUnitCoding=sr.departCode " - + " join TousseInstance ti on ti.signRecordId=sr.id " - + " join TousseDefinition td on td.id=ti.tousseDefinition_id join TousseDefinition tdc on tdc.id=td.ancestorID " - + tousseDefinitionJoinSterilisationJoin - + " where ti.signedDate between "+ dateQueryAdapter.dateAdapter(startDate) - + " and "+ dateQueryAdapter.dateAdapter(endDate) - + " %s %s %s %s %s group by ti.tousseName ", - SqlUtils.getWhereSqlByfilterFieldAndStringValue("sr.departCode", currentOrgUnitCode), - tiTousseNameWhereSql - ,tdTousseGroupWhereName - ,tdTousseTypeWhereSql - ,ssSterilisationWhereSql); - ResultSet signRs = null; - try { - logger.debug("运作监控签收查询sql:" + signedSql); - signRs = objectDao.executeSql(signedSql); - while(signRs.next()){ - String tousseNameRs2 = signRs.getString("tousseName"); - Long signAmount = signRs.getLong("amount"); - JSONObject obj = null; - if(resultMap.containsKey(tousseNameRs2)){ - obj = resultMap.get(tousseNameRs2); - obj.put("signAmount", signAmount); - }else{ - obj = new JSONObject(); - obj.put("tousseName", tousseNameRs2); - obj.put("signAmount", signAmount); - obj.put("uiProvider", "col");//前台需要 - obj.put("cls", "master-task");//前台需要 - obj.put("iconCls", "task-folder");//前台需要 - obj.put("children", "[]");//前台需要 - resultMap.put(tousseNameRs2, obj); - listArr.add(obj); - } - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(signRs); - } -/* String useSql = ""; - String dispoSql = ""; - String useRecordDepartCodingWhereSql = SqlUtils.getWhereSqlByfilterFieldAndStringValue("u.departCoding", currentOrgUnitCode); - useSql = String.format(" select ti.tousseName tousseName ,count(0) amount from userecord u " - + " inner join TousseInstance ti on ti.useRecord_id=u.id " - + " join TousseDefinition td on td.id=ti.tousseDefinition_id %s " - + " where ti.useTime between " + dateQueryAdapter.dateAdapter(startDate) - +" and "+ dateQueryAdapter.dateAdapter(endDate) - + " %s %s %s %s %s group by ti.tousseName " , - tousseDefinitionJoinSterilisationJoin, - tiTousseNameWhereSql, - tdTousseGroupWhereName, - tdTousseTypeWhereSql, - useRecordDepartCodingWhereSql, - ssSterilisationWhereSql); - ResultSet useRs = null; - if(StringUtils.isNotBlank(useSql)){ - try { - logger.debug("运作监控使用查询sql:" + useSql); - useRs = objectDao.executeSql(useSql); - while(useRs.next()){ - String tousseNameUseRs = useRs.getString("tousseName"); - Long useAmount = useRs.getLong("amount"); - JSONObject obj = null; - if(resultMap.containsKey(tousseNameUseRs)){ - obj = resultMap.get(tousseNameUseRs); - obj.put("useAmount", useAmount); - }else{ - obj = new JSONObject(); - obj.put("tousseName", tousseNameUseRs); - obj.put("useAmount", useAmount); - obj.put("uiProvider", "col");//前台需要 - obj.put("cls", "master-task");//前台需要 - obj.put("iconCls", "task-folder");//前台需要 - obj.put("children", "[]");//前台需要 - resultMap.put(tousseNameUseRs, obj); - listArr.add(obj); - } - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(useRs); - } - }*/ - return listArr.toString(); + return informationOfDepartmentOperationMonitoringHelper.getSummaryInformationOfDepartmentOperationMonitoring(startDate, endDate, tousseName, orgUnit, tousseType, tousseGroupName, sterilizationMode); } /** * 获取已装配数量