diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/EvaluationListFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/EvaluationListFormDTO.java new file mode 100644 index 0000000000..57f5fbb8ee --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/EvaluationListFormDTO.java @@ -0,0 +1,31 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 项目跟踪-项目满意度评价列表-接口入参 + * @Author sun + */ +@Data +public class EvaluationListFormDTO implements Serializable { + private static final long serialVersionUID = 4859779755214502427L; + + @NotBlank(message = "项目Id不能为空") + private String projectId; + + /** + * 请求页码 + * */ + @Min(1) + private int pageNo; + + /** + * 每页多少条数据 + * */ + private int pageSize = 20; +} + diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EvaluationListResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EvaluationListResultDTO.java new file mode 100644 index 0000000000..0a9dd49d82 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EvaluationListResultDTO.java @@ -0,0 +1,65 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + + +/** + * 项目跟踪-项目满意度评价列表-接口返参 + * + * @author sun + */ +@Data +public class EvaluationListResultDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 评价用户id + */ + private String userId = ""; + + /** + * 评论人员全称(街道-姓氏先生/女士) + */ + private String userNickName = ""; + + /** + * 满意程度(不满意:bad、基本满意:good、非常满意:perfect) + */ + private String satisfaction = ""; + + /** + * 评价时间 + */ + private Long evaluateTime; + + /** + * 评价内容 + */ + private String evaluateContent = ""; + + /** + * 头像 + */ + private String userHeadPhoto = ""; + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/pom.xml b/epmet-module/gov-project/gov-project-server/pom.xml index 7fa15bd39f..ef9a20e890 100644 --- a/epmet-module/gov-project/gov-project-server/pom.xml +++ b/epmet-module/gov-project/gov-project-server/pom.xml @@ -66,6 +66,12 @@ 2.0.0 compile + + com.epmet + epmet-user-client + 2.0.0 + compile + 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 e9b81ef0f9..1c2b314f41 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 @@ -68,4 +68,9 @@ public interface ProjectConstant { * 是否处理-已处理 */ String HANDLE = "handle"; + + /** + * 调用epmet-user服务查询数据失败 + */ + String SELECT_USERINFO_EXCEPTION = "获取用户昵称、头像失败"; } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java index b862ba1085..9f2e75ed7f 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java @@ -9,6 +9,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.service.ProjectProcessService; +import com.epmet.service.ProjectSatisfactionDetailService; import com.epmet.service.ProjectTraceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -33,6 +34,9 @@ public class ProjectTraceController { @Autowired private ProjectProcessService projectProcessService; + @Autowired + private ProjectSatisfactionDetailService projectSatisfactionDetailService; + /** * 待处理项目列表 * @@ -137,7 +141,6 @@ public class ProjectTraceController { return new Result(); } - /** * @param formDTO * @return @@ -150,5 +153,18 @@ public class ProjectTraceController { ValidatorUtils.validateEntity(formDTO); return new Result>().ok(projectProcessService.progressList(formDTO)); } + + /** + * @param formDTO + * @return + * @Author sun + * @Description 项目跟踪-项目满意度评价列表 + **/ + @PostMapping("evaluationlist") + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PROJECT_TRACE_DETAIL) + public Result> evaluationList(@LoginUser TokenDto tokenDTO, @RequestBody EvaluationListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + return new Result>().ok(projectSatisfactionDetailService.evaluationList(formDTO)); + } } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionDetailDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionDetailDao.java index aacb3e4d87..514c7060b1 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionDetailDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionDetailDao.java @@ -18,8 +18,12 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.EvaluationListResultDTO; import com.epmet.entity.ProjectSatisfactionDetailEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 项目满意度调查记录表 @@ -29,5 +33,12 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface ProjectSatisfactionDetailDao extends BaseDao { - + + /** + * @param projectId + * @return + * @Author sun + * @Description 根据项目Id查询项目评价列表数据 + **/ + List getEvaluationListByProjectId(@Param("projectId") String projectId); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java index cc2404269e..11f0f28937 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java @@ -1,8 +1,15 @@ package com.epmet.feign; import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.UserResiInfoListFormDTO; +import com.epmet.dto.result.UserResiInfoResultDTO; import com.epmet.feign.fallback.EpmetUserFeignClientFallBack; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; /** * @Description 调用epmet-user服务 @@ -11,6 +18,12 @@ import org.springframework.cloud.openfeign.FeignClient; @FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallback = EpmetUserFeignClientFallBack.class) public interface EpmetUserFeignClient { - - + /** + * @param userResiInfoListFormDTO + * @return com.epmet.commons.tools.utils.Result> + * @Author sun + * @Description 根据userId集合查询用户信息 + **/ + @PostMapping("/epmetuser/userresiinfo/getuserresiinfolist") + Result> getUserResiInfoList(@RequestBody UserResiInfoListFormDTO userResiInfoListFormDTO); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallBack.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallBack.java index cfb62dcabf..88e9590eaf 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallBack.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallBack.java @@ -1,8 +1,15 @@ package com.epmet.feign.fallback; +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.ModuleUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.UserResiInfoListFormDTO; +import com.epmet.dto.result.UserResiInfoResultDTO; import com.epmet.feign.EpmetUserFeignClient; import org.springframework.stereotype.Component; +import java.util.List; + /** * @Description 调用epmet-user服务 * @Author sun @@ -10,4 +17,8 @@ import org.springframework.stereotype.Component; @Component public class EpmetUserFeignClientFallBack implements EpmetUserFeignClient { + @Override + public Result> getUserResiInfoList(UserResiInfoListFormDTO userResiInfoListFormDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getUserResiInfoList", userResiInfoListFormDTO); + } } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionDetailService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionDetailService.java index a1fef8ff1c..94decfd804 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionDetailService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionDetailService.java @@ -20,6 +20,8 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.ProjectSatisfactionDetailDTO; +import com.epmet.dto.form.EvaluationListFormDTO; +import com.epmet.dto.result.EvaluationListResultDTO; import com.epmet.entity.ProjectSatisfactionDetailEntity; import java.util.List; @@ -92,4 +94,12 @@ public interface ProjectSatisfactionDetailService extends BaseService evaluationList(EvaluationListFormDTO formDTO); } \ No newline at end of file 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 8a0e4705a8..7ad9452c05 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,12 +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.tools.constant.FieldConstant; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.constant.ProjectConstant; import com.epmet.dao.ProjectSatisfactionDetailDao; import com.epmet.dto.ProjectSatisfactionDetailDTO; +import com.epmet.dto.form.EvaluationListFormDTO; +import com.epmet.dto.form.UserResiInfoListFormDTO; +import com.epmet.dto.result.EvaluationListResultDTO; +import com.epmet.dto.result.UserResiInfoResultDTO; import com.epmet.entity.ProjectSatisfactionDetailEntity; +import com.epmet.feign.EpmetUserFeignClient; import com.epmet.redis.ProjectSatisfactionDetailRedis; import com.epmet.service.ProjectSatisfactionDetailService; import org.apache.commons.lang3.StringUtils; @@ -33,9 +41,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 项目满意度调查记录表 @@ -48,6 +58,8 @@ public class ProjectSatisfactionDetailServiceImpl extends BaseServiceImpl page(Map params) { @@ -101,4 +113,38 @@ public class ProjectSatisfactionDetailServiceImpl extends BaseServiceImpl evaluationList(EvaluationListFormDTO formDTO) { + //1:根据项目Id查询项目评价列表,按时间倒序 + List evaluationList = baseDao.getEvaluationListByProjectId(formDTO.getProjectId()); + if (null == evaluationList || evaluationList.size() < NumConstant.ONE) { + return new ArrayList<>(); + } + //2:调用epmet-user服务 获取用户头像 昵称 + //2.1:遍历获取所有的userId + List userIds = evaluationList.stream().map(EvaluationListResultDTO::getUserId).collect(Collectors.toList()); + //2.2:获取所有用户的头像 昵称 + UserResiInfoListFormDTO userResiInfoListFormDTO = new UserResiInfoListFormDTO(); + userResiInfoListFormDTO.setUserIdList(userIds); + List userResiInfoList = epmetUserFeignClient.getUserResiInfoList(userResiInfoListFormDTO).getData(); + if (null == userResiInfoList || userResiInfoList.size() < NumConstant.ONE) { + throw new RenException(ProjectConstant.SELECT_USERINFO_EXCEPTION); + } + //3:将每个用户的头像 昵称放到对应实体中返回给前台 + List resultList = evaluationList.stream().flatMap(evaluation -> userResiInfoList.stream().filter(user -> + evaluation.getUserId().equals(user.getUserId())).map(userInfo -> { + EvaluationListResultDTO resultDTO = ConvertUtils.sourceToTarget(evaluation, EvaluationListResultDTO.class); + resultDTO.setUserNickName(null == userInfo.getShowName() ? "" : userInfo.getShowName()); + resultDTO.setUserHeadPhoto(null == userInfo.getHeadPhoto() ? "" : userInfo.getHeadPhoto()); + return resultDTO; + })).collect(Collectors.toList()); + return resultList; + } + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionDetailDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionDetailDao.xml index a644923a30..e2ddbd3417 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionDetailDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionDetailDao.xml @@ -16,5 +16,19 @@ + + \ No newline at end of file