Browse Source

Merge remote-tracking branch 'origin/dev_question_naire' into develop

master
yinzuomei 4 years ago
parent
commit
781fcc28ab
  1. 9
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/ItemResDetailFormDTO.java
  2. 27
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ConcatTableHeaderDTO.java
  3. 25
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ItemResDetailConcatResultDTO.java
  4. 27
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetTDuckController.java
  5. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectDao.java
  6. 3
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectEntity.java
  7. 11
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectItemEntity.java
  8. 17
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectService.java
  9. 151
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrUserProjectServiceImpl.java
  10. 18
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmettduck/PrUserProjectDao.xml

9
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/ItemResDetailFormDTO.java

@ -3,7 +3,6 @@ package com.epmet.dataaggre.dto.epmettduck.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @Description 问卷-数据分析-查看详情
@ -25,9 +24,9 @@ public class ItemResDetailFormDTO extends ProjectKeyCommonDTO{
/**
* 09.22目前产品没要求分页
*/
@NotNull(message = "pageNo不能为空",groups = AddUserInternalGroup.class)
private Integer pageNo;
@NotNull(message = "pageSize不能为空",groups = AddUserInternalGroup.class)
private Integer pageSize;
//@NotNull(message = "pageNo不能为空",groups = AddUserInternalGroup.class)
//private Integer pageNo;
//@NotNull(message = "pageSize不能为空",groups = AddUserInternalGroup.class)
//private Integer pageSize;
}

27
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ConcatTableHeaderDTO.java

@ -0,0 +1,27 @@
package com.epmet.dataaggre.dto.epmettduck.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 表头
* @Author yinzuomei
* @Date 2021/9/22 3:41 下午
*/
@Data
public class ConcatTableHeaderDTO implements Serializable {
private static final long serialVersionUID = -1133629000511948034L;
/**
* 显示名称
*/
private String label;
/**
* 表单项Id
*/
private String formItemId;
private String type;
}

25
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ItemResDetailConcatResultDTO.java

@ -0,0 +1,25 @@
package com.epmet.dataaggre.dto.epmettduck.result;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @Description TODO
* @Author yinzuomei
* @Date 2021/9/22 2:54 下午
*/
@Data
public class ItemResDetailConcatResultDTO implements Serializable {
private static final long serialVersionUID = -3695200094740706700L;
private List<ConcatTableHeaderDTO> tableHeaderList;
private List<List<String>> dataList;
public ItemResDetailConcatResultDTO(){
this.tableHeaderList=new ArrayList<>();
this.dataList=new ArrayList<>();
}
}

27
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetTDuckController.java

@ -1,16 +1,12 @@
package com.epmet.dataaggre.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.epmettduck.PrPublishRangeDTO;
import com.epmet.dataaggre.dto.epmettduck.form.*;
import com.epmet.dataaggre.dto.epmettduck.result.AnalysisReportResDTO;
import com.epmet.dataaggre.dto.epmettduck.result.GetRangeResultDTO;
import com.epmet.dataaggre.dto.epmettduck.result.ProjectProfileResultDTO;
import com.epmet.dataaggre.dto.epmettduck.result.TDuckListResultDTO;
import com.epmet.dataaggre.dto.epmettduck.result.*;
import com.epmet.dataaggre.entity.epmettduck.PrUserProjectEntity;
import com.epmet.dataaggre.entity.epmettduck.PrUserProjectItemEntity;
import com.epmet.dataaggre.service.epmettduck.PrUserProjectItemService;
@ -122,10 +118,23 @@ public class EpmetTDuckController {
* @author yinzuomei
* @date 2021/9/22 1:37 下午
*/
@PostMapping("itemresdetail")
public Result<PageData<List<String>>> queryItemResDetail(@RequestBody ItemResDetailFormDTO formDTO){
@PostMapping("itemresdetail-list")
public Result<List<String>> queryItemResDetail(@RequestBody ItemResDetailFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO,ProjectKeyCommonDTO.AddUserInternalGroup.class);
PageData<List<String>> page=prUserProjectService.queryItemResDetail(formDTO);
return new Result<PageData<List<String>>>().ok(page);
return new Result<List<String>>().ok(prUserProjectService.queryItemResDetail(formDTO));
}
/**
* 联系人组件-查看详情
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dataaggre.dto.epmettduck.result.ItemResDetailConcatResultDTO>
* @author yinzuomei
* @date 2021/9/22 2:57 下午
*/
@PostMapping("itemresdetail-concat")
public Result<ItemResDetailConcatResultDTO> queryItemResDetailConcat(@RequestBody ItemResDetailFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO,ProjectKeyCommonDTO.AddUserInternalGroup.class);
return new Result<ItemResDetailConcatResultDTO>().ok(prUserProjectService.queryItemResDetailConcat(formDTO));
}
}

