Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/SubTableOfQualityMonitoringManagerImpl.java =================================================================== diff -u -r40327 -r40386 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/SubTableOfQualityMonitoringManagerImpl.java (.../SubTableOfQualityMonitoringManagerImpl.java) (revision 40327) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/SubTableOfQualityMonitoringManagerImpl.java (.../SubTableOfQualityMonitoringManagerImpl.java) (revision 40386) @@ -33,11 +33,18 @@ if(StringUtils.isBlank(formDefinitionItemNames)){ throw new SystemException("formDefinitionItemNames is null"); } + + boolean isUpdate = DatabaseUtil.isPoIdValid(subTable.getId()); + if(objectDao.countBySql("select count(*) from " + + SubTableOfQualityMonitoring.class.getSimpleName() + + " where name='"+ subTable.getName() +"' " + + (isUpdate?" and id<>" + subTable.getId():"")) > 0){ + throw new SystemException("已存在同名副表!"); + } // 解析表单中的name字符串 Set formNames = Arrays.stream(formDefinitionItemNames.split(Constants.IDS_SEPARATOR)) .map(String::trim) .collect(Collectors.toSet()); - boolean isUpdate = DatabaseUtil.isPoIdValid(subTable.getId()); objectDao.saveOrUpdate(subTable); if(isUpdate){ List subTable_FormDefinitionItems = getSubTable_FormDefinitionItems(subTable.getId()); Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/QualityMonitoringHelper.java =================================================================== diff -u -r40327 -r40386 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/QualityMonitoringHelper.java (.../QualityMonitoringHelper.java) (revision 40327) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/QualityMonitoringHelper.java (.../QualityMonitoringHelper.java) (revision 40386) @@ -545,6 +545,16 @@ params.betweenSql = betweenSql; params.querySupplyRoom = querySupplyRoom; StringBuilder querySubTableAttributeSbd = new StringBuilder(); + //避免重复添加 + boolean queryMdType = false; + boolean queryWashClassifyType = false; + boolean queryTaskGroup = false; + boolean queryPackageType = false; + boolean queryAssetsBelongName = false; + boolean queryTousseType = false; + boolean querySterilingMethod = false; + boolean queryCleanMethod = false; + boolean queryTousseGroupName = false; for (SubTableOfQualityMonitoring subTableOfQualityMonitoring : subTableOfQualityMonitorings){ JSONObject subTableOfQualityMonitoringObj = subTableOfQualityMonitoringManagerImpl.getSubTableOfQualityMonitoringJSONObjectById(subTableOfQualityMonitoring.getId()); String subTableType = subTableOfQualityMonitoring.getSubTableType(); @@ -556,28 +566,37 @@ " md on md.id=qmd.materialDefinitionId "; } attribute = subTableOfQualityMonitoring.getMaterialAttribute(); - if("类别".equals(attribute)){ + if(!queryMdType && "类别".equals(attribute)){ querySubTableAttributeSbd.append(",md.type mdType "); - }else if("清洗分类类型".equals(attribute)){ + queryMdType = true; + }else if(!queryWashClassifyType && "清洗分类类型".equals(attribute)){ querySubTableAttributeSbd.append(",md.washClassifyType "); + queryWashClassifyType = true; } }else if("器械包副表".equals(subTableType)){ attribute = subTableOfQualityMonitoring.getTousseAttribute(); - if("任务组".equals(attribute)){ + if(!queryTaskGroup && "任务组".equals(attribute)){ querySubTableAttributeSbd.append(",tdc.taskGroup "); - }else if("默认包装类型".equals(attribute)){ + queryTaskGroup = true; + }else if(!queryPackageType && "默认包装类型".equals(attribute)){ querySubTableAttributeSbd.append(",tdc.packageType "); - }else if("资产归属".equals(attribute)){ + queryPackageType = true; + }else if(!queryAssetsBelongName && "资产归属".equals(attribute)){ querySubTableAttributeSbd.append(",(select max(ou.name) from ") .append(" OrgUnit ou where ou.orgUnitCoding=tdc.assetsBelongCode) assetsBelongName "); - }else if("器械包类型".equals(attribute)){ + queryAssetsBelongName = true; + }else if(!queryTousseType && "器械包类型".equals(attribute)){ querySubTableAttributeSbd.append(",tdc.tousseType "); - }else if("默认灭菌程序".equals(attribute)){ + queryTousseType = true; + }else if(!querySterilingMethod && "默认灭菌程序".equals(attribute)){ querySubTableAttributeSbd.append(",tdc.sterilingMethod "); - }else if("默认清洗程序".equals(attribute)){ + querySterilingMethod = true; + }else if(!queryCleanMethod && "默认清洗程序".equals(attribute)){ querySubTableAttributeSbd.append(",tdc.cleanMethod "); - }else if("器械包分组".equals(attribute)){ + queryCleanMethod = true; + }else if(!queryTousseGroupName && "器械包分组".equals(attribute)){ querySubTableAttributeSbd.append(",tdc.tousseGroupName "); + queryTousseGroupName = true; } } subTableOfQualityMonitoringObj.put("groupAttribute", attribute); @@ -863,12 +882,25 @@ } // 质量检测加数量汇总 if ("质量监测".equals(monitoringType)) { - Integer totalAmount = 0; + int totalAmount = 0; Integer totalItem = 0; totalAmount = qmTousseAndMaterialAmount; totalItem = qmCount; if (totalAmount > 0 || list.size() > 0) { List> listMap = getBeanMap(list,numNames); + if(QualityMonitoringDefinition.SCOPE_MATERIAL_AND_TOUSSE.equals(scope) || QualityMonitoringDefinition.SCOPE_MATERIAL.equals(scope)){ + MonitoringItemBean bean2 = new MonitoringItemBean(); + bean2.setGoodsName("材料数量汇总行"); + bean2.setDateTime("料数量汇总行"); + bean2.setOrderNumber(3); + bean2.setOption("件数"); + bean2.setQuestionName("件数"); + bean2.setAmount(0); + bean2.setMaterialAmount(qmTousseAndMaterialAmount); + bean2.setPositionMsg(""); + bean2.setAnswer(""); + list.add(bean2); + } if( listMap != null && listMap.size() > 0){ Map beanStatisticsMap = listMap.get(0); if(!MapUtils.isEmpty(beanStatisticsMap)){