| ÎļþÃû´Ó smartor/src/main/java/com/smartor/service/impl/PatSatisfactionServiceImpl.java ÐÞ¸Ä |
| | |
| | | package com.smartor.service.impl; |
| | | package com.ruoyi.satisfaction.service.impl; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | |
| | | import com.ruoyi.common.utils.ArrayListUtils; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.common.utils.DtoConversionUtils; |
| | | import com.smartor.domain.*; |
| | | import com.smartor.domain.DTO.ServiceSubtaskDetailDTO; |
| | | import com.smartor.domain.VO.PatSatisfactionReqVO; |
| | | import com.smartor.domain.VO.PatSatisfactionResVO; |
| | | import com.smartor.domain.entity.PatSatisfactionDetailEntity; |
| | | import com.smartor.domain.entity.SatisfactionStatQuery; |
| | | import com.smartor.domain.entity.ServiceSubtaskSatisfactionEntity; |
| | | import com.smartor.mapper.*; |
| | | import com.ruoyi.satisfaction.domain.vo.PatSatisfactionReqVO; |
| | | import com.ruoyi.satisfaction.domain.vo.PatSatisfactionResVO; |
| | | import com.ruoyi.satisfaction.domain.entity.PatSatisfactionDetailEntity; |
| | | import com.ruoyi.satisfaction.domain.entity.SatisfactionStatQuery; |
| | | import com.ruoyi.satisfaction.domain.entity.ServiceSubtaskSatisfactionEntity; |
| | | import com.ruoyi.satisfaction.mapper.PatSatisfactionMapper; |
| | | import com.ruoyi.satisfaction.mapper.SatisfactionMapper; |
| | | import com.ruoyi.satisfaction.mapper.SatisfactionScriptMapper; |
| | | import com.ruoyi.satisfaction.domain.row.SatisfactionCategoryRow; |
| | | import com.ruoyi.satisfaction.domain.row.SatisfactionIvrScriptRow; |
| | | import com.ruoyi.satisfaction.domain.row.SatisfactionOptionScoreRow; |
| | | import com.ruoyi.satisfaction.domain.row.SatisfactionScriptQuery; |
| | | import com.ruoyi.satisfaction.domain.row.SatisfactionSvyScriptRow; |
| | | import com.ruoyi.satisfaction.domain.ServiceSubtaskDetailRatioExport; |
| | | import com.ruoyi.satisfaction.service.strategy.SatisfactionScoreStrategyResolver; |
| | | import com.ruoyi.satisfaction.service.strategy.SatisfactionSites; |
| | | import org.apache.commons.collections4.CollectionUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import com.smartor.service.IPatSatisfactionService; |
| | | import com.ruoyi.satisfaction.domain.PatSatisfaction; |
| | | import com.ruoyi.satisfaction.service.IPatSatisfactionService; |
| | | |
| | | import static com.ruoyi.common.utils.SecurityUtils.getLoginUser; |
| | | |
| | |
| | | private PatSatisfactionMapper patSatisfactionMapper; |
| | | |
| | | @Autowired |
| | | private ServiceSubtaskMapper serviceSubtaskMapper; |
| | | private SatisfactionMapper satisfactionMapper; |
| | | |
| | | @Autowired |
| | | private ServiceSubtaskDetailMapper serviceSubtaskDetailMapper; |
| | | private SatisfactionScriptMapper satisfactionScriptMapper; |
| | | |
| | | /** |
| | | * ç«ç¹å£å¾çç¥è§£æå¨ã |
| | | * <p> |
| | | * æ¬ç±»ç {@code averageScoreByStat} å°±æ¯ãéç¨å£å¾ï¼ååï¼ãçç»¼åæ»¡æåº¦å¾åå£å¾ï¼ |
| | | * ç°æ¹ä¸ºå§æ {@link com.ruoyi.satisfaction.service.strategy.CommonSatisfactionScoreStrategy}ï¼ |
| | | * ä¸çç«åå¾·å£å¾ï¼{@code SltdSatisfactionScoreStrategy}ï¼éè¿åä¸çç¥æ¥å£å¹¶åï¼ |
| | | * é¿å
åä¸ä¸ªæ¦å¿µå¨ä¸¤å¤ååä¸ä»½å®ç°ã |
| | | */ |
| | | @Autowired |
| | | private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper; |
| | | |
| | | @Autowired |
| | | private IvrLibaScriptAssortMapper ivrLibaScriptAssortMapper; |
| | | |
| | | @Autowired |
| | | private SvyLibScriptCategoryMapper svyLibScriptCategoryMapper; |
| | | |
| | | @Autowired |
| | | private IvrLibaTemplateTargetoptionMapper ivrLibaTemplateTargetoptionMapper; |
| | | |
| | | @Autowired |
| | | private SvyLibTemplateTargetoptionMapper svyLibTemplateTargetoptionMapper; |
| | | |
| | | @Autowired |
| | | private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper; |
| | | private SatisfactionScoreStrategyResolver satisfactionScoreStrategyResolver; |
| | | |
| | | /** |
| | | * æ¥è¯¢æ£è
满æåº¦ |
| | |
| | | int[] personTotals = new int[2]; |
| | | |
| | | // åªæ¥æ¬æ¬¡æ¡ä»¶ä¸å®é
åå¨åªäº typeï¼åæ¥æ¯ææ¥è¿å
¨è¡¨çä¸ç¾ä¸ªå段æ¥åæ¥ï¼ä»
ç¨äºå¤æä¸é¢ä¸¤ä¸ªåæ¯æ¯å¦ä¸ºç©ºï¼ |
| | | List<String> types = serviceSubtaskMapper.selectSatisfactionSubtaskTypes(patSatisfactionReqVO); |
| | | List<String> types = satisfactionMapper.selectSatisfactionSubtaskTypes(patSatisfactionReqVO); |
| | | boolean hasVoice = types != null && types.contains("1"); |
| | | boolean hasQuestionnaire = types != null && types.contains("2"); |
| | | |
| | | if (hasVoice) { |
| | | //1. å
è·åivr_liba_script_assortçæ»¡æåº¦åç±»ID |
| | | IvrLibaScriptAssort ivrLibaScriptAssort = new IvrLibaScriptAssort(); |
| | | ivrLibaScriptAssort.setOrgid(patSatisfactionReqVO.getOrgid()); |
| | | List<IvrLibaScriptAssort> ivrLibaScriptAssorts = ivrLibaScriptAssortMapper.selectIvrLibaScriptAssortList(ivrLibaScriptAssort); |
| | | List<Long> mydIdList = ivrLibaScriptAssorts.stream().filter(item -> item.getType() != null && item.getType().contains("myd")).map(IvrLibaScriptAssort::getId).collect(Collectors.toList()); |
| | | List<SatisfactionCategoryRow> ivrLibaScriptAssorts = satisfactionScriptMapper.selectIvrCategoryList(ivrCategoryQuery(patSatisfactionReqVO)); |
| | | List<Long> mydIdList = ivrLibaScriptAssorts.stream().filter(item -> item.getType() != null && item.getType().contains("myd")).map(SatisfactionCategoryRow::getId).collect(Collectors.toList()); |
| | | |
| | | //2 åè·å该é®é¢æ»¡æåº¦åç±»ä¸çIvrLibaTemplateScriptçéå |
| | | List<IvrLibaTemplateScript> ivrLibaTemplateScripts = ivrLibaTemplateScriptMapper.queryLibTemplateIds(mydIdList); |
| | | List<SatisfactionIvrScriptRow> ivrLibaTemplateScripts = satisfactionScriptMapper.queryIvrScriptByAssort(assortQuery(mydIdList)); |
| | | |
| | | //3 䏿¬¡ç»è®¡å
¨é¨é®é¢çåéé/å¡«æ¥é/é项åå¼ï¼åæ¥æ¯æ¯ä¸ªé®é¢åæ¥ 3 æ¬¡ï¼ |
| | | List<SatScriptRef> scriptRefs = new ArrayList<>(); |
| | | for (IvrLibaTemplateScript ivrLibaTemplateScript : ivrLibaTemplateScripts) { |
| | | for (SatisfactionIvrScriptRow ivrLibaTemplateScript : ivrLibaTemplateScripts) { |
| | | scriptRefs.add(new SatScriptRef(ivrLibaTemplateScript.getTemplateid(), ivrLibaTemplateScript.getScriptid(), ivrLibaTemplateScript.getScriptContent())); |
| | | } |
| | | buildSatisfactionDetailEntities(patSatisfactionReqVO, "1", true, scriptRefs, patSatisfactionDetailEntities, personTotals); |
| | | } |
| | | |
| | | if (hasQuestionnaire) { |
| | | //1. å
è·åsvy_lib_script_categoryçæ»¡æåº¦åç±»ID |
| | | SvyLibScriptCategory svyLibScriptCategory = new SvyLibScriptCategory(); |
| | | svyLibScriptCategory.setOrgid(patSatisfactionReqVO.getOrgid()); |
| | | List<SvyLibScriptCategory> svyLibScriptCategories = svyLibScriptCategoryMapper.selectSvyLibScriptCategoryList(svyLibScriptCategory); |
| | | List<Long> mydIdList = svyLibScriptCategories.stream().filter(item -> item.getType() != null && item.getType().contains("myd")).map(SvyLibScriptCategory::getId).collect(Collectors.toList()); |
| | | List<SatisfactionCategoryRow> svyLibScriptCategories = satisfactionScriptMapper.selectSvyCategoryList(svyCategoryQuery(patSatisfactionReqVO)); |
| | | List<Long> mydIdList = svyLibScriptCategories.stream().filter(item -> item.getType() != null && item.getType().contains("myd")).map(SatisfactionCategoryRow::getId).collect(Collectors.toList()); |
| | | |
| | | //2 åè·å该é®é¢æ»¡æåº¦åç±»ä¸çIvrLibaTemplateScriptçéå |
| | | List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.querySvyLibTemplateIds(mydIdList); |
| | | List<SatisfactionSvyScriptRow> svyLibTemplateScripts = satisfactionScriptMapper.querySvyScriptByCategory(categoryQuery(mydIdList)); |
| | | |
| | | //3 䏿¬¡ç»è®¡å
¨é¨é®é¢çåéé/å¡«æ¥é/é项åå¼ï¼åæ¥æ¯æ¯ä¸ªé®é¢åæ¥ 3 æ¬¡ï¼ |
| | | List<SatScriptRef> scriptRefs = new ArrayList<>(); |
| | | for (SvyLibTemplateScript svyLibTemplateScript : svyLibTemplateScripts) { |
| | | for (SatisfactionSvyScriptRow svyLibTemplateScript : svyLibTemplateScripts) { |
| | | // é®å·çé项表æ svy_lib_template_script ç主é®å
³è |
| | | scriptRefs.add(new SatScriptRef(svyLibTemplateScript.getSvyid(), svyLibTemplateScript.getId(), svyLibTemplateScript.getScriptContent())); |
| | | } |
| | |
| | | int[] personTotals = new int[2]; |
| | | |
| | | // åªæ¥æ¬æ¬¡æ¡ä»¶ä¸å®é
åå¨åªäº typeï¼åæ¥æ¯ææ¥è¿å
¨è¡¨çä¸ç¾ä¸ªå段æ¥åæ¥ï¼ä»
ç¨äºå¤æä¸é¢ä¸¤ä¸ªåæ¯æ¯å¦ä¸ºç©ºï¼ |
| | | List<String> types = serviceSubtaskMapper.selectSatisfactionSubtaskTypes(patSatisfactionReqVO); |
| | | List<String> types = satisfactionMapper.selectSatisfactionSubtaskTypes(patSatisfactionReqVO); |
| | | boolean hasVoice = types != null && types.contains("1"); |
| | | boolean hasQuestionnaire = types != null && types.contains("2"); |
| | | |
| | | if (hasVoice) { |
| | | //1. å
è·åå
¥åä¸çç»´æ¤éå |
| | | IvrLibaTemplateScript iltscript = new IvrLibaTemplateScript(); |
| | | iltscript.setDimensionList(patSatisfactionReqVO.getDimensionList()); |
| | | |
| | | //2 åè·å该é®é¢æ»¡æåº¦åç±»ä¸çIvrLibaTemplateScriptçéå |
| | | List<IvrLibaTemplateScript> ivrLibaTemplateScripts = ivrLibaTemplateScriptMapper.selectILTSBydimension(iltscript); |
| | | List<SatisfactionIvrScriptRow> ivrLibaTemplateScripts = satisfactionScriptMapper.selectIvrScriptByDimension(dimensionQuery(patSatisfactionReqVO)); |
| | | if (CollectionUtils.isNotEmpty(ivrLibaTemplateScripts)) { |
| | | //3 䏿¬¡ç»è®¡å
¨é¨é®é¢çåéé/å¡«æ¥é/é项åå¼ï¼åæ¥æ¯æ¯ä¸ªé®é¢åæ¥ 3 æ¬¡ï¼ |
| | | List<SatScriptRef> scriptRefs = new ArrayList<>(); |
| | | for (IvrLibaTemplateScript ivrLibaTemplateScript : ivrLibaTemplateScripts) { |
| | | for (SatisfactionIvrScriptRow ivrLibaTemplateScript : ivrLibaTemplateScripts) { |
| | | scriptRefs.add(new SatScriptRef(ivrLibaTemplateScript.getTemplateid(), ivrLibaTemplateScript.getScriptid(), ivrLibaTemplateScript.getScriptContent())); |
| | | } |
| | | buildSatisfactionDetailEntities(patSatisfactionReqVO, "1", true, scriptRefs, patSatisfactionDetailEntities, personTotals); |
| | |
| | | |
| | | if (hasQuestionnaire) { |
| | | //1. å
è·åå
¥åä¸ç满æåº¦ç»´åº¦ |
| | | SvyLibTemplateScriptVO svyLibTemplateScriptVO = new SvyLibTemplateScriptVO(); |
| | | svyLibTemplateScriptVO.setDimensionList(patSatisfactionReqVO.getDimensionList()); |
| | | //2 åè·å该é®é¢æ»¡æåº¦åç±»ä¸çIvrLibaTemplateScriptçéå |
| | | List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSLTScriptListBydimension(svyLibTemplateScriptVO); |
| | | List<SatisfactionSvyScriptRow> svyLibTemplateScripts = satisfactionScriptMapper.selectSvyScriptByDimension(dimensionQuery(patSatisfactionReqVO)); |
| | | if (CollectionUtils.isNotEmpty(svyLibTemplateScripts)) { |
| | | //3 䏿¬¡ç»è®¡å
¨é¨é®é¢çåéé/å¡«æ¥é/é项åå¼ï¼åæ¥æ¯æ¯ä¸ªé®é¢åæ¥ 3 æ¬¡ï¼ |
| | | List<SatScriptRef> scriptRefs = new ArrayList<>(); |
| | | for (SvyLibTemplateScript svyLibTemplateScript : svyLibTemplateScripts) { |
| | | for (SatisfactionSvyScriptRow svyLibTemplateScript : svyLibTemplateScripts) { |
| | | // é®å·çé项表æ svy_lib_template_script ç主é®å
³è |
| | | scriptRefs.add(new SatScriptRef(svyLibTemplateScript.getSvyid(), svyLibTemplateScript.getId(), svyLibTemplateScript.getScriptContent())); |
| | | } |
| | |
| | | Map<String, List<ScoreCount>> assortNameFillCountMap = new HashMap<>(); |
| | | |
| | | if (patSatisfactionReqVO.getType() == null || patSatisfactionReqVO.getType() == 1) { |
| | | //1. å
è·åivr_liba_script_assortçæ»¡æåº¦åç±»ID |
| | | IvrLibaScriptAssort ivrLibaScriptAssort = new IvrLibaScriptAssort(); |
| | | ivrLibaScriptAssort.setOrgid(patSatisfactionReqVO.getOrgid()); |
| | | List<IvrLibaScriptAssort> ivrLibaScriptAssorts = ivrLibaScriptAssortMapper.selectIvrLibaScriptAssortList(ivrLibaScriptAssort); |
| | | List<Long> mydIdList = ivrLibaScriptAssorts.stream().filter(item -> item.getType() != null && item.getType().contains("myd")).map(IvrLibaScriptAssort::getId).collect(Collectors.toList()); |
| | | List<SatisfactionCategoryRow> ivrLibaScriptAssorts = satisfactionScriptMapper.selectIvrCategoryList(ivrCategoryQuery(patSatisfactionReqVO)); |
| | | List<Long> mydIdList = ivrLibaScriptAssorts.stream().filter(item -> item.getType() != null && item.getType().contains("myd")).map(SatisfactionCategoryRow::getId).collect(Collectors.toList()); |
| | | |
| | | //2 åè·å该é®é¢æ»¡æåº¦åç±»ä¸çIvrLibaTemplateScriptçéå |
| | | List<IvrLibaTemplateScript> ivrLibaTemplateScripts = ivrLibaTemplateScriptMapper.queryLibTemplateIds(mydIdList); |
| | | List<SatisfactionIvrScriptRow> ivrLibaTemplateScripts = satisfactionScriptMapper.queryIvrScriptByAssort(assortQuery(mydIdList)); |
| | | |
| | | //2.1 䏿¬¡æ§ææ¬æ¬¡è¯·æ±å
¨é¨æ¨¡æ¿çåééãåæ¶äººæ°æ¥åæ¥ï¼åæ¥æ¯æ¯ä¸ªæ¨¡æ¿é®é¢åæ¥ä¸¤æ¬¡ï¼ |
| | | SatisfactionStatQuery statQuery = buildSatisfactionStatQuery(patSatisfactionReqVO, "1", |
| | | ivrLibaTemplateScripts.stream().map(IvrLibaTemplateScript::getTemplateid).collect(Collectors.toList())); |
| | | ivrLibaTemplateScripts.stream().map(SatisfactionIvrScriptRow::getTemplateid).collect(Collectors.toList())); |
| | | Map<Long, Long> sendCountMap = mapSatisfactionSendCount(statQuery); |
| | | SatisfactionFillStat fillStat = querySatisfactionFillStat(statQuery); |
| | | Map<Long, Long> fillPersonCountMap = mapSatisfactionFillPersonCount(statQuery); |
| | | |
| | | //3 æscriptAssortnameåç»,å¹¶è·åæ¯ä¸ªéåè¿è¡éåï¼è®¡ç®æ¯ä¸ªåç±»çæ»äººæ°åå¡«æ¥äººæ° |
| | | Map<String, List<IvrLibaTemplateScript>> scriptGroupByAssortName = ivrLibaTemplateScripts.stream().filter(item -> item.getScriptAssortname() != null).collect(Collectors.groupingBy(IvrLibaTemplateScript::getScriptAssortname)); |
| | | Map<String, List<SatisfactionIvrScriptRow>> scriptGroupByAssortName = ivrLibaTemplateScripts.stream().filter(item -> item.getScriptAssortname() != null).collect(Collectors.groupingBy(SatisfactionIvrScriptRow::getScriptAssortname)); |
| | | if (scriptGroupByAssortName != null && !scriptGroupByAssortName.isEmpty()) { |
| | | for (String assortNameKey : scriptGroupByAssortName.keySet()) { |
| | | // 该åç±»æ¶åçå»é模æ¿ï¼åé人æ°/åæ¶äººæ°é½ææ¨¡æ¿ç»è®¡ï¼ |
| | |
| | | //è·å该åç±»çå¡«æ¥æ»æ°éï¼åªç¨äºç®å¹³ååï¼æé¢ç®èåçè¡æ°ï¼ |
| | | List<ScoreCount> allFillCountList = new ArrayList<>(); |
| | | |
| | | List<IvrLibaTemplateScript> ivrLibaTemplateScriptList = scriptGroupByAssortName.get(assortNameKey); |
| | | for (IvrLibaTemplateScript ivrLibaTemplateScript : ivrLibaTemplateScriptList) { |
| | | List<SatisfactionIvrScriptRow> ivrLibaTemplateScriptList = scriptGroupByAssortName.get(assortNameKey); |
| | | for (SatisfactionIvrScriptRow ivrLibaTemplateScript : ivrLibaTemplateScriptList) { |
| | | Long templateId = ivrLibaTemplateScript.getTemplateid(); |
| | | if (templateId != null) { |
| | | categoryTemplateIds.add(templateId); |
| | |
| | | } |
| | | |
| | | if (patSatisfactionReqVO.getType() == null || patSatisfactionReqVO.getType() == 2) { |
| | | //1. å
è·åsvy_lib_script_categoryçæ»¡æåº¦åç±»ID |
| | | SvyLibScriptCategory svyLibScriptCategory = new SvyLibScriptCategory(); |
| | | svyLibScriptCategory.setOrgid(patSatisfactionReqVO.getOrgid()); |
| | | List<SvyLibScriptCategory> svyLibScriptCategories = svyLibScriptCategoryMapper.selectSvyLibScriptCategoryList(svyLibScriptCategory); |
| | | List<Long> mydIdList = svyLibScriptCategories.stream().filter(item -> item.getType() != null && item.getType().contains("myd")).map(SvyLibScriptCategory::getId).collect(Collectors.toList()); |
| | | List<SatisfactionCategoryRow> svyLibScriptCategories = satisfactionScriptMapper.selectSvyCategoryList(svyCategoryQuery(patSatisfactionReqVO)); |
| | | List<Long> mydIdList = svyLibScriptCategories.stream().filter(item -> item.getType() != null && item.getType().contains("myd")).map(SatisfactionCategoryRow::getId).collect(Collectors.toList()); |
| | | |
| | | //2 åè·å该é®é¢æ»¡æåº¦åç±»ä¸çIvrLibaTemplateScriptçéå |
| | | List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.querySvyLibTemplateIds(mydIdList); |
| | | List<SatisfactionSvyScriptRow> svyLibTemplateScripts = satisfactionScriptMapper.querySvyScriptByCategory(categoryQuery(mydIdList)); |
| | | |
| | | //2.1 䏿¬¡æ§ææ¬æ¬¡è¯·æ±å
¨é¨æ¨¡æ¿çåééãåæ¶äººæ°æ¥åæ¥ï¼åæ¥æ¯æ¯ä¸ªæ¨¡æ¿é®é¢åæ¥ä¸¤æ¬¡ï¼ |
| | | SatisfactionStatQuery statQuery = buildSatisfactionStatQuery(patSatisfactionReqVO, "2", |
| | | svyLibTemplateScripts.stream().map(SvyLibTemplateScript::getSvyid).collect(Collectors.toList())); |
| | | svyLibTemplateScripts.stream().map(SatisfactionSvyScriptRow::getSvyid).collect(Collectors.toList())); |
| | | Map<Long, Long> sendCountMap = mapSatisfactionSendCount(statQuery); |
| | | SatisfactionFillStat fillStat = querySatisfactionFillStat(statQuery); |
| | | Map<Long, Long> fillPersonCountMap = mapSatisfactionFillPersonCount(statQuery); |
| | | |
| | | //3 æscriptAssortnameåç»,å¹¶è·åæ¯ä¸ªéåè¿è¡éåï¼è®¡ç®æ¯ä¸ªåç±»çæ»äººæ°åå¡«æ¥äººæ° |
| | | Map<String, List<SvyLibTemplateScript>> scriptGroupByatCegoryName = svyLibTemplateScripts.stream().filter(item -> item.getCategoryName() != null).collect(Collectors.groupingBy(SvyLibTemplateScript::getCategoryName)); |
| | | Map<String, List<SatisfactionSvyScriptRow>> scriptGroupByatCegoryName = svyLibTemplateScripts.stream().filter(item -> item.getCategoryName() != null).collect(Collectors.groupingBy(SatisfactionSvyScriptRow::getCategoryName)); |
| | | if (scriptGroupByatCegoryName != null && !scriptGroupByatCegoryName.isEmpty()) { |
| | | for (String categoryNameKey : scriptGroupByatCegoryName.keySet()) { |
| | | // 该åç±»æ¶åçå»é模æ¿ï¼åé人æ°/åæ¶äººæ°é½ææ¨¡æ¿ç»è®¡ï¼ |
| | |
| | | //è·å该åç±»çå¡«æ¥æ»æ°éï¼åªç¨äºç®å¹³ååï¼æé¢ç®èåçè¡æ°ï¼ |
| | | List<ScoreCount> allFillCountList = new ArrayList<>(); |
| | | |
| | | List<SvyLibTemplateScript> svyLibTemplateScriptList = scriptGroupByatCegoryName.get(categoryNameKey); |
| | | for (SvyLibTemplateScript svyLibTemplateScript : svyLibTemplateScriptList) { |
| | | List<SatisfactionSvyScriptRow> svyLibTemplateScriptList = scriptGroupByatCegoryName.get(categoryNameKey); |
| | | for (SatisfactionSvyScriptRow svyLibTemplateScript : svyLibTemplateScriptList) { |
| | | Long templateId = svyLibTemplateScript.getSvyid(); |
| | | if (templateId != null) { |
| | | categoryTemplateIds.add(templateId); |
| | |
| | | subidAll += sendCountMap.getOrDefault(templateId, 0L); |
| | | fillCountAll += fillPersonCountMap.getOrDefault(templateId, 0L); |
| | | } |
| | | |
| | | |
| | | // è¿éå
è®°å½ä¸ä¸æ¯ä¸ªåç±»çæ»äººæ°åå¡«æ¥äººæ° |
| | | Map<String, Object> personCount = (Map<String, Object>) zzt.get(categoryNameKey); |
| | |
| | | return zzt; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public Map<String, Object> satisfactionGraphDimension(PatSatisfactionReqVO patSatisfactionReqVO) { |
| | | //ç¨æ¥è®°å½æ±ç¶å¾ä¿¡æ¯ï¼key=满æåº¦ç»´åº¦åç§°ï¼value=该维度ä¸çæ»äººæ°åå¡«æ¥äººæ°ï¼ |
| | |
| | | Map<String, List<ScoreCount>> assortNameFillCountMap = new HashMap<>(); |
| | | |
| | | if (patSatisfactionReqVO.getType() == null || patSatisfactionReqVO.getType() == 1) { |
| | | //1. ä»å
¥åä¸è·å满æåº¦ç»´ç»´åº¦ |
| | | IvrLibaTemplateScript ivrLibaTemplateScript2 = new IvrLibaTemplateScript(); |
| | | ivrLibaTemplateScript2.setDimensionList(patSatisfactionReqVO.getDimensionList()); |
| | | |
| | | //2 åè·å该é®é¢æ»¡æåº¦åç±»ä¸çIvrLibaTemplateScriptçéå |
| | | List<IvrLibaTemplateScript> ivrLibaTemplateScripts = ivrLibaTemplateScriptMapper.selectILTSBydimension(ivrLibaTemplateScript2); |
| | | List<SatisfactionIvrScriptRow> ivrLibaTemplateScripts = satisfactionScriptMapper.selectIvrScriptByDimension(dimensionQuery(patSatisfactionReqVO)); |
| | | if (ivrLibaTemplateScripts != null && !ivrLibaTemplateScripts.isEmpty()) { |
| | | //3 ædimension维度åç»,å¹¶è·åæ¯ä¸ªéåè¿è¡éåï¼è®¡ç®æ¯ä¸ªåç±»çæ»äººæ°åå¡«æ¥äººæ° |
| | | List<IvrLibaTemplateScript> dimensionScripts = ivrLibaTemplateScripts.stream().filter(item -> item.getDimension() != null).collect(Collectors.toList()); |
| | | Map<String, List<IvrLibaTemplateScript>> groupByDimension = dimensionScripts.stream().collect(Collectors.groupingBy(IvrLibaTemplateScript::getDimension)); |
| | | List<SatisfactionIvrScriptRow> dimensionScripts = ivrLibaTemplateScripts.stream().filter(item -> item.getDimension() != null).collect(Collectors.toList()); |
| | | Map<String, List<SatisfactionIvrScriptRow>> groupByDimension = dimensionScripts.stream().collect(Collectors.groupingBy(SatisfactionIvrScriptRow::getDimension)); |
| | | |
| | | if (groupByDimension != null && !groupByDimension.isEmpty()) { |
| | | //3.1 䏿¬¡æ§ææ¬æ¬¡è¯·æ±å
¨é¨æ¨¡æ¿çåééãåæ¶äººæ°æ¥åæ¥ï¼åæ¥æ¯æ¯ä¸ªæ¨¡æ¿é®é¢åæ¥ä¸¤æ¬¡ï¼ |
| | | SatisfactionStatQuery statQuery = buildSatisfactionStatQuery(patSatisfactionReqVO, "1", |
| | | dimensionScripts.stream().map(IvrLibaTemplateScript::getTemplateid).collect(Collectors.toList())); |
| | | dimensionScripts.stream().map(SatisfactionIvrScriptRow::getTemplateid).collect(Collectors.toList())); |
| | | Map<Long, Long> sendCountMap = mapSatisfactionSendCount(statQuery); |
| | | SatisfactionFillStat fillStat = querySatisfactionFillStat(statQuery); |
| | | Map<Long, Long> fillPersonCountMap = mapSatisfactionFillPersonCount(statQuery); |
| | |
| | | //è·å该维度çå¡«æ¥åå¼åå¸ï¼åªç¨äºç®å¹³ååï¼ |
| | | List<ScoreCount> allFillCountList = new ArrayList<>(); |
| | | |
| | | List<IvrLibaTemplateScript> ivrLibaTemplateScriptList = groupByDimension.get(dimension); |
| | | for (IvrLibaTemplateScript ivrLibaTemplateScript : ivrLibaTemplateScriptList) { |
| | | List<SatisfactionIvrScriptRow> ivrLibaTemplateScriptList = groupByDimension.get(dimension); |
| | | for (SatisfactionIvrScriptRow ivrLibaTemplateScript : ivrLibaTemplateScriptList) { |
| | | Long templateId = ivrLibaTemplateScript.getTemplateid(); |
| | | if (templateId != null) { |
| | | dimensionTemplateIds.add(templateId); |
| | |
| | | |
| | | if (patSatisfactionReqVO.getType() == null || patSatisfactionReqVO.getType() == 2) { |
| | | //1. ä»å
¥åä¸è·å满æåº¦ç»´ç»´åº¦ |
| | | SvyLibTemplateScriptVO svyLibTemplateScriptVO = new SvyLibTemplateScriptVO(); |
| | | svyLibTemplateScriptVO.setDimensionList(patSatisfactionReqVO.getDimensionList()); |
| | | |
| | | //2 åè·å该é®é¢æ»¡æåº¦åç±»ä¸çIvrLibaTemplateScriptçéå |
| | | List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSLTScriptListBydimension(svyLibTemplateScriptVO); |
| | | List<SatisfactionSvyScriptRow> svyLibTemplateScripts = satisfactionScriptMapper.selectSvyScriptByDimension(dimensionQuery(patSatisfactionReqVO)); |
| | | if (svyLibTemplateScripts != null && !svyLibTemplateScripts.isEmpty()) { |
| | | //3 ædimension维度åç»,å¹¶è·åæ¯ä¸ªéåè¿è¡éåï¼è®¡ç®æ¯ä¸ªåç±»çæ»äººæ°åå¡«æ¥äººæ° |
| | | List<SvyLibTemplateScript> dimensionScripts = svyLibTemplateScripts.stream().filter(item -> item.getDimension() != null).collect(Collectors.toList()); |
| | | Map<String, List<SvyLibTemplateScript>> groupByDimension = dimensionScripts.stream().collect(Collectors.groupingBy(SvyLibTemplateScript::getDimension)); |
| | | List<SatisfactionSvyScriptRow> dimensionScripts = svyLibTemplateScripts.stream().filter(item -> item.getDimension() != null).collect(Collectors.toList()); |
| | | Map<String, List<SatisfactionSvyScriptRow>> groupByDimension = dimensionScripts.stream().collect(Collectors.groupingBy(SatisfactionSvyScriptRow::getDimension)); |
| | | if (groupByDimension != null && !groupByDimension.isEmpty()) { |
| | | //3.1 䏿¬¡æ§ææ¬æ¬¡è¯·æ±å
¨é¨æ¨¡æ¿çåééãåæ¶äººæ°æ¥åæ¥ï¼åæ¥æ¯æ¯ä¸ªæ¨¡æ¿é®é¢åæ¥ä¸¤æ¬¡ï¼ |
| | | SatisfactionStatQuery statQuery = buildSatisfactionStatQuery(patSatisfactionReqVO, "2", |
| | | dimensionScripts.stream().map(SvyLibTemplateScript::getSvyid).collect(Collectors.toList())); |
| | | dimensionScripts.stream().map(SatisfactionSvyScriptRow::getSvyid).collect(Collectors.toList())); |
| | | Map<Long, Long> sendCountMap = mapSatisfactionSendCount(statQuery); |
| | | SatisfactionFillStat fillStat = querySatisfactionFillStat(statQuery); |
| | | Map<Long, Long> fillPersonCountMap = mapSatisfactionFillPersonCount(statQuery); |
| | |
| | | //è·å该åç±»çå¡«æ¥åå¼åå¸ï¼åªç¨äºç®å¹³ååï¼ |
| | | List<ScoreCount> allFillCountList = new ArrayList<>(); |
| | | |
| | | List<SvyLibTemplateScript> svyLibTemplateScriptList = groupByDimension.get(dimension); |
| | | for (SvyLibTemplateScript svyLibTemplateScript : svyLibTemplateScriptList) { |
| | | List<SatisfactionSvyScriptRow> svyLibTemplateScriptList = groupByDimension.get(dimension); |
| | | for (SatisfactionSvyScriptRow svyLibTemplateScript : svyLibTemplateScriptList) { |
| | | Long templateId = svyLibTemplateScript.getSvyid(); |
| | | if (templateId != null) { |
| | | dimensionTemplateIds.add(templateId); |
| | |
| | | subidAll += sendCountMap.getOrDefault(templateId, 0L); |
| | | fillCountAll += fillPersonCountMap.getOrDefault(templateId, 0L); |
| | | } |
| | | |
| | | |
| | | // è¿éå
è®°å½ä¸ä¸æ¯ä¸ªåç±»çæ»äººæ°åå¡«æ¥äººæ° |
| | | Map<String, Object> personCount = (Map<String, Object>) zzt.get(dimension); |
| | |
| | | return zzt; |
| | | } |
| | | |
| | | /** |
| | | * è·åæé«å |
| | | * |
| | | * @param options |
| | | * @return |
| | | */ |
| | | private Double maxScore(List<IvrLibaTemplateTargetoption> options) { |
| | | if (CollectionUtils.isEmpty(options)) return 0.0; |
| | | Double maxScore = options.stream() |
| | | .map(IvrLibaTemplateTargetoption::getScore) |
| | | .filter(scoreStr -> scoreStr != null && !scoreStr.isEmpty()) |
| | | .mapToDouble(Double::parseDouble) |
| | | .max() |
| | | .orElse(0.0); |
| | | return maxScore; |
| | | } |
| | | |
| | | /** |
| | | * è·åæä½å |
| | | * |
| | | * @param options |
| | | * @return |
| | | */ |
| | | private Double minScore(List<IvrLibaTemplateTargetoption> options) { |
| | | if (CollectionUtils.isEmpty(options)) return 0.0; |
| | | Double minScore = options.stream() |
| | | .map(IvrLibaTemplateTargetoption::getScore) |
| | | .filter(scoreStr -> scoreStr != null && !scoreStr.isEmpty()) |
| | | .mapToDouble(Double::parseDouble) |
| | | .min() |
| | | .orElse(0.0); |
| | | return minScore; |
| | | } |
| | | |
| | | /** |
| | | * è·åå¹³åå |
| | | * |
| | | * @param fillCount |
| | | * @return |
| | | */ |
| | | private Double averageScore(List<ServiceSubtaskDetailDTO> fillCount) { |
| | | if (CollectionUtils.isEmpty(fillCount)) return 0.0; |
| | | double sum = fillCount.stream().filter(dto -> dto.getScore() != null && !dto.getScore().isEmpty()).mapToDouble(dto -> Double.parseDouble(dto.getScore())).sum(); |
| | | return new BigDecimal(sum / fillCount.size()).setScale(1, RoundingMode.HALF_UP).doubleValue(); |
| | | } |
| | | |
| | | // ==================== satisfactionGraph èåç»è®¡ï¼æ¿ä»£éä¸ªæ¨¡æ¿æ¥åºï¼ ==================== |
| | | // ==================== satisfactionGraph èåç»è®¡ï¼æ¿ä»£éä¸ªæ¨¡æ¿æ¥åºï¼ ==================== |
| | | |
| | | /** |
| | | * æå»ºèåç»è®¡å
¥åï¼å弿¥æºä¸å DtoConversionUtils.sourceToTarget(patSatisfactionReqVO, ServiceSubtaskSatisfactionEntity.class) ä¸è´ï¼ |
| | |
| | | private Map<Long, Long> mapSatisfactionSendCount(SatisfactionStatQuery statQuery) { |
| | | Map<Long, Long> sendCountMap = new HashMap<>(); |
| | | if (statQuery == null || CollectionUtils.isEmpty(statQuery.getLibTemplateIds())) return sendCountMap; |
| | | List<Map<String, Object>> rows = serviceSubtaskMapper.selectSatisfactionSendCount(statQuery); |
| | | List<Map<String, Object>> rows = satisfactionMapper.selectSatisfactionSendCount(statQuery); |
| | | if (CollectionUtils.isEmpty(rows)) return sendCountMap; |
| | | for (Map<String, Object> row : rows) { |
| | | Long templateId = toLong(row.get("libtemplateid")); |
| | |
| | | private Map<Long, Long> mapSatisfactionFillPersonCount(SatisfactionStatQuery statQuery) { |
| | | Map<Long, Long> fillPersonCountMap = new HashMap<>(); |
| | | if (statQuery == null || CollectionUtils.isEmpty(statQuery.getLibTemplateIds())) return fillPersonCountMap; |
| | | List<Map<String, Object>> rows = serviceSubtaskDetailMapper.selectSatisfactionFillPersonCount(statQuery); |
| | | List<Map<String, Object>> rows = satisfactionMapper.selectSatisfactionFillPersonCount(statQuery); |
| | | if (CollectionUtils.isEmpty(rows)) return fillPersonCountMap; |
| | | for (Map<String, Object> row : rows) { |
| | | Long templateId = toLong(row.get("libtemplateid")); |
| | |
| | | private SatisfactionFillStat querySatisfactionFillStat(SatisfactionStatQuery statQuery) { |
| | | SatisfactionFillStat fillStat = new SatisfactionFillStat(); |
| | | if (statQuery == null || CollectionUtils.isEmpty(statQuery.getLibTemplateIds())) return fillStat; |
| | | List<Map<String, Object>> rows = serviceSubtaskDetailMapper.selectSatisfactionFillStat(statQuery); |
| | | List<Map<String, Object>> rows = satisfactionMapper.selectSatisfactionFillStat(statQuery); |
| | | if (CollectionUtils.isEmpty(rows)) return fillStat; |
| | | for (Map<String, Object> row : rows) { |
| | | Long templateId = toLong(row.get("libtemplateid")); |
| | |
| | | /** |
| | | * è·åå¹³ååï¼èåçï¼åå¼ä¸æ¡æ°ï¼ |
| | | * <p> |
| | | * å£å¾ä¸ {@link #averageScore(List)} å®å
¨ä¸è´ï¼åå为å¯è§£æåå¼ä¹åï¼åæ¯ä¸ºæç»è¡æ°ï¼å
å«åå¼ä¸ºç©ºçè¡ï¼ã |
| | | * å£å¾ä¸å {@code averageScore(List)} å®å
¨ä¸è´ï¼åå为å¯è§£æåå¼ä¹åï¼åæ¯ä¸ºæç»è¡æ°ï¼å
å«åå¼ä¸ºç©ºçè¡ï¼ã |
| | | * 注æä¸è½æ¹æ sql ç avg() æãæåå¼çè¡æ°ãå忝ï¼å¦åè¿åç averageScore ä¼åã |
| | | * <p> |
| | | * <b>çç¥åï¼2026ï¼</b>ï¼çæ£çç®æ³å·²æ¶æå°ãéç¨å£å¾ï¼ååï¼ãçç¥ |
| | | * {@link com.ruoyi.satisfaction.service.strategy.CommonSatisfactionScoreStrategy}ï¼ |
| | | * æ¬æ¹æ³åªåå
¥åéé
ï¼æå
é¨ {@code ScoreCount} 转æç»ä¸çå æ¯è¡ï¼ã |
| | | * <b>计ç®ç»æä¸è¿ç§»åéä½ç¸å</b>ï¼ä¿ç 1 ä½ãHALF_UPï¼æ è¡æ¶ 0.0ï¼ã |
| | | */ |
| | | private Double averageScoreByStat(List<ScoreCount> fillCount) { |
| | | if (CollectionUtils.isEmpty(fillCount)) return 0.0; |
| | | double sum = 0.0; |
| | | long rows = 0L; |
| | | |
| | | // éé
æçç¥çç»ä¸å
¥åï¼åªå¸¦ score ä¸ count ä¸¤ä¸ªåæ®µï¼çç¥åªç¨å°è¿ä¸¤ä¸ªï¼ |
| | | List<ServiceSubtaskDetailRatioExport> rows = new ArrayList<>(fillCount.size()); |
| | | for (ScoreCount scoreCount : fillCount) { |
| | | if (scoreCount.getCount() <= 0L) continue; |
| | | rows += scoreCount.getCount(); |
| | | if (scoreCount.getScore() != null && !scoreCount.getScore().isEmpty()) { |
| | | sum += Double.parseDouble(scoreCount.getScore()) * scoreCount.getCount(); |
| | | } |
| | | if (scoreCount.getCount() <= 0L) continue; // ä¸åæä¸è´ï¼éæ£æ°çèåè¡ä¸åä¸ |
| | | ServiceSubtaskDetailRatioExport row = new ServiceSubtaskDetailRatioExport(); |
| | | row.setScore(scoreCount.getScore()); |
| | | row.setCount(String.valueOf(scoreCount.getCount())); |
| | | rows.add(row); |
| | | } |
| | | if (rows == 0L) return 0.0; |
| | | return new BigDecimal(sum / rows).setScale(1, RoundingMode.HALF_UP).doubleValue(); |
| | | |
| | | BigDecimal average = satisfactionScoreStrategyResolver |
| | | .resolve(SatisfactionSites.COMMON) |
| | | .comprehensiveScore(rows); |
| | | return average == null ? 0.0 : average.doubleValue(); |
| | | } |
| | | |
| | | /** |
| | |
| | | private SatisfactionFillStatByMatchedtext querySatisfactionFillStatByMatchedtext(SatisfactionStatQuery statQuery) { |
| | | SatisfactionFillStatByMatchedtext fillStat = new SatisfactionFillStatByMatchedtext(); |
| | | if (statQuery == null || CollectionUtils.isEmpty(statQuery.getLibTemplateIds())) return fillStat; |
| | | List<Map<String, Object>> rows = serviceSubtaskDetailMapper.selectSatisfactionFillStatByMatchedtext(statQuery); |
| | | List<Map<String, Object>> rows = satisfactionMapper.selectSatisfactionFillStatByMatchedtext(statQuery); |
| | | if (CollectionUtils.isEmpty(rows)) return fillStat; |
| | | for (Map<String, Object> row : rows) { |
| | | Long templateId = toLong(row.get("libtemplateid")); |
| | |
| | | .filter(Objects::nonNull).distinct().collect(Collectors.toList()); |
| | | if (CollectionUtils.isNotEmpty(scriptIds)) { |
| | | addTargetOptionScores(optionScores, voice |
| | | ? ivrLibaTemplateTargetoptionMapper.selectIvrLibaTargetoptionScores(scriptIds) |
| | | : svyLibTemplateTargetoptionMapper.selectSvyLibTargetoptionScores(scriptIds)); |
| | | ? satisfactionScriptMapper.selectIvrTargetOptionScores(scriptIds) |
| | | : satisfactionScriptMapper.selectSvyTargetOptionScores(scriptIds)); |
| | | } |
| | | if (scriptRefs.stream().anyMatch(ref -> ref.getOptionScriptId() == null)) { |
| | | optionScores.put(null, collectTargetOptionScores(voice |
| | | ? ivrLibaTemplateTargetoptionMapper.selectIvrLibaTargetoptionScores(null) |
| | | : svyLibTemplateTargetoptionMapper.selectSvyLibTargetoptionScores(null))); |
| | | ? satisfactionScriptMapper.selectIvrTargetOptionScores(null) |
| | | : satisfactionScriptMapper.selectSvyTargetOptionScores(null))); |
| | | } |
| | | return optionScores; |
| | | } |
| | | |
| | | private void addTargetOptionScores(Map<Long, List<String>> optionScores, List<Map<String, Object>> rows) { |
| | | private void addTargetOptionScores(Map<Long, List<String>> optionScores, |
| | | List<SatisfactionOptionScoreRow> rows) { |
| | | if (CollectionUtils.isEmpty(rows)) return; |
| | | for (Map<String, Object> row : rows) { |
| | | Long scriptId = toLong(row.get("scriptid")); |
| | | for (SatisfactionOptionScoreRow row : rows) { |
| | | Long scriptId = row.getScriptid(); |
| | | if (scriptId == null) continue; |
| | | Object score = row.get("score"); |
| | | optionScores.computeIfAbsent(scriptId, key -> new ArrayList<>()) |
| | | .add(score == null ? null : String.valueOf(score)); |
| | | .add(row.getScore()); |
| | | } |
| | | } |
| | | |
| | | private List<String> collectTargetOptionScores(List<Map<String, Object>> rows) { |
| | | private List<String> collectTargetOptionScores(List<SatisfactionOptionScoreRow> rows) { |
| | | List<String> scores = new ArrayList<>(); |
| | | if (CollectionUtils.isEmpty(rows)) return scores; |
| | | for (Map<String, Object> row : rows) { |
| | | Object score = row.get("score"); |
| | | scores.add(score == null ? null : String.valueOf(score)); |
| | | for (SatisfactionOptionScoreRow row : rows) { |
| | | scores.add(row.getScore()); |
| | | } |
| | | return scores; |
| | | } |
| | |
| | | return byTemplateQuestion.get(statKey(templateId, scriptContent)); |
| | | } |
| | | } |
| | | |
| | | // ==================== 满æåº¦æ¨¡ååï¼æ¥è¯¢å¯¹è±¡æé ==================== |
| | | // åå®ç°ç´æ¥ new smartor çå®ä½å½å
¥åï¼æ¨¡åååç»ä¸ç¨ SatisfactionScriptQueryï¼ |
| | | // è¿éæä¸å¤æé æ¶æä¸ºå¸®å©æ¹æ³ï¼æ¡ä»¶ä¸åæ¥éå对åºã |
| | | |
| | | /** 满æåº¦åç±»æ¥è¯¢ï¼orgid + type=mydï¼ */ |
| | | private SatisfactionScriptQuery ivrCategoryQuery(PatSatisfactionReqVO reqVO) { |
| | | SatisfactionScriptQuery q = new SatisfactionScriptQuery(); |
| | | q.setOrgid(reqVO.getOrgid()); |
| | | q.setType("myd"); |
| | | return q; |
| | | } |
| | | |
| | | /** 满æåº¦åç±»æ¥è¯¢ï¼é®å·ä¾§ï¼æ¡ä»¶åè¯é³ä¾§ï¼ */ |
| | | private SatisfactionScriptQuery svyCategoryQuery(PatSatisfactionReqVO reqVO) { |
| | | SatisfactionScriptQuery q = new SatisfactionScriptQuery(); |
| | | q.setOrgid(reqVO.getOrgid()); |
| | | q.setType("myd"); |
| | | return q; |
| | | } |
| | | |
| | | /** æè¯é³åç±» id åé®é¢ */ |
| | | private SatisfactionScriptQuery assortQuery(List<Long> scriptAssortids) { |
| | | SatisfactionScriptQuery q = new SatisfactionScriptQuery(); |
| | | q.setScriptAssortids(scriptAssortids); |
| | | return q; |
| | | } |
| | | |
| | | /** æé®å·åç±» id åé®é¢ */ |
| | | private SatisfactionScriptQuery categoryQuery(List<Long> scriptCategoryids) { |
| | | SatisfactionScriptQuery q = new SatisfactionScriptQuery(); |
| | | q.setScriptCategoryids(scriptCategoryids); |
| | | return q; |
| | | } |
| | | |
| | | /** æç»´åº¦åé®é¢ï¼è¯é³/é®å·å
±ç¨ï¼ä¸¤ä¾§ãdimensionList ä¸ºç©ºæ¶æ¯å¦æ¼ dimension IS NOT NULLãçå·®å¼å¨ SQL éä¿çï¼ */ |
| | | private SatisfactionScriptQuery dimensionQuery(PatSatisfactionReqVO reqVO) { |
| | | SatisfactionScriptQuery q = new SatisfactionScriptQuery(); |
| | | q.setDimensionList(reqVO.getDimensionList()); |
| | | return q; |
| | | } |
| | | |
| | | } |