Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/CustomReportsOfXjjqzyy.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/CustomReportsOfXjjqzyy.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/CustomReportsOfXjjqzyy.java (revision 25740) @@ -0,0 +1,178 @@ +package com.forgon.disinfectsystem.jasperreports.service; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.LinkedList; +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.Constants; +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.disinfectsystem.entity.foreigntousseapplication.ForeignTousseApplication; +import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; +import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.disinfectsystem.jasperreports.javabeansource.ForeignTousseApplicationVO; +import com.forgon.disinfectsystem.jasperreports.javabeansource.TousseItemVO; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.string.StringTools; + +@Component(value = "customReportsOfXjjqzyy") +public class CustomReportsOfXjjqzyy { + + @Autowired + private ObjectDao objectDao; + + @Autowired + private DateQueryAdapter dateQueryAdapter; + + /** + * 获取xjjqzyy定制的外来器械申请报表数据 + * @param startDay 申请开始时间 + * @param endDay 申请结束时间 + * @param assemblingStartTime 装配开始时间 + * @param assemblingEndTime 装配结束时间 + * @param goodsName tousseItem的tousseName + * @param deptName 部门名字 + * @param patientName 病人名字 + * @param deliverStatus 发货状态 + * @return 外来器械申请报表数据列表 + */ + public List getForeignTousseApplicationReport( + String startDay, String endDay, String assemblingStartTime, String assemblingEndTime, String goodsName, String deptName , String patientName , String deliverStatus) { + List list = new LinkedList(); + if (StringUtils.isNotBlank(endDay)) { + endDay += " 23:59:59"; + } + if (StringUtils.isNotBlank(assemblingEndTime)) { + assemblingEndTime += " 23:59:59"; + } + StringBuilder sqlBuilder = new StringBuilder(); + String sql = String.format("select i.id id,ti.operator operator,ti.reviewer reviewer,ti.operationTime operationTime,tim.recyclingAmount recyclingAmount,mi.isImplant isImplant,ti.weight weight,ti.price price from %s f left join %s i on f.id=i.id left join TousseInstance ti on f.id=ti.invoicePlanID left join TousseDefinition td on ti.tousseDefinition_id = ti.tousseDefinition_id left join MaterialInstance mi on mi.tousse_id = td.id left join TousseItem tim on tim.invoicePlanID = f.id where (i.applicationTime between %s and %s) and (ti.operationTime between %s and %s) ", + ForeignTousseApplication.class.getSimpleName(), + InvoicePlan.class.getSimpleName(), + dateQueryAdapter.dateAdapter(startDay), + dateQueryAdapter.dateAdapter(endDay), + dateQueryAdapter.dateAdapter(assemblingStartTime), + dateQueryAdapter.dateAdapter(assemblingEndTime)); + sqlBuilder.append(sql); + if (StringUtils.isNotBlank(goodsName)) { + sql = String.format(" and f.id=(select t.recyclingApplication_ID from %s t where t.recyclingApplication_ID=f.id and t.tousseName = '%s')",TousseItem.class.getSimpleName(),goodsName); + sqlBuilder.append(sql); + } + if (StringUtils.isNotBlank(deptName)) { + sql = " and i.depart = '" + deptName + "' "; + sqlBuilder.append(sql); + } + if (StringUtils.isNotBlank(patientName)) { + sql = " and f.patient = '" + patientName + "' "; + sqlBuilder.append(sql); + } + if (StringUtils.isNotBlank(deliverStatus)) { + sql = " and i.deliverStatus = '" + deliverStatus + "' "; + sqlBuilder.append(sql); + } + sqlBuilder.append("group by i.id,ti.operator,ti.reviewer,ti.operationTime,tim.recyclingAmount,mi.isImplant,ti.weight,ti.price order by i.id asc"); + ResultSet rs = objectDao.executeSql(sqlBuilder.toString()); + StringBuilder idStr = new StringBuilder(); + try { + ForeignTousseApplicationVO vo = null; + ForeignTousseApplication foreignTousseApplication = null; + while (rs.next()) { + String id = rs.getString("id"); + String isImplant = rs.getString("isImplant"); + if(idStr.indexOf(id) != -1){//判断外来器械申请单中是否包含植入物 + if("是".equals(isImplant)){ + vo.setIsImplant(isImplant); + } + continue; + } + vo = new ForeignTousseApplicationVO(); + int recyclingAmount = rs.getInt("recyclingAmount"); + vo.setRecyclingAmount(recyclingAmount); + vo.setIsImplant(StringTools.defaultIfBlank(isImplant,"")); + foreignTousseApplication = (ForeignTousseApplication) objectDao + .getByProperty( + ForeignTousseApplication.class.getSimpleName(), + "id", Long.valueOf(id)); + idStr.append(id).append(";"); + vo.setDepart(StringTools.defaultIfBlank(foreignTousseApplication.getDepart(),"")); + String applicationTimeStr = ""; + if (foreignTousseApplication.getApplicationTime() != null) { + applicationTimeStr = Constants.SIMPLEDATEFORMAT_YYYYMMDD + .format(foreignTousseApplication + .getApplicationTime()); + } + String operator = rs.getString("operator"); + String reviewer = rs.getString("reviewer"); + String assemblyTimeStr = rs.getString("operationTime"); + String weight = rs.getString("weight"); + String price = rs.getString("price"); + vo.setOperator(StringTools.defaultIfBlank(operator,"")); + vo.setReviewer(StringTools.defaultIfBlank(reviewer,"")); + if(assemblyTimeStr != null){ + assemblyTimeStr = assemblyTimeStr.substring(0, 16); + } + vo.setWeight(StringTools.defaultIfBlank(weight,"")); + vo.setDisinfectionCost(StringTools.defaultIfBlank(price,"")); + vo.setAssemblyTimeStr(StringTools.defaultIfBlank(assemblyTimeStr,"")); + vo.setApplicationTimeStr(StringTools.defaultIfBlank(applicationTimeStr,"")); + vo.setApplicant(StringTools.defaultIfBlank(foreignTousseApplication.getApplicant(),"")); + vo.setRemark(StringTools.defaultIfBlank(foreignTousseApplication.getRemark(),"")); + vo.setPatient(StringTools.defaultIfBlank(foreignTousseApplication.getPatient(),"")); + vo.setSurgery(StringTools.defaultIfBlank(foreignTousseApplication.getSurgery(),"")); + vo.setHospitalNumber(StringTools.defaultIfBlank(foreignTousseApplication.getHospitalNumber(),"")); + vo.setDepart(StringTools.defaultIfBlank(foreignTousseApplication.getDepart(),"")); + vo.setDeliverStatus(StringTools.defaultIfBlank(foreignTousseApplication.getDeliverStatus(),"")); + vo.setAscriptionDepartment(StringTools.defaultIfBlank(foreignTousseApplication.getAscriptionDepartment(),"")); + vo.setDoctor(StringTools.defaultIfBlank(foreignTousseApplication.getDoctor(),"")); + vo.setProcessType(StringTools.defaultIfBlank(foreignTousseApplication.getProcessType(),"")); + List appItems = foreignTousseApplication.getApplicationItems(); + if(appItems != null &&appItems.size()>0){ + vo.setSupplierName(appItems.get(0).getSupplierName()); + } + if(vo.getProcessType() == null){ + vo.setProcessType(""); + } + // 拆包信息 + String tousseItemVOSql = String + .format("select t.tousseName,count(*) from %s t where t.foreignTousseApp_id=%s group by t.tousseName", + TousseInstance.class.getSimpleName(), id); + List tousseItems = vo.getTousseItems(); + ResultSet tousseItemVORS = objectDao.executeSql(tousseItemVOSql); + try { + while (tousseItemVORS.next()) { + String itemName = tousseItemVORS.getString(1); + // 去掉包名下划线 + if(StringUtils.isNotBlank(itemName)){ + itemName = itemName.replaceAll("_", ""); + } + long tousseInstanceAmount = tousseItemVORS.getLong(2); + TousseItemVO tousseItemVO = new TousseItemVO(); + tousseItemVO.setItemName(itemName); + tousseItemVO.setTousseInstanceAmount(tousseInstanceAmount); + tousseItems.add(tousseItemVO); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(tousseItemVORS); + } + // 如果是空的列表,要添加一个空的对象,避免单元格的线不显示。 + if(tousseItems.size() == 0){ + tousseItems.add(new TousseItemVO()); + } + vo.setTousseItems(tousseItems); + list.add(vo); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return list; + } + +} Index: ssts-web/src/main/webapp/disinfectsystem/config/xjjqzyy/menu/menuconfigure.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/config/xjjqzyy/menu/menuconfigure.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/config/xjjqzyy/menu/menuconfigure.js (revision 25740) @@ -0,0 +1,752 @@ +var linkTarget = 'mainFrame'; +var singleClickExpandTree=true; +//是否禁用虚拟篮筐(未启用disableLoadToVirtualBasket配置项目或该配置项的值为true时,则禁用,否则启用虚拟篮筐) +var disableLoadToVirtualBasket = true; +var url = WWWROOT+'/disinfectsystem/touchScreen/recycle/awaitForRecycleList.jsp?resolution=1980'; +var qualityMonthViewName = "质量监测项统计月报"; +if(sstsConfig.hasOwnProperty('isQualityMonthViewSpecial') && sstsConfig.isQualityMonthViewSpecial){ + qualityMonthViewName = "质量监测项统计分析报表"; +} +var isDeviceMaintenanceCus = false; +if(sstsConfig.hasOwnProperty('isDeviceMaintenanceCus') && sstsConfig.isDeviceMaintenanceCus){ + isDeviceMaintenanceCus = true; +} +if(sstsConfig.hasOwnProperty('disableLoadToVirtualBasket') && !sstsConfig.disableLoadToVirtualBasket){ + disableLoadToVirtualBasket = false; +} +var hideDeviceMaintenaceReport = true; +var hideDeviceMaintenaceCusReport = true; +if(SSTS_DeviceMaintenanceReport == false){ + if(isDeviceMaintenanceCus == true){ + hideDeviceMaintenaceReport = true; + hideDeviceMaintenaceCusReport = false; + }else{ + hideDeviceMaintenaceReport = false; + hideDeviceMaintenaceCusReport = true; + } +} + +DisinfectsystemTreeData =[{ + text:"科室申领", + singleClickExpand:singleClickExpandTree, + hidden:SSTS_RecycApplication_Folder, + children:[ + {hidden :SSTS_RecycApplication_Menu,text:"全部申请单",href:WWWROOT+'/disinfectsystem/recyclingApplication/goodsApplicationView.jsp?listType=all',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_Application_ShowTodoOnly_Menu,text:"待处理申请单",href:WWWROOT+'/disinfectsystem/recyclingApplication/goodsApplicationView.jsp?listType=todoList',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_ForeignTousseApplication_Menu,text:"外来器械包申请",href:WWWROOT+'/disinfectsystem/foreigntousseapplication/foreignTousseApplicationView.jsp?borrowing=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_borrow_Menu,text:"借物单管理",href:WWWROOT+'/disinfectsystem/borrow/borrowingTousseView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_borrowRecord_Menu,text:"科室互借管理",href:WWWROOT+'/disinfectsystem/borrowRecord/borrowRecordView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_Invoice_Sign,text:"物品签收",leaf:true} + + ] +},{ + text:"回收清点", + singleClickExpand:singleClickExpandTree, + hidden:SSTS_RecycRecord_Menu, + children:[ + {hidden :SSTS_RecycRecord_Menu,text:"回收清点",href:'javascript:void(0);',leaf:true,listeners:{ + click:function(node, e){ + var url = WWWROOT+'/disinfectsystem/touchScreen/recycle/awaitForRecycleList.jsp?resolution=1980'; + top.recyclingWindow = openFullSizeWindowWithName(url,null,"recyclingWindow"); + return; + } + }}, + {hidden :SSTS_RecycRecord_Menu,text:"器械交接",href:WWWROOT+'/disinfectsystem/recycle/tousseTransition/tousseTransitionView.jsp',hrefTarget:linkTarget,leaf:true} + ] +},{ + text:"回收分类", + singleClickExpand:singleClickExpandTree, + hidden : true, + children:[ + {hidden :true,text:"器械分类记录",href:WWWROOT+'/disinfectsystem/becleanitem/becleanitem.jsp',hrefTarget:linkTarget,leaf:true} + ] +},{ + text:"清洗消毒", + singleClickExpand:singleClickExpandTree, + hidden:SSTS_Wash_Menu, + children:[ + {hidden :SSTS_WashRecord_Menu,text:"清洗消毒记录",href:WWWROOT+'/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_WashTransitionRecord_Menu,text:"清洗交接记录",href:WWWROOT+'/disinfectsystem/washanddisinfectmanager/washTransitionRecord/washTransitionRecordView.jsp?',hrefTarget:linkTarget,leaf:true} + ] +}]; + +var index = DisinfectsystemTreeData.length; + +DisinfectsystemTreeData[4] = { + text:"装配管理", + singleClickExpand:singleClickExpandTree, + hidden:SSTS_Packing_Manager, + children:[] +}; + +DisinfectsystemTreeData[5] = { + text:"审核打包", + singleClickExpand:singleClickExpandTree, + hidden:SSTS_Tousse_Review_Manager, + children:[] +}; + +DisinfectsystemTreeData[6] = { + text:"灭菌管理", + singleClickExpand:singleClickExpandTree, + hidden:SSTS_Sterilization_Manager, + children:[ + + ] +}; +DisinfectsystemTreeData[7] = { + text:"发货管理", + singleClickExpand:singleClickExpandTree, + hidden:SSTS_Invoice_Manager, + children:[ + {hidden :SSTS_Invoice_Menu,text:"发货计划管理",href:WWWROOT+'/disinfectsystem/invoice/invoicePlanExtractedView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_Invoice_Menu || !sstsConfig.enableExpensiveGoods,text:"高值耗材发货",href:WWWROOT+'/disinfectsystem/assestManagement/expensiveGoods/invoice/expensiveGoodsInvoiceView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_OperationReservationDelivery_Menu,text:"手术预约管理",href:WWWROOT+'/disinfectsystem/invoice/operationReservationView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_OperationReservationDelivery_Menu,text:"手术预约发货",href:WWWROOT+'/disinfectsystem/invoice/operationReservationInvoiceView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_OperationReservationDelivery_Menu,text:"手术预约汇总发货",href:WWWROOT+'/disinfectsystem/invoice/operationReservationMergeInvoiceView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_CustomDelivery_Manager,text:"自定义发货",href:WWWROOT+'/disinfectsystem/invoice/customInvoiceForm.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_Invoice_Menu,text:"快速发货",href:WWWROOT+'/disinfectsystem/invoice/expressInvoiceView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_Invoice_Menu,text:"科室发货计划设置",href:WWWROOT+'/disinfectsystem/invoice/invoiceDepartmentView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_Invoice_Menu,text:"发货单管理",href:WWWROOT+'/disinfectsystem/invoice/invoiceView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_Invoice_Menu,text:"材料发货管理",href:WWWROOT+'/disinfectsystem/invoice/materialInvoiceView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :true,text:"发货单批量打印",href:WWWROOT+'/disinfectsystem/invoice/invoicePrintView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_DeliverGoodsQuqery,text:"发货物品查询",href:WWWROOT+'/disinfectsystem/reportforms/invoiceQueryView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_OperationReservationInvoice,text:"手术排班物品查询",href:WWWROOT+'/disinfectsystem/reportforms/operationReservationInvoiceView.jsp?',hrefTarget:linkTarget,leaf:true} + ] +}; + +DisinfectsystemTreeData[8] = { + text:"使用记录", + singleClickExpand:singleClickExpandTree, + hidden:SSTS_UseRecord_Menu, + children:[ + {hidden :SSTS_UseRecord_Menu,text:"使用记录",href:WWWROOT+'/disinfectsystem/useRecord/useRecordView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true} + ] +}; + +DisinfectsystemTreeData[9] = { + text:"器械包返消", + singleClickExpand:singleClickExpandTree, + hidden:SSTS_TousseReturnDisinfect_Menu, + children:[ + {hidden :SSTS_TousseReturnDisinfect_Menu,text:"器械包返消",href:WWWROOT+'/disinfectsystem/tousseReturnDisinfect/tousseReturnDisinfectView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_TousseReturnDisinfectionReport,text:"器械包返消统计报表",href:WWWROOT+'/disinfectsystem/reportforms/tousseReturnDisinfectionView.jsp',hrefTarget:linkTarget,leaf:true} + ] + }; + +DisinfectsystemTreeData[10] = { + text:"满意度调查", + singleClickExpand:singleClickExpandTree, + hidden:SSTS_SatisfactionSurvey_Menu, + children:[ + {hidden :SSTS_SatisfactionSurveyTemplate_Menu,text:"满意度调查表定义",href:WWWROOT+'/disinfectsystem/satisfactionsurvey/satisfactionSurveyTemplateView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_SatisfactionSurveyTable_Menu,text:"满意度调查表",href:WWWROOT+'/disinfectsystem/satisfactionsurvey/satisfactionSurveyTableView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_SatisfactionSurveyTemplate_Menu,text:"满意度调查报表",href:WWWROOT+'/disinfectsystem/reportforms/departSatisfyView.jsp',hrefTarget:linkTarget,leaf:true} + ] +}; +DisinfectsystemTreeData[11] = { + text:"运作监控管理", + singleClickExpand:singleClickExpandTree, + hidden:SSTS_supplyRoomOperate_View, + children:[ + {hidden :SSTS_supplyRoomOperate_Menu,text:"消毒供应中心运作监控",href:WWWROOT+'/homepage/supplyRoomOperate.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_supplyRoomOperate_Menu,text:"消毒供应中心未完成工作列表",href:WWWROOT+'/homepage/supplyRoomUnfinishedWork.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_TousseOperateCountReport,text:"科室运作监控",href:WWWROOT+'/disinfectsystem/reportforms/tousseOperate.jsp',hrefTarget:linkTarget,leaf:true} + ] +}; +DisinfectsystemTreeData[12] = { + text:"档案管理", + singleClickExpand:singleClickExpandTree, + hidden:(!sstsConfig.hasOwnProperty('hideStaffArchive')) || sstsConfig.hideStaffArchive || SSTS_StaffArchive_Menu, + children:[ + {hidden :SSTS_StaffArchive_Menu,text:"人员档案管理",href:WWWROOT+'/disinfectsystem/staffArchives/staffArchiveView.jsp',hrefTarget:linkTarget,leaf:true} + ] + }; +DisinfectsystemTreeData[13] = { + text:"培训管理", + singleClickExpand:singleClickExpandTree, + hidden:SSTS_TrainingManage_Menu, + children:[ + {hidden :SSTS_TrainingManage_Menu,text:"培训管理",href:WWWROOT+'/knowledge/view.do?moduleId=trainingManage',hrefTarget:linkTarget,leaf:true} + ] + }; + +DWREngine.setAsync(false); +PackingTableManager.getAllTaskGroup(setTaskGroup); +function setTaskGroup(taskGroup){ + for(var i=0;i0){ + for(var i=0;i