Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r16120 -r16176 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 16120) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 16176) @@ -48,6 +48,8 @@ import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager; import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.customform.formdefinition.service.FormDefinitionManager; +import com.forgon.disinfectsystem.customform.formdefinition.service.FormDefinitionManagerImpl; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; import com.forgon.disinfectsystem.diposablegoods.service.GodownEntryItemManager; import com.forgon.disinfectsystem.diposablegoods.util.GodownEntryUtil; @@ -67,6 +69,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.becleanitem.ClassifiedItem; import com.forgon.disinfectsystem.entity.becleanitem.ClassifyBasket; +import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinition; import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinitionItem; import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinitionItemOption; import com.forgon.disinfectsystem.entity.customform.forminstance.FormInstance; @@ -139,6 +142,8 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.MonthReportBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.MonthReportChartBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.PackingFractionDefectiveBean; +import com.forgon.disinfectsystem.jasperreports.javabeansource.QualityMonitoringInspectBean; +import com.forgon.disinfectsystem.jasperreports.javabeansource.QualityMonitoringInspectMonthLineChartBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.ReturnGoodsItemVo; import com.forgon.disinfectsystem.jasperreports.javabeansource.ReturnGoodsVo; import com.forgon.disinfectsystem.jasperreports.javabeansource.ReturnRecordItemVo; @@ -164,6 +169,7 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.YearWorkLoadReportBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.YearWorkloadBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.returnGoodsSummary; +import com.forgon.disinfectsystem.qualitymonitoring.definition.service.QualityMonitoringDefinitionManager; import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; import com.forgon.disinfectsystem.tousse.materialmanager.service.MaterialCheckManager; import com.forgon.disinfectsystem.tousse.materialmanager.service.MaterialEntryItemManager; @@ -234,6 +240,19 @@ private ForeignTousseApplicationManager foreignTousseApplicationManager; + private QualityMonitoringDefinitionManager qualityMonitoringDefinitionManager; + + private FormDefinitionManager formDefinitionManager; + + public void setQualityMonitoringDefinitionManager( + QualityMonitoringDefinitionManager qualityMonitoringDefinitionManager) { + this.qualityMonitoringDefinitionManager = qualityMonitoringDefinitionManager; + } + + public void setFormDefinitionManager(FormDefinitionManager formDefinitionManager) { + this.formDefinitionManager = formDefinitionManager; + } + public OrgUnitManager getOrgUnitManager() { return orgUnitManager; } @@ -11495,7 +11514,321 @@ } return list; } + // 获取质量监测统计项月报统计 + public List getQualityMonitoringInspectMonthParamet(String queryYear,String monitoringType,String inspectItem,String inspectDetail,String type){ + List list = new ArrayList(); + if("firstSecondHalfForm".equals(type) || "compareLastForm".equals(type)){ + // 上下半年对比,或者跟去年对比图 + return getQualityMonitoringInspectCompareParamet(queryYear,monitoringType,inspectItem,inspectDetail,type); + } + if(StringUtils.isNotBlank(queryYear) && StringUtils.isNotBlank(inspectItem)){ + String startYear = queryYear + "-01-01 00:00:00"; + String nextYear = getNextYear(queryYear) + " 00:00:00"; + String sql = ""; + List resultNameList = new ArrayList(); + if(StringUtils.isBlank(inspectDetail)){ + resultNameList = getResultMameList(monitoringType,inspectItem,null); + // 细则没有选,不需要查询监测结果,查询细则 + sql = "select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") +" monthstr,fdi.name,sum(qmi.amount) count " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,FormInstanceItem fiItem,FormDefinitionItem fdi " + + " where qmi.id=fi.id and fd.id = fi.formDefinition_id and fi.id = fiItem.formInstance_id and fiItem.formDefinitionItem_id = fdi.id " + + " and fd.formName = '" + inspectItem + "'" + + " and fd.formType = '" + monitoringType + "'" + + " and (fiItem.id in (select formInstanceItem_id from FormInstanceOptionValue)) " + + " and qmi.dateTime between " + dateQueryAdapter.dateAdapter(startYear) + + "and "+dateQueryAdapter.dateAdapter(nextYear) + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " ,fdi.name "; + }else{ + resultNameList = getResultMameList(monitoringType,inspectItem,inspectDetail); + // 查询细则的统计结果 + sql = "select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") +" monthstr,fiOption.answer,sum(qmi.amount) count " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,FormInstanceItem fiItem,FormDefinitionItem fdi,FormInstanceOptionValue fiOption " + + " where qmi.id=fi.id and fd.id = fi.formDefinition_id and fi.id = fiItem.formInstance_id and fiItem.formDefinitionItem_id = fdi.id and fiOption.formInstanceItem_id = fiItem.id " + + " and fd.formName = '" + inspectItem + "'" + + " and fd.formType = '" + monitoringType + "'" + + " and fdi.name = '" + inspectDetail + "'" + + " and qmi.dateTime between " + dateQueryAdapter.dateAdapter(startYear) + + "and "+dateQueryAdapter.dateAdapter(nextYear) + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " ,fiOption.answer "; + } + if(StringUtils.isNotBlank(sql)){ + ResultSet result = objectDao.executeSql(sql); + if("lineChart".equals(type) || "barChart".equals(type)){ + // 折线图柱状图的bean一样 + list = getQualityMonitoringInspectLineChartBean(resultNameList,result,queryYear); + }else{ + list = getQualityMonitoringInspectBean(resultNameList,result); + } + } + } + return list; + } /** + * 上下半年对比图 或者跟去年对比图 + * @param queryYear + * @param monitoringType + * @param inspectItem + * @param inspectDetail + * @param type + * @return + */ + public List getQualityMonitoringInspectCompareParamet(String queryYear,String monitoringType,String inspectItem,String inspectDetail,String type){ + List list = new ArrayList(); + Map map = new HashMap(); + try{ + if(StringUtils.isNotBlank(queryYear) && StringUtils.isNotBlank(inspectItem)){ + Map> startAndEndDays = null; + if ( "firstSecondHalfForm".equals(type) ) { + startAndEndDays = getStartAndEndDay(queryYear, "split", null); + }else if("compareLastForm".equals(type)){ + startAndEndDays = getStartAndEndDay(queryYear, "compareToLastYear", null); + } + for (String key : startAndEndDays.keySet()) { + String startDay = null; + String endDay = null; + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + List resultNameList = new ArrayList(); + String sql = ""; + if(StringUtils.isBlank(inspectDetail)){ + resultNameList = getResultMameList(monitoringType,inspectItem,null); + // 细则没有选,不需要查询监测结果,查询细则 + sql = "select " +" fdi.name,sum(qmi.amount) count " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,FormInstanceItem fiItem,FormDefinitionItem fdi " + + " where qmi.id=fi.id and fd.id = fi.formDefinition_id and fi.id = fiItem.formInstance_id and fiItem.formDefinitionItem_id = fdi.id " + + " and fd.formName = '" + inspectItem + "'" + + " and fd.formType = '" + monitoringType + "'" + + " and (fiItem.id in (select formInstanceItem_id from FormInstanceOptionValue)) " + + " and qmi.dateTime between " + dateQueryAdapter.dateAdapter(startDay) + + "and "+dateQueryAdapter.dateAdapter(endDay) + + " group by " + " fdi.name "; + }else{ + resultNameList = getResultMameList(monitoringType,inspectItem,inspectDetail); + // 查询细则的统计结果 + sql = "select " +" fiOption.answer,sum(qmi.amount) count " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,FormInstanceItem fiItem,FormDefinitionItem fdi,FormInstanceOptionValue fiOption " + + " where qmi.id=fi.id and fd.id = fi.formDefinition_id and fi.id = fiItem.formInstance_id and fiItem.formDefinitionItem_id = fdi.id and fiOption.formInstanceItem_id = fiItem.id " + + " and fd.formName = '" + inspectItem + "'" + + " and fd.formType = '" + monitoringType + "'" + + " and fdi.name = '" + inspectDetail + "'" + + " and qmi.dateTime between " + dateQueryAdapter.dateAdapter(startDay) + + "and "+dateQueryAdapter.dateAdapter(endDay) + + " group by "+ " fiOption.answer "; + } + ResultSet rs = objectDao.executeSql(sql); + // 根据需要统计的名字,初始化统计项 + for(String name : resultNameList){ + QualityMonitoringInspectBean bean = new QualityMonitoringInspectBean(); + bean.setName(name); + if(!map.containsKey(name)){ + map.put(name, bean); + } + } + try { + while (rs.next()) { + String name = rs.getString(1); + int amount = rs.getInt(2); + if(StringUtils.isNotBlank(name) && map.containsKey(name)){ + QualityMonitoringInspectBean bean = map.get(name); + if("上半年".equals(key) || "去年".equals(key)){ + // 上半年或者去年的数据是value1 + bean.setValue1(amount); + }else{ + bean.setValue2(amount); + } + map.put(name, bean); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + } + }catch(Exception e){ + e.printStackTrace(); + } + list = (List)Arrays.asList(map.values().toArray()); + return list; + } + /** + * 获取表格的javaBean集合 + * @param nameList + * @param resultSet + * @return + */ + private List getQualityMonitoringInspectBean(List nameList,ResultSet resultSet){ + List beanList = new ArrayList(); + if(nameList == null || nameList.size() < 1){ + return beanList; + } + Map map = new HashMap(); + // 根据需要统计的名字,初始化统计项 + for(String name : nameList){ + QualityMonitoringInspectBean bean = new QualityMonitoringInspectBean(); + bean.setName(name); + if(!map.containsKey(name)){ + map.put(name, bean); + } + } + try{ + if(resultSet != null){ + while (resultSet.next()) { + String month = resultSet.getString(1); + String name = resultSet.getString(2); + int amount = resultSet.getInt(3); + if(StringUtils.isNotBlank(name)){ + if(map.containsKey(name)){ + QualityMonitoringInspectBean bean = map.get(name); + setMonthValueToBean(bean,month,amount); + map.put(name,bean); + } + } + } + } + }catch(Exception e){ + e.printStackTrace(); + }finally{ + DatabaseUtil.closeResultSetAndStatement(resultSet); + } + beanList = (List)Arrays.asList(map.values().toArray()); + return beanList; + } + /** + * 获取折线图javaBean集合 + * @param nameList + * @param resultSet + * @return + */ + private List getQualityMonitoringInspectLineChartBean(List nameList,ResultSet resultSet,String queryYear){ + List beanList = new ArrayList(); + if(nameList == null || nameList.size() < 1){ + return beanList; + } + Map map = new HashMap(); + try{ + if(resultSet != null){ + while (resultSet.next()) { + String month = resultSet.getString(1); + String type = resultSet.getString(2); + int amount = resultSet.getInt(3); + int month_i = 1; + if(StringUtils.isNumeric(month)){ + month_i = Integer.valueOf(month); + } + String key = type + "-" + month_i; + QualityMonitoringInspectMonthLineChartBean bean = new QualityMonitoringInspectMonthLineChartBean(); + bean.setType(type); + bean.setAmount(amount); + bean.setMonth(queryYear + "-" + month_i); + map.put(key, bean); + } + } + }catch(Exception e){ + e.printStackTrace(); + }finally{ + DatabaseUtil.closeResultSetAndStatement(resultSet); + } + // 根据需要统计的名字,给没有查到数据置0 + for(String name : nameList){ + String key = ""; + for(int i = 1; i <= 12; i++ ){ + key = name + "-" + i; + if(!map.containsKey(key)){ + QualityMonitoringInspectMonthLineChartBean bean = new QualityMonitoringInspectMonthLineChartBean(); + bean.setType(name); + bean.setMonth(queryYear + "-" + i); + bean.setAmount(0); + beanList.add(bean); + }else{ + QualityMonitoringInspectMonthLineChartBean bean = map.get(key); + beanList.add(bean); + } + } + } +// beanList = (List)Arrays.asList(map.values().toArray()); + return beanList; + } + /** + * 设置质量监测月统计的bean + * @param bean + * @param month + * @param amount + */ + private void setMonthValueToBean(QualityMonitoringInspectBean bean,String month,int amount){ + if(bean == null || StringUtils.isBlank(month) ){ + return ; + } + if(StringUtils.isNumeric(month)){ + int mon = Integer.valueOf(month); + if(mon == 1){ + bean.setJanuaryBHGL(amount); + }else if(mon == 2){ + bean.setFebruaryBHGL(amount); + }else if(mon == 3){ + bean.setMarchBHGL(amount); + }else if(mon == 4){ + bean.setAprilBHGL(amount); + }else if(mon == 5){ + bean.setMayBHGL(amount); + }else if(mon == 6){ + bean.setJuneBHGL(amount); + }else if(mon == 7){ + bean.setJulyBHGL(amount); + }else if(mon == 8){ + bean.setAugustBHGL(amount); + }else if(mon == 9){ + bean.setSeptemberBHGL(amount); + }else if(mon == 10){ + bean.setOctoberBHGL(amount); + }else if(mon == 11){ + bean.setNovemberBHGL(amount); + }else if(mon == 12){ + bean.setDecemberBHGL(amount); + } + } + } + /** + * 通过监测项和细则,获取细则需要统计的结果名称的集合 + * @param inspectItem + * @param inspectDetail + * @return + */ + private List getResultMameList(String monitoringType,String inspectItem,String inspectDetail){ + List nameList = new ArrayList(); + FormDefinition fd = formDefinitionManager.getFormDefinitionByTypeAndName(monitoringType, inspectItem); + if(StringUtils.isBlank(inspectDetail)){ + // 获取统计细则的项 + if( fd != null){ + for(FormDefinitionItem item : fd.getItems()){ + if(Constants.STR_YES.equals(item.getIsReportDisplay())){ + nameList.add(item.getName()); + } + } + } + }else{ + // 获取统计结果的项 + if( fd != null){ + for(FormDefinitionItem item : fd.getItems()){ + if(inspectDetail.equals(item.getName())){ + String type = item.getType(); + // 只有单选或者多选,才加入统计 + if(FormDefinitionItem.TYPE_CHECK.equals(type) || FormDefinitionItem.TYPE_RADIO.equals(type)){ + for(FormDefinitionItemOption optoin : item.getOptions()){ + nameList.add(optoin.getValue()); + } + } + } + } + } + } + return nameList; + } + /** * 获取丢失报损月报数据 */ public List getDamageErrorMontSource(String queryYear,String damageErrorType,String departType){ Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/qualityMonitoringMonthView.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/reportforms/qualityMonitoringMonthView.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/qualityMonitoringMonthView.jsp (revision 16176) @@ -0,0 +1,68 @@ +<%@ page contentType="text/html; charset=UTF-8"%> +<%@ include file="/common/taglibs.jsp"%> + + + +<%@ include file="/common/includeExtJsAndCss.jsp"%> + + + + + + + + + + + + + +质量监测报表 + + + + + + + +
+
+
+ + +
+ + + +
+ + \ No newline at end of file Index: ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectMonthReportBarChartView.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectMonthReportBarChartView.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectMonthReportBarChartView.jrxml (revision 16176) @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + <band height="420" splitType="Stretch"> + <barChart> + <chart evaluationTime="Report"> + <reportElement uuid="7ae0bde5-c265-4ae0-b093-9238e548bd3e" x="21" y="14" width="839" height="406"/> + <chartTitle/> + <chartSubtitle/> + <chartLegend/> + </chart> + <categoryDataset> + <categorySeries> + <seriesExpression><![CDATA[$F{type}]]></seriesExpression> + <categoryExpression><![CDATA[$F{month}]]></categoryExpression> + <valueExpression><![CDATA[$F{amount}]]></valueExpression> + </categorySeries> + </categoryDataset> + <barPlot> + <plot/> + <itemLabel/> + <categoryAxisLabelExpression><![CDATA["时间"]]></categoryAxisLabelExpression> + <categoryAxisFormat> + <axisFormat> + <labelFont> + <font size="14"/> + </labelFont> + </axisFormat> + </categoryAxisFormat> + <valueAxisLabelExpression><![CDATA["数量"]]></valueAxisLabelExpression> + <valueAxisFormat> + <axisFormat> + <labelFont> + <font size="14"/> + </labelFont> + </axisFormat> + </valueAxisFormat> + </barPlot> + </barChart> + </band> + + + + + + + + + + + + + + + + + + + + Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityMonitoringDefinitionManagerImpl.java =================================================================== diff -u -r16133 -r16176 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityMonitoringDefinitionManagerImpl.java (.../QualityMonitoringDefinitionManagerImpl.java) (revision 16133) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityMonitoringDefinitionManagerImpl.java (.../QualityMonitoringDefinitionManagerImpl.java) (revision 16176) @@ -157,4 +157,20 @@ } return objectDao.findBySql(QualityMonitoringDefinition.class.getSimpleName(),sql); } + /** + * 通过监测项名字获取监测细则列表 + */ + public List getItemsByFormDefinitionName(String formDefinitionId){ + List list = new ArrayList(); + if(StringUtils.isBlank(formDefinitionId)){ + return list; + } + String sql = " where po.id = " + formDefinitionId + ""; + List resultList = (List)objectDao.findBySql(QualityMonitoringDefinition.class.getSimpleName(),sql); + if(resultList != null && resultList.size() > 0){ + QualityMonitoringDefinition qmd = resultList.get(0); + list = qmd.getItems(); + } + return list; + } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java =================================================================== diff -u -r16120 -r16176 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 16120) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 16176) @@ -38,6 +38,7 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.MonthReportBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.MonthReportChartBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.PackingFractionDefectiveBean; +import com.forgon.disinfectsystem.jasperreports.javabeansource.QualityMonitoringInspectBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.ReturnGoodsVo; import com.forgon.disinfectsystem.jasperreports.javabeansource.SignGoodsItemVo; import com.forgon.disinfectsystem.jasperreports.javabeansource.SterilizingStove; @@ -367,4 +368,13 @@ * @return */ public List getDamageErrorMontSource(String queryYear,String damageErrorType,String departType); + /** + * 获取质量监测统计项月报统计 + * @param queryYear + * @param monitoringType + * @param inspectItem + * @param inspectDetail + * @return + */ + public List getQualityMonitoringInspectMonthParamet(String queryYear,String monitoringType,String inspectItem,String inspectDetail,String type); } Index: ssts-customform/src/main/java/com/forgon/disinfectsystem/customform/formdefinition/service/FormDefinitionManager.java =================================================================== diff -u -r16133 -r16176 --- ssts-customform/src/main/java/com/forgon/disinfectsystem/customform/formdefinition/service/FormDefinitionManager.java (.../FormDefinitionManager.java) (revision 16133) +++ ssts-customform/src/main/java/com/forgon/disinfectsystem/customform/formdefinition/service/FormDefinitionManager.java (.../FormDefinitionManager.java) (revision 16176) @@ -16,7 +16,13 @@ public interface FormDefinitionManager { public FormDefinition getFormDefinitionById(String id); - + /** + * 通过表单类型和名称 获取定义.返回最新部署的值 + * @param formType + * @param formName + * @return + */ + public FormDefinition getFormDefinitionByTypeAndName(String formType,String formName); public void deleteFormDefinitionById(String id); public FormDefinitionItem getFormDefintionItem(String id); Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/qualityMonitoringMonthView.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/reportforms/qualityMonitoringMonthView.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/qualityMonitoringMonthView.js (revision 16176) @@ -0,0 +1,314 @@ +var entityName = "质量监测项统计月报"; +var grid; + +var rd = new Ext.data.JsonReader( { + fields : [ + {name : 'id'}, + {name : 'departId'}, + {name : 'name'} + ] +}); + +var supplyRoomStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectSystem/baseData/supplyRoomConfigAction!loadSupplyRoomConfigRoom.do', + method : 'POST' + }), + baseParams :{type:"12"}, + reader : rd, + listeners :{ + 'load' : function(thiz,records,options){ + if(records.length > 0){ + var record = records[0]; + Ext.getCmp('querySupplyRoom').setValue(record.get('departId')); + } + } + } +}); + +var myMask; +Ext.onReady(function() { + Ext.QuickTips.init(); + // 记录cookie(3步) + function reloadReport(){ + var queryYear = $Id('monthSearch').value; + // 监测项类型 + var monitoringType = $Id('monitoringType').value; + // 监测项名称 + var inspectItem = Ext.getCmp('inspectItem').getRawValue(); + // 监测细则 + var inspectDetail = Ext.getCmp('inspectDetail').getRawValue(); + // 显示方式 + var type = Ext.getCmp('type').getRawValue(); + + if(inspectItem == null || inspectItem == ""){ + showResult("请选择监测项"); + return; + } + myMask = new Ext.LoadMask(Ext.getBody(), { + msg: '正在加载,请稍候!', + removeMask: true + }); + myMask.show(); + + var reportFile = ""; + if(type == "lineChart"){ + // 折线图 + reportFile = "QualityMonitoringInspectMonthReportLineChartView.jasper"; + }else if(type == "barChart"){ + // 柱状图 + reportFile = "QualityMonitoringInspectMonthReportBarChartView.jasper"; + }else if( type == "firstSecondHalfForm" || type == "compareLastForm"){ + // 上下半年对比 用表格 + reportFile = "QualityMonitoringInspectCompareReportView.jasper"; + }else{ + // 表格 + reportFile = "QualityMonitoringInspectMonthReportView.jasper"; + } + window.open(WWWROOT+"/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do?jasperreportName="+reportFile+"&monitoringType="+monitoringType+"&reportName=QualityMonitoringInspectMonthReport&queryYear="+queryYear+"&inspectItem=" + inspectItem +"&type=" + type + "&inspectDetail="+inspectDetail+"",'thisIframe','_self'); + } + Ext.ux.ForgonPageGrid.prototype.getGridParameterMap = function() { + + }; + + var departRecord = Ext.data.Record.create([ { + name : 'id' + }, { + name : 'name' + } ]); + + var formDefinitionStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : '/disinfectSystem/qualityMonitoringDefinitionAction!loadLastDeployFormDefinitionGroupByFormName.do', + method : 'POST' + }), + reader : new Ext.data.JsonReader({ + root : 'data' + },[ + {name : 'id'}, + {name : 'name'} + ] + ) + }); + formDefinitionStore.on("beforeload", function(thiz, options) { + thiz.baseParams["formType"] = Ext.getCmp('monitoringType').getValue(); + }); + + var formDefinitionDeatilStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : '/disinfectSystem/qualityMonitoringDefinitionAction!loadQualityMonitoringItem.do', + method : 'POST' + }), + reader : new Ext.data.JsonReader({ + root : 'data' + },[ + {name : 'id'}, + {name : 'name'} + ] + ) + }); + formDefinitionDeatilStore.on("beforeload", function(thiz, options) { + thiz.baseParams["inspectItemId"] = Ext.getCmp('inspectItem').getValue(); + }); + + var monitoringTypeStore = new Ext.data.SimpleStore( { + fields : [ 'value' ], + data : [['质量监测'], ['定期监测']] + }); + + var form = new Ext.form.FormPanel({ + title : '质量监测报表', + region : 'north', + labelAlign : 'right', + buttonAlign : 'center', + collapsible : true, + collapseMode : 'mini', + split : true, + border : 0, + // bodyStyle : 'padding: 10px 10px 0px 10px;', + frame : true, + bodyStyle : 'padding:0px auto;margin:0px',// padding:1px;padding-top:5px; + height : 130, + items : [{ + layout : 'column', + height : 60, + labelWidth : 70, + items : [{ + width : 200, + layout : 'form', + labelWidth : 60, + items : [ + new Ext.ux.MonthField({ + id:'monthSearch', + name : 'monthSearch', + fieldLabel : '年份', + readOnly : true, + width : 120, + format:'Y', + value : new Date(), + listeners : { + specialkey : function(field, ee) { + if (ee.getKey() == Ext.EventObject.ENTER) { +// initQueryValueAndReload(); + } + } + } + })] + },{ + columnWidth : .2, + layout : 'form', + labelWidth : 70, + hidden : true, + items : [{ + xtype : 'combo', + id : 'querySupplyRoom', + name : 'querySupplyRoom', + valueField : 'departId', + displayField : 'name', + fieldLabel : "选择供应室", + allowBlank : true, + editable : false, + store : supplyRoomStore, + forceSelection : true, + mode : 'local', + triggerAction : 'all', + anchor : '95%' + }] + },{ + columnWidth : .2, + layout : 'form', + labelWidth : 60, + items : [{ + xtype : 'combo', + fieldLabel : "监测类型", + valueField : 'value', + displayField : 'value', + store : monitoringTypeStore, + triggerAction : 'all', + editable : false, + mode : 'local', + forceSelection : false, + name : "monitoringType", + id : "monitoringType", + anchor : '95%', + value:'质量监测', + listeners:{ + select:function(){ + Ext.getCmp("inspectItem").setValue(""); + formDefinitionStore.removeAll(); + formDefinitionStore.load(); + } + } + }] + },{ + columnWidth : .3, + layout : 'form', + labelWidth : 50, + items : [{ + xtype : 'combo', + id : 'inspectItem', + name : 'inspectItem', + queryParam : 'spell', + fieldLabel : '监测项', + minChars : 0, + valueField : 'id', + displayField : 'name', + anchor : '95%', + store : formDefinitionStore, + lazyInit : true, + forceSelection : true, + triggerAction : 'all', + hideTrigger : false, + typeAhead : false, + allowBlank : false, + listeners:{ + select:function(){ + Ext.getCmp("inspectDetail").setValue(""); + formDefinitionDeatilStore.removeAll(); + formDefinitionDeatilStore.load(); + } + } + }] + },{ + layout:'form', + columnWidth:.28, + labelWidth:60, + items:[{ + xtype : 'combo', + id : 'inspectDetail', + name : 'inspectDetail', + queryParam : 'spell', + fieldLabel : '监测细则', + minChars : 0, + valueField : 'name', + displayField : 'name', + store : formDefinitionDeatilStore, + forceSelection : true, + lazyInit : true, + anchor : '95%', + triggerAction : 'all', + hideTrigger : false, + typeAhead : false, + allowBlank : true + }] + },{ + width : 450, + layout : 'form', + labelWidth : 60, + items : [new Ext.ux.RadioGroup({ + fieldLabel : "显示形式", + allowBlank : false, + horizontal:true, + defaultValue:'form', + name : "type", + id : "type", + radios:[{boxLabel:'表格',value:'form'}, + {boxLabel:'折线图',value:'lineChart'}, + {boxLabel:'柱状图',value:'barChart'}, + {boxLabel:'上下半年对比',value:'firstSecondHalfForm'}, + {boxLabel:'跟去年对比',value:'compareLastForm'}] + }) ] + }] + }], + buttons:[{ + text : '查询', + minWidth : 70, + iconCls : 'icon_search', + handler : function() { + reloadReport(); + } + },{ + text : '重置', + minWidth : 70, + iconCls : 'icon_set', + handler : function() { + Ext.getCmp('monthSearch').setValue(""); + Ext.getCmp('querySupplyRoom').setValue(""); + Ext.getCmp('inspectDetail').setValue(""); + Ext.getCmp('inspectItem').setValue(""); + Ext.getCmp('monitoringType').setValue(""); + } + }] + }); + + + var reportForm = new Ext.Panel({ + frame:false,//渲染面板 + autoScroll:true,//自动显示滚动条 + collapsible:true,//允许展开和收缩 + bodyPadding:5, + html:'' + }); + + var viewport = new Ext.Viewport({ + layout : 'border', + items : [form, { + region : 'center', + margins : '0 0 0 0', + layout : 'fit', + items : reportForm + }] + }); + supplyRoomStore.load(); + + }); \ No newline at end of file Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r16120 -r16176 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 16120) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 16176) @@ -488,6 +488,7 @@ {hidden :SSTS_DeviceMaintenanceReport,text:"设备维护报表",href:WWWROOT+'/disinfectsystem/reportforms/deviceMaintenanceView.jsp',hrefTarget:linkTarget,leaf:true}, //{hidden :SSTS_DeviceMonitoringReport,text:"设备监测报表",href:WWWROOT+'/disinfectsystem/reportforms/deviceMonitoringView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_QualityMonitoringReport,text:"质量监测报表",href:WWWROOT+'/disinfectsystem/reportforms/qualityMonitoringView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_QualityMonitoringReport,text:"质量监测项统计月报",href:WWWROOT+'/disinfectsystem/reportforms/qualityMonitoringMonthView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_YearWashReportChart,text:"清洗不合格率环比折线图报表",href:WWWROOT+'/disinfectsystem/reportforms/yearWashReportChartView.jsp',hrefTarget:linkTarget,leaf:true}, // {hidden :SSTS_QualityMonitoringReport,text:"器械清洗不合格数量报表",href:WWWROOT+'/disinfectsystem/reportforms/materialWashUnqualifiedView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_QualityMonitoringReport,text:"器械清洗不合格部位数量统计报表",href:WWWROOT+'/disinfectsystem/reportforms/materialWashUnqualifiedPositionView.jsp',hrefTarget:linkTarget,leaf:true}, Index: ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectMonthReportView.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectMonthReportView.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectMonthReportView.jrxml (revision 16176) @@ -0,0 +1,406 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="32" splitType="Stretch"> + <staticText> + <reportElement uuid="1bbd2619-41e9-4723-8ee4-c8c9df11fce8" x="0" y="0" width="850" height="32"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font size="16" isBold="true"/> + </textElement> + <text><![CDATA[质量监测项统计月报]]></text> + </staticText> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectMonthReportView.jasper =================================================================== diff -u Binary files differ Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityMonitoringDefinitionManager.java =================================================================== diff -u -r16052 -r16176 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityMonitoringDefinitionManager.java (.../QualityMonitoringDefinitionManager.java) (revision 16052) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityMonitoringDefinitionManager.java (.../QualityMonitoringDefinitionManager.java) (revision 16176) @@ -4,6 +4,7 @@ import net.sf.json.JSONArray; +import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinitionItem; import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityMonitoringDefinition; /** @@ -22,5 +23,11 @@ String orgcode, String selectAll); public List loadLastDeployFormDefinitionGroupByFormName(String spell,String formType,String responsiblePerson); + /** + * 通过监测项名字获取监测细则列表 + * @param formDefinitionName + * @return + */ + List getItemsByFormDefinitionName(String formDefinitionId); } Index: ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectMonthReportLineChartView.jasper =================================================================== diff -u Binary files differ Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/QualityMonitoringInspectMonthLineChartBean.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/QualityMonitoringInspectMonthLineChartBean.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/QualityMonitoringInspectMonthLineChartBean.java (revision 16176) @@ -0,0 +1,50 @@ +/** + * + */ +package com.forgon.disinfectsystem.jasperreports.javabeansource; + +/** + * @author zegnjc + * 2016-12-09 + * 质量监测项统计报表折线图javaBean + * + */ +public class QualityMonitoringInspectMonthLineChartBean { + /** + * 统计月份 + */ + private String month; + /** + * 数量 + */ + private Integer amount; + /** + * 折线类型 + * @return + */ + private String type; + + public String getMonth() { + return month; + } + + public void setMonth(String month) { + this.month = month; + } + + public Integer getAmount() { + return amount; + } + + public void setAmount(Integer amount) { + this.amount = amount; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/customform/formdefinition/FormDefinitionItem.java =================================================================== diff -u -r16133 -r16176 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/customform/formdefinition/FormDefinitionItem.java (.../FormDefinitionItem.java) (revision 16133) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/customform/formdefinition/FormDefinitionItem.java (.../FormDefinitionItem.java) (revision 16176) @@ -170,7 +170,10 @@ public void setIsTriggerItem(String isTriggerItem) { this.isTriggerItem = isTriggerItem; } - + /** + * 是否在报表展现 + * @return + */ public String getIsReportDisplay() { return isReportDisplay; } Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/action/QualityMonitoringDefinitionAction.java =================================================================== diff -u -r16133 -r16176 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/action/QualityMonitoringDefinitionAction.java (.../QualityMonitoringDefinitionAction.java) (revision 16133) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/action/QualityMonitoringDefinitionAction.java (.../QualityMonitoringDefinitionAction.java) (revision 16176) @@ -19,6 +19,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinition; +import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinitionItem; import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityMonitoringDefinition; import com.forgon.disinfectsystem.qualitymonitoring.definition.service.QualityMonitoringDefinitionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; @@ -122,6 +123,30 @@ StrutsResponseUtils.output(result); } + /** + * 通过监测项加载细则,细则的类型要是单选或者多选,才加载 + */ + public void loadQualityMonitoringItem() { + String inspectItemId = StrutsParamUtils.getPraramValue("inspectItemId", ""); + List list = qualityMonitoringDefinitionManager.getItemsByFormDefinitionName(inspectItemId); + JSONArray data = new JSONArray(); + if(list != null){ + for (FormDefinitionItem formDefinitionItem : list) { + // 类型是单选或者多选,才加载 + String type = formDefinitionItem.getType(); + if(FormDefinitionItem.TYPE_CHECK.equals(type) || FormDefinitionItem.TYPE_RADIO.equals(type)){ + JSONObject obj = new JSONObject(); + obj.put("id", formDefinitionItem.getId()); + obj.put("name", formDefinitionItem.getName()); + data.add(obj); + } + } + } + JSONObject result = new JSONObject(); + result.put("data", data); + StrutsResponseUtils.output(result); + } + public QualityMonitoringDefinition getQualityMonitoringDefinition() { return qmDefinition; } Index: ssts-web/src/main/webapp/jasperRtp/DamageErrorMonthReport.jrxml =================================================================== diff -u -r16120 -r16176 --- ssts-web/src/main/webapp/jasperRtp/DamageErrorMonthReport.jrxml (.../DamageErrorMonthReport.jrxml) (revision 16120) +++ ssts-web/src/main/webapp/jasperRtp/DamageErrorMonthReport.jrxml (.../DamageErrorMonthReport.jrxml) (revision 16176) @@ -75,8 +75,8 @@ - - + + @@ -337,7 +337,7 @@ - + @@ -352,7 +352,7 @@ - + Index: ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectCompareReportView.jasper =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/jasperRtp/DamageErrorMonthReport.jasper =================================================================== diff -u -r16120 -r16176 Binary files differ Index: build.gradle =================================================================== diff -u -r16052 -r16176 --- build.gradle (.../build.gradle) (revision 16052) +++ build.gradle (.../build.gradle) (revision 16176) @@ -620,6 +620,7 @@ compile (project(":ssts-qualitymon")) compile (project(":ssts-recyclingrecord")) compile (project(":ssts-recyclingapplication")) + compile (project(":ssts-customform")) } } Index: ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectMonthReportBarChartView.jasper =================================================================== diff -u Binary files differ Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r16120 -r16176 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 16120) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 16176) @@ -265,6 +265,18 @@ } }else if (reportName.equals("QualityMonitoring")) {// 质量监测 return jasperReportManager.getQualityMonitoringDataSource(); + }else if (reportName.equals("QualityMonitoringInspectMonthReport")) { + // 质量监测项统计月报 + String queryYear = StrutsParamUtils.getPraramValue("queryYear", ""); + String monitoringType = StrutsParamUtils.getPraramValue("monitoringType", ""); + // 监测项 + String inspectItem = StrutsParamUtils.getPraramValue("inspectItem", ""); + String inspectDetail = StrutsParamUtils.getPraramValue("inspectDetail", ""); + // 图形显示类型 + String type = StrutsParamUtils.getPraramValue("type", ""); + if(StringUtils.isNotBlank(queryYear) && StringUtils.isNotBlank(inspectItem)){ + return jasperReportManager.getQualityMonitoringInspectMonthParamet(queryYear,monitoringType,inspectItem,inspectDetail,type); + } }else if(reportName.equals("formInstanceReport")){ String startDate = StrutsParamUtils.getPraramValue("startDate", ""); String endDate = StrutsParamUtils.getPraramValue("endDate", ""); @@ -1282,6 +1294,22 @@ String endDay = StrutsParamUtils.getPraramValue("endDay", ""); String title = "使用记录物品分类汇总表 (" + startDay + "~" + endDay + ")"; map.put("title", title); + }else if (reportName.equals("QualityMonitoringInspectMonthReport")) { + String year = StrutsParamUtils.getPraramValue("queryYear", null); + String type = StrutsParamUtils.getPraramValue("type", null); + String title = null; + if (StringUtils.equals("firstSecondHalfForm", type)) { + title = "质量监测统计项" + year +"年上半年、下半年对比报表"; + map.put("title", title); + map.put("title1", "上半年"); + map.put("title2", "下半年"); + } else if (StringUtils.equals("compareLastForm", type)) { + title = "质量监测统计项" + year + "年跟" +(Integer.valueOf(year) - 1) + "年对比报表"; + map.put("title", title); + map.put("title1", "去年"); + map.put("title2", "今年"); + } + return map; } return map; Index: ssts-customform/src/main/java/com/forgon/disinfectsystem/customform/formdefinition/service/FormDefinitionManagerImpl.java =================================================================== diff -u -r16133 -r16176 --- ssts-customform/src/main/java/com/forgon/disinfectsystem/customform/formdefinition/service/FormDefinitionManagerImpl.java (.../FormDefinitionManagerImpl.java) (revision 16133) +++ ssts-customform/src/main/java/com/forgon/disinfectsystem/customform/formdefinition/service/FormDefinitionManagerImpl.java (.../FormDefinitionManagerImpl.java) (revision 16176) @@ -46,6 +46,28 @@ } return null; } + public FormDefinition getFormDefinitionByTypeAndName(String formType,String formName){ + FormDefinition formDefinition = null; + int maxVersion = 0; + if(StringUtils.isNotBlank(formType) && StringUtils.isNotBlank(formName)){ + String sql = String + .format("select max(version) from %s where formName = '%s' and formType = '%s'", + FormDefinition.class.getSimpleName(), formName,formType); + ResultSet rs = objectDao.executeSql(sql); + try { + while (rs.next()) { + maxVersion = (rs.getInt(1)); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + sql = String.format(" where formName = '%s' and formType = '%s' and isDeploy='deploy' and version = %d ",formName,formType,maxVersion); + formDefinition = (FormDefinition)objectDao.getBySql(FormDefinition.class.getSimpleName(),sql); + } + return formDefinition; + } @Override public void deleteFormDefinitionById(String id) { Index: ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectMonthReportLineChartView.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectMonthReportLineChartView.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectMonthReportLineChartView.jrxml (revision 16176) @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + <band height="26" splitType="Stretch"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectCompareReportView.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectCompareReportView.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/QualityMonitoringInspectCompareReportView.jrxml (revision 16176) @@ -0,0 +1,144 @@ + + + + + + + + + +