diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/ItemResDetailFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/ItemResDetailFormDTO.java index 381efce3d1..a107080eea 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/ItemResDetailFormDTO.java +++ b/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; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ConcatTableHeaderDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ConcatTableHeaderDTO.java new file mode 100644 index 0000000000..b44f736854 --- /dev/null +++ b/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; +} + diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ItemResDetailConcatResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ItemResDetailConcatResultDTO.java new file mode 100644 index 0000000000..f8b5acb128 --- /dev/null +++ b/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 tableHeaderList; + private List> dataList; + + public ItemResDetailConcatResultDTO(){ + this.tableHeaderList=new ArrayList<>(); + this.dataList=new ArrayList<>(); + } +} + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetTDuckController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetTDuckController.java index ea90244205..2d5c8d6d12 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetTDuckController.java +++ b/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>> queryItemResDetail(@RequestBody ItemResDetailFormDTO formDTO){ + @PostMapping("itemresdetail-list") + public Result> queryItemResDetail(@RequestBody ItemResDetailFormDTO formDTO){ ValidatorUtils.validateEntity(formDTO,ProjectKeyCommonDTO.AddUserInternalGroup.class); - PageData> page=prUserProjectService.queryItemResDetail(formDTO); - return new Result>>().ok(page); + return new Result>().ok(prUserProjectService.queryItemResDetail(formDTO)); + } + + /** + * 联系人组件-查看详情 + * + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author yinzuomei + * @date 2021/9/22 2:57 下午 + */ + @PostMapping("itemresdetail-concat") + public Result queryItemResDetailConcat(@RequestBody ItemResDetailFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO,ProjectKeyCommonDTO.AddUserInternalGroup.class); + return new Result().ok(prUserProjectService.queryItemResDetailConcat(formDTO)); } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectDao.java index 6f246a7d4e..2c185e8db7 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectDao.java +++ b/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 { * @date 2021/9/22 9:42 上午 */ PrUserProjectEntity selectHeaderInfoByKey(@Param("key")String key); + + /** + * 当前问卷中所有的联系人组件 + * + * @param projectKey + * @return java.util.List + * @author yinzuomei + * @date 2021/9/22 3:04 下午 + */ + List selectCocatItems(String projectKey); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectEntity.java index c32091af26..5d06a44213 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectEntity.java +++ b/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; /** diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectItemEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectItemEntity.java index e01e439e9a..3138b101ab 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectItemEntity.java +++ b/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> regList; - + /** + * 组件类型:联系人组件:concat;输入型组件:input;图片型组件:image;辅助型组件:assist;选择性组件:choose + */ + private String moduleType; + /** + * 与type一致,手机号:mobile;邮箱:email;身份证号:id_card + */ + private String itemKey; } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectService.java index 55323276ea..b8f9aac6db 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectService.java +++ b/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 { * @author yinzuomei * @date 2021/9/22 1:37 下午 */ - PageData> queryItemResDetail(ItemResDetailFormDTO formDTO); + List 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); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrUserProjectServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrUserProjectServiceImpl.java index de5a424a77..681cff110e 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrUserProjectServiceImpl.java +++ b/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 resMap = new HashMap<>(); for (PrUserProjectResultEntity res : resultList) { JSONObject originalData = JSON.parseObject(res.getOriginalData()); - List 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 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().lambda().eq(PrUserProjectEntity::getKey, formDTO.getProjectKey())); return prUserProjectEntity; } @@ -543,8 +544,126 @@ public class PrUserProjectServiceImpl extends BaseServiceImpl> queryItemResDetail(ItemResDetailFormDTO formDTO) { - //todo - return null; + public List queryItemResDetail(ItemResDetailFormDTO formDTO) { + List resultList=baseDao.selectResults(formDTO.getProjectKey()); + if(CollectionUtils.isEmpty(resultList)){ + return new ArrayList<>(); + } + List 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 originalList= (List) 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 itemList=baseDao.selectCocatItems(formDTO.getProjectKey()); + if(CollectionUtils.isEmpty(itemList)){ + return new ItemResDetailConcatResultDTO(); + } + //答案 + List resultList=baseDao.selectResults(formDTO.getProjectKey()); + if(CollectionUtils.isEmpty(resultList)){ + return new ItemResDetailConcatResultDTO(); + } + + ItemResDetailConcatResultDTO resultDTO=new ItemResDetailConcatResultDTO(); + + List 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> dataList=new ArrayList<>(); + for(PrUserProjectResultEntity res:resultList){ + List 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 provinceCityList= (List) 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 inputMap= (List) 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; } } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmettduck/PrUserProjectDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmettduck/PrUserProjectDao.xml index 55ddf7c707..dde753c53f 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmettduck/PrUserProjectDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmettduck/PrUserProjectDao.xml @@ -35,6 +35,24 @@ order by i.sort asc + +