10
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectDao.java

@ -72,4 +72,14 @@ public interface PrUserProjectDao extends BaseDao<PrUserProjectEntity> {
* @date 2021/9/22 9:42 上午
*/
PrUserProjectEntity selectHeaderInfoByKey(@Param("key")String key);
/**
* 当前问卷中所有的联系人组件
*
* @param projectKey
* @return java.util.List<com.epmet.dataaggre.dto.epmettduck.result.AnalysisReportResDTO>
* @author yinzuomei
* @date 2021/9/22 3:04 下午
*/
List<AnalysisReportResDTO> selectCocatItems(String projectKey);
}

3
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectEntity.java

@ -17,6 +17,7 @@
package com.epmet.dataaggre.entity.epmettduck;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
@ -51,6 +52,7 @@ public class PrUserProjectEntity extends BaseEpmetEntity {
/**
* 项目code
*/
@TableField("`key`")
private String key;
/**
@ -71,6 +73,7 @@ public class PrUserProjectEntity extends BaseEpmetEntity {
/**
* 项目描述
*/
@TableField("`describe`")
private String describe;
/**

11
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectItemEntity.java

@ -19,7 +19,6 @@ package com.epmet.dataaggre.entity.epmettduck;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import com.epmet.dataaggre.dto.epmettduck.ProjectItemTypeEnum;
@ -30,7 +29,6 @@ import lombok.experimental.Accessors;
import lombok.experimental.FieldNameConstants;
import org.apache.ibatis.type.EnumTypeHandler;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -124,5 +122,12 @@ public class PrUserProjectItemEntity extends BaseEpmetEntity{
@TableField(typeHandler = JacksonTypeHandler.class)
private List<Map<String, Object>> regList;
/**
* 组件类型联系人组件concat输入型组件input;图片型组件image;辅助型组件assist选择性组件choose
*/
private String moduleType;
/**
* 与type一致手机号mobile邮箱email身份证号id_card
*/
private String itemKey;
}

17
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectService.java

@ -23,10 +23,7 @@ import com.epmet.dataaggre.dto.epmettduck.PrUserProjectDTO;
import com.epmet.dataaggre.dto.epmettduck.form.ItemResDetailFormDTO;
import com.epmet.dataaggre.dto.epmettduck.form.TDuckHeaderInfoFormDTO;
import com.epmet.dataaggre.dto.epmettduck.form.TDuckListFormDTO;
import com.epmet.dataaggre.dto.epmettduck.result.AnalysisReportResDTO;
import com.epmet.dataaggre.dto.epmettduck.result.GetRangeResultDTO;
import com.epmet.dataaggre.dto.epmettduck.result.ProjectProfileResultDTO;
import com.epmet.dataaggre.dto.epmettduck.result.TDuckListResultDTO;
import com.epmet.dataaggre.dto.epmettduck.result.*;
import com.epmet.dataaggre.entity.epmettduck.PrUserProjectEntity;
import java.util.List;
@ -155,5 +152,15 @@ public interface PrUserProjectService extends BaseService<PrUserProjectEntity> {
* @author yinzuomei
* @date 2021/9/22 1:37 下午
*/
PageData<List<String>> queryItemResDetail(ItemResDetailFormDTO formDTO);
List<String> queryItemResDetail(ItemResDetailFormDTO formDTO);
/**
* 联系人组件
*
* @param formDTO
* @return com.epmet.dataaggre.dto.epmettduck.result.ItemResDetailConcatResultDTO
* @author yinzuomei
* @date 2021/9/22 2:57 下午
*/
ItemResDetailConcatResultDTO queryItemResDetailConcat(ItemResDetailFormDTO formDTO);
}

151
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrUserProjectServiceImpl.java

