Browse Source

项目跟踪-项目满意度评价列表

dev
sunyuchao 5 years ago
parent
commit
e7ace76d26
  1. 31
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/EvaluationListFormDTO.java
  2. 65
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EvaluationListResultDTO.java
  3. 6
      epmet-module/gov-project/gov-project-server/pom.xml
  4. 5
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java
  5. 18
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java
  6. 11
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionDetailDao.java
  7. 17
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java
  8. 11
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/feign/fallback/EpmetUserFeignClientFallBack.java
  9. 10
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionDetailService.java
  10. 48
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionDetailServiceImpl.java
  11. 14
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionDetailDao.xml

31
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;
}

65
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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 = "";
}

6
epmet-module/gov-project/gov-project-server/pom.xml

@ -66,6 +66,12 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-user-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

5
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 = "获取用户昵称、头像失败";
}

18
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<List<ProcesslistResultDTO>>().ok(projectProcessService.progressList(formDTO));
}
/**
* @param formDTO
* @return
* @Author sun
* @Description 项目跟踪-项目满意度评价列表
**/
@PostMapping("evaluationlist")
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_PROJECT_TRACE_DETAIL)
public Result<List<EvaluationListResultDTO>> evaluationList(@LoginUser TokenDto tokenDTO, @RequestBody EvaluationListFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<List<EvaluationListResultDTO>>().ok(projectSatisfactionDetailService.evaluationList(formDTO));
}
}

11
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;
/**
* 项目满意度调查记录表
@ -30,4 +34,11 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ProjectSatisfactionDetailDao extends BaseDao<ProjectSatisfactionDetailEntity> {
/**
* @param projectId
* @return
* @Author sun
* @Description 根据项目Id查询项目评价列表数据
**/
List<EvaluationListResultDTO> getEvaluationListByProjectId(@Param("projectId") String projectId);
}

17
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<java.util.List < com.epmet.dto.UserResiInfoDTO>>
* @Author sun
* @Description 根据userId集合查询用户信息
**/
@PostMapping("/epmetuser/userresiinfo/getuserresiinfolist")
Result<List<UserResiInfoResultDTO>> getUserResiInfoList(@RequestBody UserResiInfoListFormDTO userResiInfoListFormDTO);
}

11
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<List<UserResiInfoResultDTO>> getUserResiInfoList(UserResiInfoListFormDTO userResiInfoListFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getUserResiInfoList", userResiInfoListFormDTO);
}
}

10
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<ProjectSat
* @date 2020-05-11
*/
void delete(String[] ids);
/**
* @param formDTO
* @return
* @Author sun
* @Description 项目跟踪-项目满意度评价列表
**/
List<EvaluationListResultDTO> evaluationList(EvaluationListFormDTO formDTO);
}

48
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<Projec
@Autowired
private ProjectSatisfactionDetailRedis projectSatisfactionDetailRedis;
@Autowired
private EpmetUserFeignClient epmetUserFeignClient;
@Override
public PageData<ProjectSatisfactionDetailDTO> page(Map<String, Object> params) {
@ -101,4 +113,38 @@ public class ProjectSatisfactionDetailServiceImpl extends BaseServiceImpl<Projec
baseDao.deleteBatchIds(Arrays.asList(ids));
}
/**
* @param formDTO
* @return
* @Author sun
* @Description 项目跟踪-项目满意度评价列表
**/
@Override
public List<EvaluationListResultDTO> evaluationList(EvaluationListFormDTO formDTO) {
//1:根据项目Id查询项目评价列表,按时间倒序
List<EvaluationListResultDTO> evaluationList = baseDao.getEvaluationListByProjectId(formDTO.getProjectId());
if (null == evaluationList || evaluationList.size() < NumConstant.ONE) {
return new ArrayList<>();
}
//2:调用epmet-user服务 获取用户头像 昵称
//2.1:遍历获取所有的userId
List<String> userIds = evaluationList.stream().map(EvaluationListResultDTO::getUserId).collect(Collectors.toList());
//2.2:获取所有用户的头像 昵称
UserResiInfoListFormDTO userResiInfoListFormDTO = new UserResiInfoListFormDTO();
userResiInfoListFormDTO.setUserIdList(userIds);
List<UserResiInfoResultDTO> userResiInfoList = epmetUserFeignClient.getUserResiInfoList(userResiInfoListFormDTO).getData();
if (null == userResiInfoList || userResiInfoList.size() < NumConstant.ONE) {
throw new RenException(ProjectConstant.SELECT_USERINFO_EXCEPTION);
}
//3:将每个用户的头像 昵称放到对应实体中返回给前台
List<EvaluationListResultDTO> 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;
}
}

14
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionDetailDao.xml

@ -16,5 +16,19 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="getEvaluationListByProjectId" resultType="com.epmet.dto.result.EvaluationListResultDTO">
SELECT
CREATED_BY AS "userId",
SATISFACTION AS "satisfaction",
UNIX_TIMESTAMP(CREATED_TIME) AS "evaluateTime",
`COMMENT` AS "evaluateContent"
FROM
project_satisfaction_detail
WHERE
DEL_FLAG = '0'
AND PROJECT_ID = #{projectId}
ORDER BY CREATED_TIME DESC
</select>
</mapper>
Loading…
Cancel
Save