Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/qualitymonitoringConfig/qualitymonitoringConfigView.js =================================================================== diff -u -r14164 -r14229 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/qualitymonitoringConfig/qualitymonitoringConfigView.js (.../qualitymonitoringConfigView.js) (revision 14164) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/qualitymonitoringConfig/qualitymonitoringConfigView.js (.../qualitymonitoringConfigView.js) (revision 14229) @@ -96,7 +96,8 @@ {name : 'name'}, {name : 'type'}, {name : 'requirement'}, - {name : 'options'} + {name : 'options'}, + {name : 'statisticsItems'} ]); var QualityMonitoringItemValueRecord = Ext.data.Record.create([ @@ -162,9 +163,9 @@ for ( var i = 0; i < top.Ext.getCmp('qualityMonitoringItemGrid').getStore().getCount(); i++) { var record = top.Ext.getCmp('qualityMonitoringItemGrid').getStore().getAt(i); if (items == null) { - items = record.get('id') + '@%' + record.get('name') + '@%' + record.get('type') + '@%' + record.get('requirement')+ '@%' + record.get('options') + '@%' + (i+1); + items = record.get('id') + '@%' + record.get('name') + '@%' + record.get('type') + '@%' + record.get('requirement')+ '@%' + record.get('options') + '@%' + (i+1) + '@%' + record.get('statisticsItems'); } else { - items += "#%" + record.get('id') + '@%' + record.get('name') + '@%' + record.get('type') + '@%' + record.get('requirement')+ '@%' + record.get('options') + '@%' + (i+1); + items += "#%" + record.get('id') + '@%' + record.get('name') + '@%' + record.get('type') + '@%' + record.get('requirement')+ '@%' + record.get('options') + '@%' + (i+1) + '@%' + record.get('statisticsItems'); } } top.Ext.getCmp('qualityMonitoringItems').setValue(items); @@ -197,6 +198,37 @@ return html; } +function addStatisticsItem(option){ + var index = top.Ext.getCmp('qualityMonitoringItemGrid').getStore().find('name',top.Ext.getCmp('name').getValue()); + if(index != -1){ + var optionRecord = top.Ext.getCmp('qualityMonitoringItemGrid').getStore().getAt(index); + var stItems = optionRecord.get('statisticsItems'); + if( stItems == null || stItems == ""){ + optionRecord.set('statisticsItems',option); + }else if( stItems.indexOf(option) == -1 ){ + optionRecord.set('statisticsItems',stItems + ',' + option); + } + } +} + +function delStatisticsItem(option){ + var index = top.Ext.getCmp('qualityMonitoringItemGrid').getStore().find('name',top.Ext.getCmp('name').getValue()); + if(index != -1){ + var optionRecord = top.Ext.getCmp('qualityMonitoringItemGrid').getStore().getAt(index); + var stItems = optionRecord.get('statisticsItems'); + if(stItems != null){ + var index = stItems.indexOf(option); + if(stItems == option){ + optionRecord.set('statisticsItems',""); + }else if(index == 0){ + optionRecord.set('statisticsItems',stItems.replace(option + ',',"")); + }else if( index > 0){ + optionRecord.set('statisticsItems',stItems.replace(',' + option,"")); + } + + } + } +} function addQualityMonitoringItems(id) { var formPanel = new top.Ext.FormPanel({ id : 'addQualityMonitoringForm', @@ -364,13 +396,14 @@ {name : 'name'}, {name : 'type'}, {name : 'requirement'}, - {name : 'options'} + {name : 'options'}, + {name : 'statisticsItems'} ] }) }), bodyStyle : 'border:1px solid #afd7af', cm : new top.Ext.grid.ColumnModel([ - {header : "名称",dataIndex : 'name',width : 250,sortable : true}, + {header : "名称",dataIndex : 'name',width : 100,sortable : true}, {header : "类型",width : 50,dataIndex : 'type'}, {header : "必要性",width : 50,dataIndex : 'requirement'}, {header : "删除",dataIndex : 'operationButton',width : 35, @@ -382,6 +415,7 @@ " \">"; return str; }}, + {header : "统计项",dataIndex : 'statisticsItems',width : 150}, {header: "排序操作", width: 80, dataIndex: 'id', renderer : moveUpDown, sortable: false, menuDisabled: true} ]), width : 491, @@ -498,7 +532,7 @@ layout : 'form', labelWidth : 50, buttonAlign : 'center', - items:[new top.Ext.grid.GridPanel({ + items:[new top.Ext.grid.EditorGridPanel({ id : 'itemValueGrid', buttonAlign : 'center', store : new top.Ext.data.Store({ @@ -510,7 +544,7 @@ }), bodyStyle : 'border:1px solid #afd7af', cm : new Ext.grid.ColumnModel([ - {header : "监测项名称",dataIndex : 'option',width : 390}, + {header : "监测项名称",dataIndex : 'option',width : 300}, {header : "删除",dataIndex : 'operationButton',width : 35, renderer : function(v, p, record){ var str = ""; return str; - }} + }}, + {header : "增减统计项",dataIndex : 'option',width : 70, + renderer : function(v, p, record){ + var qualityConfigName = top.Ext.getCmp('qualityConfigName').getValue(); + var qualityConfigItemName = top.Ext.getCmp('name').getValue(); + if("器械清洗不合格" == qualityConfigName){ + if("部位" == qualityConfigItemName || "评估方法" == qualityConfigItemName){ + var html = ''; + html += '增加统计项     '; + html += ''; + html += '移除统计项'; + return html; + } + } + }} ]), tbar : [{ text : '监测项名称:' @@ -644,7 +692,8 @@ name : items[i].name, type : items[i].type, requirement : items[i].requirement, - options : items[i].options + options : items[i].options, + statisticsItems : items[i].statisticsItems }); top.Ext.getCmp('qualityMonitoringItemGrid').getStore().add(itemRecord); } Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoringmanager/qualitymonitoringconfig/service/QualityMonitoringConfigManagerImpl.java =================================================================== diff -u -r12331 -r14229 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoringmanager/qualitymonitoringconfig/service/QualityMonitoringConfigManagerImpl.java (.../QualityMonitoringConfigManagerImpl.java) (revision 12331) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoringmanager/qualitymonitoringconfig/service/QualityMonitoringConfigManagerImpl.java (.../QualityMonitoringConfigManagerImpl.java) (revision 14229) @@ -75,6 +75,10 @@ String requirement = item.split("@%")[3]; String options = item.split("@%")[4]; String orderNumber = item.split("@%")[5]; + String statisticsItems = null; + if( item.split("@%").length > 6){ + statisticsItems = item.split("@%")[6]; + } QualityMonitoringItem qualityMonitoringItem = null; if (StringUtils.isNotBlank(itemId) && !StringUtils.equals(itemId, "0")) { @@ -88,7 +92,9 @@ || !StringUtils.equals(requirement, qualityMonitoringItem.getRequirement()) || !StringUtils.equals(options, - qualityMonitoringItem.getOptions())) { + qualityMonitoringItem.getOptions()) + || !StringUtils.equals(statisticsItems, + qualityMonitoringItem.getStatisticsItems())) { qualityMonitoringItem.setDeleted(1); objectDao.saveOrUpdate(qualityMonitoringItem); qualityMonitoringItem = new QualityMonitoringItem(); @@ -103,6 +109,7 @@ qualityMonitoringItem.setOptions(options); qualityMonitoringItem.setOrderNumber(Integer .valueOf(orderNumber)); + qualityMonitoringItem.setStatisticsItems(statisticsItems); addList.add(qualityMonitoringItem); } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r14188 -r14229 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 14188) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 14229) @@ -4818,21 +4818,26 @@ String startDay, String endDay) { List list = new ArrayList(); - - if (StringUtils.isNotBlank(startDay) && StringUtils.isNotBlank(endDay)) { + // 获取部位统计项 + String positions = getStatisticsItems("部位"); + if (StringUtils.isNotBlank(startDay) && StringUtils.isNotBlank(endDay) && StringUtils.isNotBlank(positions)) { Integer totalAmount = 0; - // 获取齿缝清洗不合格数量 - totalAmount += getSlotInfo(list, startDay, endDay); - // 获取轴节清洗不合格数量 - totalAmount += getAxisInfo(list, startDay, endDay); - // 获取卷边和凹边清洗不合格数量 - totalAmount += getRollAndDententInfo(list, startDay, endDay); - // 获取螺丝清洗不合格数量 - totalAmount += getScrewInfo(list, startDay, endDay); - // 获取刃面清洗不合格数量 - totalAmount += getTheCrucialPointInfo(list, startDay, endDay); - // 获取表面清洗不合格数量 - totalAmount += getFaceInfo(list, startDay, endDay); + String[] ps = positions.split(","); + for(String position : ps){ + totalAmount += getPositionInfo(list, startDay, endDay,position); + } +// // 获取齿缝清洗不合格数量 +// totalAmount += getSlotInfo(list, startDay, endDay); +// // 获取轴节清洗不合格数量 +// totalAmount += getAxisInfo(list, startDay, endDay); +// // 获取卷边和凹边清洗不合格数量 +// totalAmount += getRollAndDententInfo(list, startDay, endDay); +// // 获取螺丝清洗不合格数量 +// totalAmount += getScrewInfo(list, startDay, endDay); +// // 获取刃面清洗不合格数量 +// totalAmount += getTheCrucialPointInfo(list, startDay, endDay); +// // 获取表面清洗不合格数量 +// totalAmount += getFaceInfo(list, startDay, endDay); if (totalAmount.intValue() != 0) { for (MaterialWashUnqualifiedPosition bean : list) { bean.setPercentage(new BigDecimal(bean.getAmount() @@ -4847,7 +4852,40 @@ return list; } + // 获取清洗部位不合格数量 + private Integer getPositionInfo(List list, + String startDay, String endDay,String position) { + if(StringUtils.isBlank(position)) + return 0; + String sql = "select sum(qm.amount) from qualitymonitoring qm,QualityMonitoringAnswer qma" + + " where qm.id = qma.qualitymonitoring_id" + + " and qma.questionname = '部位'" + + " and qm.inspectitem like '%器械清洗不合格%'" + + " and qm.type = '质量监测'" + + " and qma.answer like '%" + position + "%'" + + " and qm.datetime between " + + dateQueryAdapter.dateAdapter(startDay) + + " and " + + dateQueryAdapter.dateAdapter(endDay); + + MaterialWashUnqualifiedPosition bean = new MaterialWashUnqualifiedPosition(); + bean.setAnswerName(position); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + Date dateInfo = null; + try { + dateInfo = sdf.parse(startDay); + } catch (ParseException e) { + e.printStackTrace(); + } + Calendar calendar = Calendar.getInstance(); + calendar.setTime(dateInfo); + String title = sdf.format(calendar.getTime()); + title = "器械材料清洗不合格率部位数量统计 (" + title + ")"; + bean.setDateInfo(title); + ResultSet rs = objectDao.executeSql(sql); + return getWashData(list, rs, bean, 0); + } // 获取表面清洗不合格数量 private Integer getFaceInfo(List list, String startDay, String endDay) { @@ -5065,19 +5103,24 @@ String startDay, String endDay) { List list = new ArrayList(); - - if (StringUtils.isNotBlank(startDay) && StringUtils.isNotBlank(endDay)) { + // 获取评估方法统计项 + String statisticsItems = getStatisticsItems("评估方法"); + if (StringUtils.isNotBlank(startDay) && StringUtils.isNotBlank(endDay) && StringUtils.isNotBlank(statisticsItems)) { Integer totalAmount = 0; - // 获取水迹评估数量 - totalAmount += getWaterMarkInfo(startDay, endDay, list); - // 获取锈迹评估数量 - totalAmount += getRustInfo(startDay, endDay, list); - // 获取血迹评估数量 - totalAmount += getBloodstainInfo(startDay, endDay, list); - // 获取污渍评估数量 - totalAmount += getBesmirchInfo(startDay, endDay, list); - // 获取附着物评估数量 - totalAmount += getAttachmentInfo(startDay, endDay, list); + String[] items = statisticsItems.split(","); + for(String item : items){ + totalAmount += getAssessMethodInfo(item,startDay, endDay, list); + } +// // 获取水迹评估数量 +// totalAmount += getWaterMarkInfo(startDay, endDay, list); +// // 获取锈迹评估数量 +// totalAmount += getRustInfo(startDay, endDay, list); +// // 获取血迹评估数量 +// totalAmount += getBloodstainInfo(startDay, endDay, list); +// // 获取污渍评估数量 +// totalAmount += getBesmirchInfo(startDay, endDay, list); +// // 获取附着物评估数量 +// totalAmount += getAttachmentInfo(startDay, endDay, list); if (totalAmount.intValue() != 0) { for (MaterialWashUnqualifiedPosition bean : list) { @@ -5095,7 +5138,41 @@ return list; } + // 获取评估方法统计项信息 + private Integer getAssessMethodInfo(String itemName,String startDay, String endDay, + List list) { + if(StringUtils.isBlank(itemName)) + return 0; + String sql = "select sum(qm.amount) from qualitymonitoring qm,QualityMonitoringAnswer qma" + + " where qm.id = qma.qualitymonitoring_id" + + " and qma.questionname = '评估方法'" + + " and qm.inspectitem like '%器械清洗不合格%'" + + " and qm.type = '质量监测'" + + " and qma.answer like '%" + itemName + "%'" + + " and qm.datetime between " + + dateQueryAdapter.dateAdapter(startDay) + + " and " + + dateQueryAdapter.dateAdapter(endDay); + + MaterialWashUnqualifiedPosition bean = new MaterialWashUnqualifiedPosition(); + bean.setAnswerName(itemName); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + Date dateInfo = null; + try { + dateInfo = sdf.parse(startDay); + } catch (ParseException e) { + e.printStackTrace(); + } + Calendar calendar = Calendar.getInstance(); + calendar.setTime(dateInfo); + String title = sdf.format(calendar.getTime()); + title = "器械材料清洗不合格率评估方法数量统计 (" + title + ")"; + bean.setDateInfo(title); + ResultSet rs = objectDao.executeSql(sql); + return getWashData(list, rs, bean, 0); + } + /** * 获取器械清洗不合格附着物数量 * @@ -8670,5 +8747,32 @@ data.setMaterialType("合计"); list.add(data); } - + /** + * 获取的统计项 + * @return + */ + public String getStatisticsItems(String qualityConfigItemName){ + // 器械清洗不合格的评估方法和部位统计项 + if(StringUtils.isBlank(qualityConfigItemName)) + return null; + String sql = "select qmi.statisticsItems statisticsItems from QualityMonitoringItem qmi ,QualityMonitoringConfig qmc " + + " where qmi.qualityMonitoringConfig_id = qmc.id " + + " and qmc.name like '%器械清洗不合格%' " + + " and qmi.deleted = 0 " + + " and qmi.name like '%" + qualityConfigItemName + "%' " ; + String statisticsItems = null; + ResultSet rs = objectDao.executeSql(sql); + if(rs!=null){ + try{ + while (rs.next()) { + statisticsItems = rs.getString("statisticsItems"); + } + }catch (Exception e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + return statisticsItems; + } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/qualitymonitoringmanager/qualitymonitoringconfig/QualityMonitoringItem.java =================================================================== diff -u -r14012 -r14229 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/qualitymonitoringmanager/qualitymonitoringconfig/QualityMonitoringItem.java (.../QualityMonitoringItem.java) (revision 14012) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/qualitymonitoringmanager/qualitymonitoringconfig/QualityMonitoringItem.java (.../QualityMonitoringItem.java) (revision 14229) @@ -31,6 +31,8 @@ public final static String TYPE_TEXTAREA = "文本框"; private String options; // 单选或者多选的值 + + private String statisticsItems; // 统计项 private Integer orderNumber; // 顺序 @@ -45,7 +47,14 @@ public void setId(Long id) { this.id = id; } + public String getStatisticsItems() { + return statisticsItems; + } + public void setStatisticsItems(String statisticsItems) { + this.statisticsItems = statisticsItems; + } + public String getName() { return name; }