@ -376,21 +376,22 @@ public class PrUserProjectServiceImpl extends BaseServiceImpl<PrUserProjectDao,
Map<String, Integer> resMap = new HashMap<>();
for (PrUserProjectResultEntity res : resultList) {
JSONObject originalData = JSON.parseObject(res.getOriginalData());
List<CascaderDTO> dtoList = JSON.parseArray(originalData.get(key).toString(), CascaderDTO.class);
if(CollectionUtils.isEmpty(dtoList)){
log.info(String.format("当前userId:%s,没有填写本题itemId:%s",res.getUserId(),key));
continue;
}
if(originalData.containsKey(key)){
List<CascaderDTO> dtoList = JSON.parseArray(originalData.get(key).toString(), CascaderDTO.class);
if(CollectionUtils.isEmpty(dtoList)){
log.info(String.format("当前userId:%s,没有填写本题itemId:%s",res.getUserId(),key));
continue;
}
for (CascaderDTO cascaderDTO : dtoList) {
if (null != cascaderDTO && !CollectionUtils.isEmpty(cascaderDTO.getLabels())) {
totalCount += 1;
String pathName = StringUtils.join(cascaderDTO.getLabels(), StringUtils.isNotBlank(cascaderExpandStruct.getSeparator()) ? cascaderExpandStruct.getSeparator() : StrConstant.HYPHEN);
Integer count = resMap.get(pathName);
resMap.put(pathName, count == null ? 1 : count + 1);
for (CascaderDTO cascaderDTO : dtoList) {
if (null != cascaderDTO && !CollectionUtils.isEmpty(cascaderDTO.getLabels())) {
totalCount += 1;
String pathName = StringUtils.join(cascaderDTO.getLabels(), StringUtils.isNotBlank(cascaderExpandStruct.getSeparator()) ? cascaderExpandStruct.getSeparator() : StrConstant.HYPHEN);
Integer count = resMap.get(pathName);
resMap.put(pathName, count == null ? 1 : count + 1);
}
}
}
}
detail.put("totalCount", totalCount);
detail.put("profile", resMap);
@ -497,7 +498,7 @@ public class PrUserProjectServiceImpl extends BaseServiceImpl<PrUserProjectDao,
*/
@Override
public PrUserProjectEntity headerInfo(TDuckHeaderInfoFormDTO formDTO) {
PrUserProjectEntity prUserProjectEntity = baseDao.selectHeaderInfoByKey(formDTO.getProjectKey());
PrUserProjectEntity prUserProjectEntity = baseDao.selectOne(new QueryWrapper<PrUserProjectEntity>().lambda().eq(PrUserProjectEntity::getKey, formDTO.getProjectKey()));
return prUserProjectEntity;
}
@ -543,8 +544,126 @@ public class PrUserProjectServiceImpl extends BaseServiceImpl<PrUserProjectDao,
* @date 2021/9/22 1:37 下午
*/
@Override
public PageData<List<String>> queryItemResDetail(ItemResDetailFormDTO formDTO) {
//todo
return null;
public List<String> queryItemResDetail(ItemResDetailFormDTO formDTO) {
List<PrUserProjectResultEntity> resultList=baseDao.selectResults(formDTO.getProjectKey());
if(CollectionUtils.isEmpty(resultList)){
return new ArrayList<>();
}
List<String> stringList=new ArrayList<>();
String key="field".concat(formDTO.getFormItemId());
for(PrUserProjectResultEntity res:resultList){
JSONObject originalData = JSON.parseObject(res.getOriginalData());
if(ProjectItemTypeEnum.INPUT.getValue().equals(formDTO.getType())
||ProjectItemTypeEnum.TEXTAREA.getValue().equals(formDTO.getType())
||ProjectItemTypeEnum.TIME.getValue().equals(formDTO.getType())
||ProjectItemTypeEnum.DATE.getValue().equals(formDTO.getType())){
if(originalData.containsKey(key)){
stringList.add((String) originalData.get(key));
continue;
}
}else if(ProjectItemTypeEnum.TIME_RANGE.getValue().equals(formDTO.getType())
||ProjectItemTypeEnum.DATE_RANGE.getValue().equals(formDTO.getType())){
if(originalData.containsKey(key)){
List<String> originalList= (List<String>) originalData.get(key);
if(!CollectionUtils.isEmpty(originalList)){
String rangeStr=StringUtils.join(originalList,StrConstant.COMMA);
stringList.add(rangeStr);
}
}
}
}
return stringList;
}
/**
* 联系人组件
*
* @param formDTO
* @return com.epmet.dataaggre.dto.epmettduck.result.ItemResDetailConcatResultDTO
* @author yinzuomei
* @date 2021/9/22 2:57 下午
*/
@Override
public ItemResDetailConcatResultDTO queryItemResDetailConcat(ItemResDetailFormDTO formDTO) {
// 联系人题目
List<AnalysisReportResDTO> itemList=baseDao.selectCocatItems(formDTO.getProjectKey());
if(CollectionUtils.isEmpty(itemList)){
return new ItemResDetailConcatResultDTO();
}
//答案
List<PrUserProjectResultEntity> resultList=baseDao.selectResults(formDTO.getProjectKey());
if(CollectionUtils.isEmpty(resultList)){
return new ItemResDetailConcatResultDTO();
}
ItemResDetailConcatResultDTO resultDTO=new ItemResDetailConcatResultDTO();
List<ConcatTableHeaderDTO> tableHeaderList=new ArrayList<>();
for(AnalysisReportResDTO item:itemList){
ConcatTableHeaderDTO headerDTO=new ConcatTableHeaderDTO();
headerDTO.setFormItemId(item.getFormItemId());
headerDTO.setLabel(item.getLabel());
headerDTO.setType(item.getType());
tableHeaderList.add(headerDTO);
}
List<List<String>> dataList=new ArrayList<>();
for(PrUserProjectResultEntity res:resultList){
List<String> userAnswer=new ArrayList<>();
JSONObject originalData = JSON.parseObject(res.getOriginalData());
for(ConcatTableHeaderDTO header:tableHeaderList){
String key="field".concat(header.getFormItemId());
//手机号、邮箱、身份证、单行文本: INPUT
if(ProjectItemTypeEnum.INPUT.getValue().equals(header.getType())){
if(originalData.containsKey(key)){
if(StringUtils.isNotBlank(originalData.get(key).toString())){
userAnswer.add((String) originalData.get(key));
}else{
userAnswer.add(StrConstant.EPMETY_STR);
}
}else{
log.warn("没有当前的key:,可能用户没填写吧"+key);
userAnswer.add(StrConstant.HYPHEN);
}
}
//省市联动: PROVINCE_CITY
if(ProjectItemTypeEnum.PROVINCE_CITY.getValue().equals(header.getType())){
if(originalData.containsKey(key)){
List<String> provinceCityList= (List<String>) originalData.get(key);
if(!CollectionUtils.isEmpty(provinceCityList)){
userAnswer.add(StringUtils.join(provinceCityList,StrConstant.HYPHEN));
}else{
userAnswer.add(StrConstant.EPMETY_STR);
}
}else{
log.warn("没有当前的key:,可能用户没填写吧"+key);
userAnswer.add(StrConstant.HYPHEN);
}
}
//地理位置:INPUT_MAP
if(ProjectItemTypeEnum.INPUT_MAP.getValue().equals(header.getType())){
if(originalData.containsKey(key)){
List<String> inputMap= (List<String>) originalData.get(key);
log.info("地理位置:"+JSON.toJSONString(inputMap,true));
if (!CollectionUtils.isEmpty(inputMap) && inputMap.size() == 3) {
userAnswer.add(inputMap.get(2));
}else{
userAnswer.add(StrConstant.EPMETY_STR);
}
}else{
log.warn("没有当前的key:,可能用户没填写吧"+key);
userAnswer.add(StrConstant.HYPHEN);
}
}
}
dataList.add(userAnswer);
}
resultDTO.setTableHeaderList(tableHeaderList);
resultDTO.setDataList(dataList);
return resultDTO;
}
}

18
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmettduck/PrUserProjectDao.xml

@ -35,6 +35,24 @@
order by i.sort asc
</select>
<!-- 当前问卷中所有的联系人组件 -->
<select id="selectCocatItems" parameterType="java.lang.String" resultType="com.epmet.dataaggre.dto.epmettduck.result.AnalysisReportResDTO">
select
i.project_key,
i.form_item_id,
i.type,
i.label,
i.is_display_type,
i.show_label,
i.required,
i.sort,
i.expand
from pr_user_project_item i
where i.del_flag='0'
and i.project_key=#{projectKey}
and i.module_type='concat'
order by i.sort asc
</select>
<!-- 调查问卷的答题结果 -->
<select id="selectResults" parameterType="java.lang.String" resultType="com.epmet.dataaggre.entity.epmettduck.PrUserProjectResultEntity">
select

Loading…
Cancel
Save