From ff85e01f2e31c1f87ddbb74324fc4acc7f2786bd Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 23 Jun 2021 16:09:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9A=BE=E7=82=B9=E8=B5=8C=E7=82=B9=E5=88=97?= =?UTF-8?q?=E8=A1=A8=EF=BC=9Adifficultyrank-multic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/screen/ScreenProjectDataDTO.java | 4 ++ .../form/ScreenProjectDataInfoFormDTO.java | 5 ++ .../com/epmet/controller/DemoController.java | 21 ++++++++ .../com/epmet/dao/project/ProjectDao.java | 35 +++++++++++-- .../screen/ScreenProjectDataEntity.java | 5 +- .../toscreen/ScreenProjectSettleService.java | 10 ++++ .../impl/ScreenExtractServiceImpl.java | 7 +++ .../impl/ScreenProjectSettleServiceImpl.java | 34 +++++++++++++ .../epmet/service/project/ProjectService.java | 28 +++++++++++ .../project/impl/ProjectServiceImpl.java | 38 ++++++++++++++ .../resources/mapper/project/ProjectDao.xml | 50 +++++++++++++++++++ .../com/epmet/constant/ProjectConstant.java | 2 +- .../ProjectSatisfactionDetailServiceImpl.java | 34 +++++++++++-- 13 files changed, 263 insertions(+), 10 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectDataDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectDataDTO.java index 1d42d5964f..fe859bfac0 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectDataDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectDataDTO.java @@ -180,5 +180,9 @@ public class ScreenProjectDataDTO implements Serializable { private String topicId; private Integer responseCount; + /** + * 满意度得分 + */ + private BigDecimal satisfactionScore; } diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/form/ScreenProjectDataInfoFormDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/form/ScreenProjectDataInfoFormDTO.java index da4781f803..2b0642ce25 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/form/ScreenProjectDataInfoFormDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/form/ScreenProjectDataInfoFormDTO.java @@ -112,4 +112,9 @@ public class ScreenProjectDataInfoFormDTO implements Serializable { * 议题图片地址 */ private String[] projectImgUrl; + + /** + * 满意度得分 + */ + private BigDecimal satisfactionScore; } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java index a5317f5ba2..563f92f835 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java @@ -44,6 +44,7 @@ import com.epmet.service.evaluationindex.indexcal.*; import com.epmet.service.evaluationindex.screen.*; import com.epmet.service.stats.DimAgencyService; import com.epmet.service.stats.DimCustomerPartymemberService; +import com.epmet.service.stats.DimCustomerService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -121,6 +122,8 @@ public class DemoController { private FactGridGovernDailyService factGridGovernDailyService; @Autowired private FactAgencyGovernDailyService factAgencyGovernDailyService; + @Autowired + private DimCustomerService dimCustomerService; @GetMapping("testAlarm") public void testAlarm() { @@ -936,4 +939,22 @@ public class DemoController { return new Result(); } + + /** + * @return com.epmet.commons.tools.utils.Result + * @param + * @author yinzuomei + * @description 将产品内部客户,来源于议题并且已结案的项目,赋值满意度得分 + * @Date 2021/6/23 15:55 + **/ + @PostMapping("update-satisfaction-core") + public Result updateProjectSatisfactionScore(){ + List customerIds=dimCustomerService.getAllCustomerId(); + customerIds.forEach(customerId->{ + screenProjectSettleService.updateProjectSatisfactionScore(customerId,null,null); + log.info("更新完成"); + }); + return new Result(); + } + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectDao.java index 44e47f6f92..283d448369 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectDao.java @@ -18,20 +18,17 @@ package com.epmet.dao.project; import com.epmet.commons.mybatis.dao.BaseDao; -import com.epmet.dto.CustomerProjectParameterDTO; import com.epmet.dto.ProjectDTO; -import com.epmet.dto.ProjectSatisfactionStatisticsDTO; import com.epmet.dto.project.ProjectAgencyDTO; import com.epmet.dto.project.ProjectCategoryDTO; import com.epmet.dto.project.ProjectGridDTO; import com.epmet.dto.project.ProjectPointDTO; import com.epmet.dto.project.result.ProjectExceedParamsResultDTO; -import com.epmet.dto.screen.ScreenProjectProcessAttachmentDTO; -import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; import com.epmet.entity.project.ProjectEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.List; /** @@ -158,4 +155,34 @@ public interface ProjectDao extends BaseDao { * @return java.lang.String */ String selectValueByKey(@Param("customerId") String customerId, @Param("parameterKey") String parameterKey); + + /** + * 计算某个项目的群满意度得分 + * + * @param customerId + * @param projectId + * @return 得分 + */ + BigDecimal selectProjectSatisfactionScore(@Param("customerId")String customerId, + @Param("projectId")String projectId); + + /** + * 查询当天(dateId)有评价记录的项目id + * + * @param customerId + * @param dateId + * @return + */ + List selectEvaluateProjectIds(@Param("customerId") String customerId, @Param("dateId")String dateId); + + /** + * 可根据状态筛选项目id + * + * @param customerId + * @param projectStatus 状态:待处理 pending,结案closed + * @return + */ + List selectClosedProjectIds(@Param("customerId")String customerId, + @Param("origin")String origin, + @Param("projectStatus")String projectStatus); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenProjectDataEntity.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenProjectDataEntity.java index 9ef584bad8..52c9a19ab3 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenProjectDataEntity.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenProjectDataEntity.java @@ -144,5 +144,8 @@ public class ScreenProjectDataEntity extends BaseEpmetEntity { */ private String allParentIds; - + /** + * 满意度得分 + */ + private BigDecimal satisfactionScore; } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenProjectSettleService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenProjectSettleService.java index fe147887b0..c9fa1b17d7 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenProjectSettleService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenProjectSettleService.java @@ -24,4 +24,14 @@ public interface ScreenProjectSettleService { */ void extractScreenData(ScreenCentralZoneDataFormDTO param); + /** + * 更新项目得分 + * + * @param customerId + * @param dateId //dateId可以为空,如果为空重新计算当前客户下所有的项目的分数; dateId不为空,只计算当天存在评价记录的项目,更新项目对应的得分。 + * @param projectId 项目id可为空 + * @return void + */ + void updateProjectSatisfactionScore(String customerId,String dateId,String projectId); + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java index d2d37a4693..10d05a6fda 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java @@ -280,6 +280,13 @@ public class ScreenExtractServiceImpl implements ScreenExtractService { }catch (Exception e){ log.error("大屏项目数据抽取_按天抽取_按天统计失败,customerId为:"+customerId+"dateId为:"+dateId, e); } + try{ + //dateId可以为空,如果为空重新计算当前客户下所有的项目的分数 + //dateId不为空,只计算当天存在评价记录的项目,更新项目对应的得分。 + screenProjectSettleService.updateProjectSatisfactionScore(customerId,dateId,null); + }catch(Exception e){ + log.error("群众不满得分更新失败"); + } } /** diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenProjectSettleServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenProjectSettleServiceImpl.java index 781211b4bf..6ffe5b9e17 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenProjectSettleServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenProjectSettleServiceImpl.java @@ -102,6 +102,8 @@ public class ScreenProjectSettleServiceImpl implements ScreenProjectSettleServic } else { meta.setLinkUserId(meta.getLinkName()); } + //项目满意度得分 + meta.setSatisfactionScore(projectService.calProjectSatisfactionScore(param.getCustomerId(),meta.getProjectId())); return meta; })).collect(Collectors.toList()); } @@ -170,4 +172,36 @@ public class ScreenProjectSettleServiceImpl implements ScreenProjectSettleServic } + /** + * 更新项目得分 + * + * @param customerId + * @param dateId //dateId可以为空,如果为空重新计算当前客户下所有的项目的分数; dateId不为空,只计算当天存在评价记录的项目,更新项目对应的得分。 + * @param projectId 项目id可为空 + * @return void + */ + @Override + public void updateProjectSatisfactionScore(String customerId, String dateId,String projectId) { + if(StringUtils.isNotBlank(projectId)){ + projectService.calProjectSatisfactionScore(customerId,projectId); + return; + } + List projectIds=new ArrayList<>(); + if(StringUtils.isNotBlank(dateId)){ + List list=projectService.selectEvaluateProjectIds(customerId,dateId); + if(!CollectionUtils.isEmpty(list)){ + projectIds.addAll(list); + } + }else{ + // 只有来源于议题的项目,才有分数 + List closedProjectIds=projectService.selectClosedProjectIds(customerId,"issue","closed"); + if(!CollectionUtils.isEmpty(closedProjectIds)){ + projectIds.addAll(closedProjectIds); + } + } + projectIds.forEach(id->{ + projectService.calProjectSatisfactionScore(customerId,id); + }); + } + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectService.java index 36c3ebd05b..4494715f9a 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectService.java @@ -27,6 +27,7 @@ import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity import com.epmet.entity.project.ProjectEntity; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.Set; @@ -162,4 +163,31 @@ public interface ProjectService extends BaseService { */ List getProjectSatisfaction(String customerId); + /** + * 计算某个项目的群满意度得分 + * + * @param customerId + * @param projectId + * @return 得分 + */ + BigDecimal calProjectSatisfactionScore(String customerId,String projectId); + + /** + * 查询当天(dateId)有评价记录的项目id + * + * @param customerId + * @param dateId + * @return + */ + List selectEvaluateProjectIds(String customerId, String dateId); + + /** + * 可根据状态筛选项目id + * + * @param customerId + * @param origin :issue,agency + * @param projectStatus 状态:待处理 pending,结案closed + * @return + */ + List selectClosedProjectIds(String customerId,String origin ,String projectStatus); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java index 3581f920b1..fb29f971de 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java @@ -35,6 +35,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -196,5 +197,42 @@ public class ProjectServiceImpl extends BaseServiceImpl selectEvaluateProjectIds(String customerId, String dateId) { + return baseDao.selectEvaluateProjectIds(customerId,dateId); + } + + /** + * 可根据状态筛选项目id + * + * @param customerId + * @param origin 来源:issue, agency + * @param projectStatus 状态:待处理 pending,结案closed + * @return + */ + @Override + public List selectClosedProjectIds(String customerId, String origin,String projectStatus) { + return baseDao.selectClosedProjectIds(customerId,origin,projectStatus); + } + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml index 3c5ebd884f..9344a3c440 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml @@ -162,4 +162,54 @@ and CUSTOMER_ID = #{customerId} and PARAMETER_KEY = #{parameterKey} + + + + + + + + + diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java index d5be20752e..43c87b57b5 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java @@ -178,7 +178,7 @@ public interface ProjectConstant { String EVALUATE_GOOD = "good"; String EVALUATE_BAD = "bad"; String EVALUATE_PERFECT = "perfect"; - + String EVALUATE="evaluate"; /** * 三个月,六个月,12个月 */ diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionDetailServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionDetailServiceImpl.java index acc06b2281..c1e07bf6bf 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionDetailServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionDetailServiceImpl.java @@ -20,16 +20,20 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.distributedlock.DistributedLock; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; -import com.epmet.commons.tools.constant.FieldConstant; -import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.scan.param.TextScanParamDTO; import com.epmet.commons.tools.scan.param.TextTaskDTO; import com.epmet.commons.tools.scan.result.SyncScanResult; +import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.IpUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.ScanContentUtils; import com.epmet.constant.ProjectConstant; @@ -39,25 +43,28 @@ import com.epmet.dao.ProjectSatisfactionStatisticsDao; import com.epmet.dto.ProjectSatisfactionDetailDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; -import com.epmet.entity.ProjectEntity; import com.epmet.entity.ProjectSatisfactionDetailEntity; import com.epmet.entity.ProjectSatisfactionStatisticsEntity; +import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetUserFeignClient; import com.epmet.feign.GovIssueOpenFeignClient; import com.epmet.redis.ProjectRedis; import com.epmet.redis.ProjectSatisfactionDetailRedis; +import com.epmet.send.SendMqMsgUtil; import com.epmet.service.ProjectSatisfactionDetailService; import com.epmet.service.ProjectSatisfactionStatisticsService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.redisson.api.RLock; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.stream.Collectors; @@ -91,6 +98,10 @@ public class ProjectSatisfactionDetailServiceImpl extends BaseServiceImpl page(Map params) { @@ -240,6 +251,21 @@ public class ProjectSatisfactionDetailServiceImpl extends BaseServiceImpl