Browse Source

专家库专家详情信息

专家证明材料提交接口
tags/24080901
liuxinxin 1 year ago
parent
commit
3249ad0462
21 changed files with 1132 additions and 51 deletions
  1. +476
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/assembler/ExpertUserInfoAssembler.java
  2. +0
    -19
      pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertAvoidCompanyController.java
  3. +15
    -4
      pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertController.java
  4. +46
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/helper/ExpertInfoCommonHelper.java
  5. +65
    -6
      pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertManage.java
  6. +37
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/AdminModifyExpertInfoCmd.java
  7. +61
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertAdminExpertManageQueryCmd.java
  8. +16
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertDeliveryDealCmd.java
  9. +18
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertInfoModifyApplyDealCmd.java
  10. +37
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertInfoModifyCmd.java
  11. +22
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertIntentionApplyDealCmd.java
  12. +22
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertRecommendProofSaveCmd.java
  13. +35
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertStorageDealCmd.java
  14. +60
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/SaveExpertAdminCmd.java
  15. +39
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/model/dto/ExpertFullInfoAllDTO.java
  16. +31
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/ExpertRecommendProofSubmitRequest.java
  17. +45
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/model/vo/ExpertFullInfoVO.java
  18. +16
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/service/ExpertInfoService.java
  19. +72
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/expert/service/impl/ExpertInfoServiceImpl.java
  20. +0
    -3
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/controller/ProjectLibController.java
  21. +19
    -19
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectLibManage.java

+ 476
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/assembler/ExpertUserInfoAssembler.java View File

@@ -0,0 +1,476 @@
package com.ningdatech.pmapi.expert.assembler;

//import com.ningdatech.emapi.common.enumeration.BoolDisplayEnum;
//import com.ningdatech.emapi.common.helper.RegionCache;
//import com.ningdatech.emapi.common.utils.JSONObject;
//import com.ningdatech.emapi.expert.constants.DictExpertInfoTypeEnum;
//import com.ningdatech.emapi.expert.constants.ExpertApplyTypeEnum;
//import com.ningdatech.emapi.expert.constants.ExpertTagEnum;
//import com.ningdatech.emapi.expert.entity.*;
//import com.ningdatech.emapi.expert.entity.domain.*;
//import com.ningdatech.emapi.expert.entity.dto.*;
//import com.ningdatech.emapi.expert.entity.vo.ExpertFullInfoVO;
//import com.ningdatech.emapi.sys.file.entity.FileBasicInfo;
//import com.ningdatech.emapi.sys.file.entity.vo.result.AttachFileVo;
//import com.ningdatech.emapi.sys.meta.entity.RegionDtoMapKey;
//import com.ningdatech.emapi.sys.meta.entity.dto.DictionaryDTO;
//import com.ningdatech.emapi.sys.meta.entity.dto.TagDTO;
//import com.ningdatech.emapi.sys.meta.helper.DictionaryCache;
//import com.ningdatech.emapi.sys.meta.helper.TagCache;

import com.alibaba.fastjson.JSONObject;
import com.ningdatech.file.entity.vo.result.AttachFileVo;
import com.ningdatech.pmapi.common.constant.BoolDisplayEnum;
import com.ningdatech.pmapi.expert.entity.ExpertAvoidCompany;
import com.ningdatech.pmapi.expert.entity.ExpertIntentionWorkRegion;
import com.ningdatech.pmapi.expert.entity.ExpertUserFullInfo;
import com.ningdatech.pmapi.expert.model.*;
import com.ningdatech.pmapi.expert.model.dto.*;
import com.ningdatech.pmapi.expert.model.vo.ExpertFullInfoVO;
import com.ningdatech.pmapi.meta.constant.DictExpertInfoTypeEnum;
import com.ningdatech.pmapi.meta.constant.ExpertTagEnum;
import com.ningdatech.pmapi.meta.helper.DictionaryCache;
import com.ningdatech.pmapi.meta.helper.TagCache;
import com.ningdatech.pmapi.meta.model.ExpertRegionInfo;
import com.ningdatech.pmapi.meta.model.dto.DictionaryDTO;
import com.ningdatech.pmapi.meta.model.dto.TagDTO;
import com.ningdatech.pmapi.meta.model.entity.ExpertDictionary;
import com.ningdatech.pmapi.meta.model.entity.ExpertTag;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
* @author liuxinxin
* @date 2022/7/27 上午10:46
*/
@Component
@RequiredArgsConstructor
public class ExpertUserInfoAssembler {

private final TagCache tagCache;
private final DictionaryCache dictionaryCache;
// private final RegionCache regionCache;

public ExpertFullInfoVO buildExpertFullInfoVO(List<AttachFileVo> attachFiles
, ExpertFullInfoAllDTO expertUserFullInfoAll) {
ExpertUserFullInfoDTO expertUserInfoDTO = expertUserFullInfoAll.getExpertUserInfoDTO();
// 字典字典段map
Map<String, List<DictionaryFieldInfo>> dictionaryFieldInfoMap =
buildDictionaryFieldInfoMap(expertUserFullInfoAll.getExpertDictionaryList());
// 专家文件资料map
Map<Long, FileBasicInfo> fileBasicInfoMap = buildFileBasicInfoMap(attachFiles);
// 专家标签字段map
Map<String, List<TagFieldInfo>> tagFieldInfoMap = buildTagFieldInfoMap(expertUserFullInfoAll.getExpertTagList());
// 专家履职意向地
List<ExpertRegionDTO> expertIntentionWorkRegionInfo =
expertUserFullInfoAll.getExpertIntentionWorkRegionInfo();
// 专家回避单位列表
List<ExpertAvoidCompanyDTO> expertAvoidCompanyList = expertUserFullInfoAll.getExpertAvoidCompanyList();
// 基本信息
ExpertBasicInfo basicInfo = buildExpertBasicInfo(expertUserInfoDTO, dictionaryFieldInfoMap, tagFieldInfoMap, expertIntentionWorkRegionInfo, fileBasicInfoMap);
// 学历信息
ExpertEduInfo eduInfo = buildExpertEduInfo(expertUserInfoDTO, dictionaryFieldInfoMap, fileBasicInfoMap);
// 职业信息
ExpertJobInfo jobInfo = buildExpertJobInfo(expertUserInfoDTO, dictionaryFieldInfoMap);
// 专业信息
ExpertProfessionalInfo professionalInfo =
buildExpertProfessionalInfo(expertUserInfoDTO, dictionaryFieldInfoMap, tagFieldInfoMap
, fileBasicInfoMap, expertAvoidCompanyList);
// 推荐信息
ExpertRecommendInfo recommendInfo = new ExpertRecommendInfo();
recommendInfo.setRecommendedWay(dictionaryFieldInfoMap.get(DictExpertInfoTypeEnum.RECOMMENDED_WAY.getKey()));
recommendInfo.setRecommendationProofFile(
getFileBasicInfoList(fileBasicInfoMap, expertUserInfoDTO.getRecommendationProofFileIdList()));
// 其他信息
ExpertOtherInfo otherInfo = new ExpertOtherInfo();
otherInfo.setOther(tagFieldInfoMap.get(ExpertTagEnum.OTHER.getKey()));
otherInfo.setRemark(expertUserInfoDTO.getRemark());

// 专家申请履职意向展示列表
List<ExpertRegionInfo> expertApplyIntentionWorkRegions = expertUserFullInfoAll.getExpertApplyIntentionWorkRegionInfo().stream().map(r -> {
ExpertRegionInfo expertApplyIntentionWorkRegion = new ExpertRegionInfo();
expertApplyIntentionWorkRegion.setRegionLevel(r.getRegionLevel());
expertApplyIntentionWorkRegion.setRegionCode(r.getRegionCode());
// expertApplyIntentionWorkRegion.setRegionName(regionCache.getUnionPathStr(r.getRegionCode(), r.getRegionLevel()));
return expertApplyIntentionWorkRegion;
}).collect(Collectors.toList());


ExpertFullInfoVO expertFullInfoVO = new ExpertFullInfoVO();
expertFullInfoVO.setUserId(expertUserInfoDTO.getUserId());
expertFullInfoVO.setBasicInfo(basicInfo);
expertFullInfoVO.setEduInfo(eduInfo);
expertFullInfoVO.setJobInfo(jobInfo);
expertFullInfoVO.setProfessionalInfo(professionalInfo);
expertFullInfoVO.setRecommendInfo(recommendInfo);
expertFullInfoVO.setExpertOtherInfo(otherInfo);
expertFullInfoVO.setExpertApplyIntentionWorkRegions(expertApplyIntentionWorkRegions);

return expertFullInfoVO;
}

public static Map<Long, FileBasicInfo> buildFileBasicInfoMap(List<AttachFileVo> attachFiles) {
return attachFiles.stream().map(r -> {
FileBasicInfo fileBasicInfo = new FileBasicInfo();
fileBasicInfo.setFileId(r.getFileId());
fileBasicInfo.setFileName(r.getOriginalFileName());
return fileBasicInfo;
}).collect(Collectors.toMap(FileBasicInfo::getFileId, Function.identity()));
}

public Map<String, List<TagFieldInfo>> buildTagFieldInfoMap(List<ExpertTagDTO> expertTagList) {
return expertTagList.stream().map(r -> {
TagFieldInfo tagFieldInfo = new TagFieldInfo();
tagFieldInfo.setTagCode(r.getTagCode());
tagFieldInfo.setTagFieldName(r.getExpertInfoField());
TagDTO tagDTO = tagCache.getByTagCode(r.getTagCode());
if (Objects.nonNull(tagDTO)) {
tagFieldInfo.setTagName(tagDTO.getTagName());
}
return tagFieldInfo;
}).collect(Collectors.groupingBy(TagFieldInfo::getTagFieldName));
}

public Map<String, List<DictionaryFieldInfo>> buildDictionaryFieldInfoMap(List<ExpertDictionaryDTO> expertDictionaryList) {
return expertDictionaryList.stream().map(r -> {
DictionaryFieldInfo dictionaryFieldInfo = new DictionaryFieldInfo();
dictionaryFieldInfo.setDictionaryFieldName(r.getExpertInfoField());
dictionaryFieldInfo.setDictionaryCode(r.getDictionaryCode());
DictionaryDTO dictionaryDTO = dictionaryCache.getByCode(r.getDictionaryCode());
if (Objects.nonNull(dictionaryDTO)) {
dictionaryFieldInfo.setDictionaryName(dictionaryDTO.getName());
}
return dictionaryFieldInfo;
}).collect(Collectors.groupingBy(DictionaryFieldInfo::getDictionaryFieldName));
}

public static ExpertProfessionalInfo buildExpertProfessionalInfo(ExpertUserFullInfoDTO expertUserInfoDTO
, Map<String, List<DictionaryFieldInfo>> dictionaryFieldInfoMap, Map<String, List<TagFieldInfo>> tagFieldInfoMap
, Map<Long, FileBasicInfo> fileBasicInfoMap, List<ExpertAvoidCompanyDTO> expertAvoidCompanyList) {
ExpertProfessionalInfo professionalInfo = new ExpertProfessionalInfo();
professionalInfo.setTechnicalTitles(expertUserInfoDTO.getTechnicalTitles());
professionalInfo.setTitleLevel(dictionaryFieldInfoMap.get(DictExpertInfoTypeEnum.TITLE_LEVEL.getKey()));
professionalInfo.setTitleCertificateFile(getFileBasicInfoList(fileBasicInfoMap, expertUserInfoDTO.getTitleCertificateFileIdList()));
professionalInfo.setGoodAt(tagFieldInfoMap.get(ExpertTagEnum.GOOD_AT.getKey()));
professionalInfo.setTechnicalExpertise(tagFieldInfoMap.get(ExpertTagEnum.TECHNICAL_EXPERTISE.getKey()));
professionalInfo.setAwards(expertUserInfoDTO.getAwards());
professionalInfo.setIndustrySector(tagFieldInfoMap.get(ExpertTagEnum.INDUSTRY_SECTOR.getKey()));
professionalInfo.setRecognitionReward(expertUserInfoDTO.getRecognitionReward());
professionalInfo.setAvoidCompanyList(expertAvoidCompanyList.stream().map(r -> {
ExpertAvoidCompanyInfo expertAvoidCompanyInfo = new ExpertAvoidCompanyInfo();
expertAvoidCompanyInfo.setCompanyName(r.getCompanyName());
expertAvoidCompanyInfo.setCompanyUniqCode(r.getCompanyUniqCode());
return expertAvoidCompanyInfo;
}).collect(Collectors.toList()));
return professionalInfo;
}

public static ExpertJobInfo buildExpertJobInfo(ExpertUserFullInfoDTO expertUserInfoDTO
, Map<String, List<DictionaryFieldInfo>> dictionaryFieldInfoMap) {
ExpertJobInfo jobInfo = new ExpertJobInfo();
jobInfo.setJobStatus(dictionaryFieldInfoMap.get(DictExpertInfoTypeEnum.JOB_STATUS.getKey()));
jobInfo.setRetiredAt(expertUserInfoDTO.getRetiredAt());
jobInfo.setCompany(expertUserInfoDTO.getCompany());
jobInfo.setCompanyUniqCode(expertUserInfoDTO.getCompanyUniqCode());
jobInfo.setLegalEntityCode(expertUserInfoDTO.getLegalEntityCode());
jobInfo.setAdministrativeDuties(expertUserInfoDTO.getAdministrativeDuties());
jobInfo.setStartWorkAt(expertUserInfoDTO.getStartWorkAt());
jobInfo.setAdministrativeRank(dictionaryFieldInfoMap.get(DictExpertInfoTypeEnum.ADMINISTRATIVE_RANK.getKey()));
jobInfo.setCompanyAttribute(dictionaryFieldInfoMap.get(DictExpertInfoTypeEnum.COMPANY_ATTRIBUTE.getKey()));
jobInfo.setAddress(expertUserInfoDTO.getAddress());
jobInfo.setExperience(expertUserInfoDTO.getExperience());
return jobInfo;
}

public static ExpertEduInfo buildExpertEduInfo(ExpertUserFullInfoDTO expertUserInfoDTO
, Map<String, List<DictionaryFieldInfo>> dictionaryFieldInfoMap, Map<Long, FileBasicInfo> fileBasicInfoMap) {
// 学历信息
ExpertEduInfo eduInfo = new ExpertEduInfo();
eduInfo.setSchool(expertUserInfoDTO.getSchool());
eduInfo.setGraduatedAt(expertUserInfoDTO.getGraduatedAt());
eduInfo.setAcademicTitle(expertUserInfoDTO.getAcademicTitle());
eduInfo.setEdu(dictionaryFieldInfoMap.get(DictExpertInfoTypeEnum.EDU.getKey()));
eduInfo.setGraduationCertificateFile(getFileBasicInfoList(fileBasicInfoMap
, expertUserInfoDTO.getGraduationCertificateFileIdList()));
eduInfo.setDegree(dictionaryFieldInfoMap.get(DictExpertInfoTypeEnum.DEGREE.getKey()));
eduInfo.setDegreeCertificateFile(getFileBasicInfoList(fileBasicInfoMap, expertUserInfoDTO.getDegreeCertificateFileIdList()));
return eduInfo;
}

public static List<FileBasicInfo> getFileBasicInfoList(Map<Long, FileBasicInfo> fileBasicInfoMap, List<Long> fileIdList) {
if (CollectionUtils.isEmpty(fileIdList)) {
return new ArrayList<>();
}
List<FileBasicInfo> fileBasicInfoList = new ArrayList<>();
for (Long fileId : fileIdList) {
FileBasicInfo fileBasicInfo = fileBasicInfoMap.get(fileId);
if (Objects.nonNull(fileBasicInfo)) {
fileBasicInfoList.add(fileBasicInfo);
}
}
return fileBasicInfoList;
}

public static FileBasicInfo getFileBasicInfo(Map<Long, FileBasicInfo> fileBasicInfoMap, Long fileId) {
if (Objects.isNull(fileId)) {
return null;
}
FileBasicInfo fileBasicInfo = fileBasicInfoMap.get(fileId);
return fileBasicInfo;
}

public ExpertBasicInfo buildExpertBasicInfo(ExpertUserFullInfoDTO expertUserInfoDTO
, Map<String, List<DictionaryFieldInfo>> dictionaryFieldInfoMap
, Map<String, List<TagFieldInfo>> tagFieldInfoMap
, List<ExpertRegionDTO> expertIntentionWorkRegionInfo
, Map<Long, FileBasicInfo> fileBasicInfoMap) {
//专家层级
ExpertRegionInfo expertRegionInfo = new ExpertRegionInfo();
expertRegionInfo.setRegionLevel(expertUserInfoDTO.getRegionLevel());
expertRegionInfo.setRegionCode(expertUserInfoDTO.getRegionCode());

// 基本信息
ExpertBasicInfo basicInfo = new ExpertBasicInfo();
basicInfo.setIsDingUser(expertUserInfoDTO.getIsDingUser());
basicInfo.setPhoneNo(expertUserInfoDTO.getPhoneNo());
basicInfo.setName(expertUserInfoDTO.getName());
basicInfo.setAvatarFile(getFileBasicInfo(fileBasicInfoMap, expertUserInfoDTO.getAvatarFileId()));
basicInfo.setGender(expertUserInfoDTO.getGender());
basicInfo.setPolitical(dictionaryFieldInfoMap.get(DictExpertInfoTypeEnum.POLITICAL.getKey()));
basicInfo.setIdCard(expertUserInfoDTO.getIdCard());
basicInfo.setOfficePhone(expertUserInfoDTO.getPhoneNo());
basicInfo.setBirth(expertUserInfoDTO.getBirth());
basicInfo.setBank(expertUserInfoDTO.getBank());
basicInfo.setBankNo(expertUserInfoDTO.getBankNo());
basicInfo.setEmail(expertUserInfoDTO.getEmail());
basicInfo.setHometown(expertUserInfoDTO.getHometown());
basicInfo.setNationality(expertUserInfoDTO.getNationality());
basicInfo.setExpertSource(tagFieldInfoMap.get(ExpertTagEnum.EXPERT_SOURCE.getKey()));
if (Objects.nonNull(expertRegionInfo)) {
// expertRegionInfo.setRegionName(regionCache.getUnionPathStr(expertRegionInfo.getRegionCode(), expertRegionInfo.getRegionLevel()));
basicInfo.setExpertRegionInfo(expertRegionInfo);
}

basicInfo.setExpertIntentionWorkRegions(expertIntentionWorkRegionInfo.stream().map(r -> {
ExpertRegionInfo expertIntentionWorkRegion = new ExpertRegionInfo();
expertIntentionWorkRegion.setRegionCode(r.getRegionCode());
expertIntentionWorkRegion.setRegionLevel(r.getRegionLevel());
// expertIntentionWorkRegion.setRegionName(regionCache.getUnionPathStr(r.getRegionCode(), r.getRegionLevel()));
return expertIntentionWorkRegion;
}).collect(Collectors.toList()));
basicInfo.setExpertType(dictionaryFieldInfoMap.get(DictExpertInfoTypeEnum.EXPERT_TYPE.getKey()));
return basicInfo;
}

public static ExpertFullInfoAllDTO buildExpertFullInfoAllDTO(ExpertUserFullInfo expertUserFullInfo
, List<ExpertTag> expertTagList
, List<ExpertDictionary> expertDictionaryList
, List<ExpertIntentionWorkRegion> expertIntentionWorkRegionList
// , List<ExpertMetaApply> expertMetaApplyList
, List<ExpertAvoidCompany> expertAvoidCompanyList) {
ExpertUserFullInfoDTO expertUserFullInfoDTO = buildExpertUserFullInfoDTO(expertUserFullInfo);
List<ExpertDictionaryDTO> expertDictionaryDTOList = buildExpertDictionaryDTOList(expertDictionaryList);
List<ExpertTagDTO> expertTagDTOList = buildExpertTagDTOList(expertTagList);
List<ExpertRegionDTO> expertIntentionWorkRegionInfo = buildExpertIntentionWorkRegionInfo(expertIntentionWorkRegionList);

// 专家申请履职意向展示列表
// List<ExpertRegionDTO> expertApplyIntentionWorkRegionInfo = buildExpertApplyIntentionWorkRegionInfo(expertIntentionWorkRegionList, expertMetaApplyList);
List<ExpertAvoidCompanyDTO> expertAvoidCompanyDTOList = buildExpertAvoidCompanyDTOList(expertAvoidCompanyList);
ExpertFullInfoAllDTO expertFullInfoAllDTO = new ExpertFullInfoAllDTO();
expertFullInfoAllDTO.setUserId(expertUserFullInfo.getUserId());
expertFullInfoAllDTO.setExpertUserInfoDTO(expertUserFullInfoDTO);
expertFullInfoAllDTO.setExpertDictionaryList(expertDictionaryDTOList);
expertFullInfoAllDTO.setExpertTagList(expertTagDTOList);
expertFullInfoAllDTO.setExpertIntentionWorkRegionInfo(expertIntentionWorkRegionInfo);
// expertFullInfoAllDTO.setExpertApplyIntentionWorkRegionInfo(expertApplyIntentionWorkRegionInfo);
expertFullInfoAllDTO.setExpertAvoidCompanyList(expertAvoidCompanyDTOList);
return expertFullInfoAllDTO;
}
//
// private static List<ExpertRegionDTO> buildExpertApplyIntentionWorkRegionInfo(List<ExpertIntentionWorkRegion> expertIntentionWorkRegionList
// , List<ExpertMetaApply> expertMetaApplyList) {
// HashSet<RegionDtoMapKey> set = new HashSet();
// for (ExpertIntentionWorkRegion expertIntentionWorkRegion : expertIntentionWorkRegionList) {
// RegionDtoMapKey regionDtoMapKey = new RegionDtoMapKey();
// regionDtoMapKey.setRegionCode(expertIntentionWorkRegion.getRegionCode());
// regionDtoMapKey.setRegionLevel(expertIntentionWorkRegion.getRegionLevel());
// set.add(regionDtoMapKey);
// }
//
// for (ExpertMetaApply expertMetaApply : expertMetaApplyList) {
// String applyType = expertMetaApply.getApplyType();
// RegionDtoMapKey regionDtoMapKey = new RegionDtoMapKey();
// regionDtoMapKey.setRegionCode(expertMetaApply.getRegionCode());
// regionDtoMapKey.setRegionLevel(expertMetaApply.getRegionLevel());
// ExpertApplyTypeEnum typeEnum = ExpertApplyTypeEnum.of(applyType);
// switch (typeEnum) {
// case EXPERT_INTENTION_LEAVE: {
// set.remove(regionDtoMapKey);
// }
// break;
// case EXPERT_INTENTION_JOIN: {
// set.add(regionDtoMapKey);
// }
// break;
// default:
// break;
// }
// }
// return set.stream().map(r -> {
// ExpertRegionDTO expertRegionDTO = new ExpertRegionDTO();
// expertRegionDTO.setRegionCode(r.getRegionCode());
// expertRegionDTO.setRegionLevel(r.getRegionLevel());
// return expertRegionDTO;
// }).collect(Collectors.toList());
// }

private static List<ExpertAvoidCompanyDTO> buildExpertAvoidCompanyDTOList(List<ExpertAvoidCompany> expertAvoidCompanyList) {
return expertAvoidCompanyList.stream().map(r -> {
ExpertAvoidCompanyDTO expertAvoidCompanyDTO = new ExpertAvoidCompanyDTO();
expertAvoidCompanyDTO.setCompanyUniqCode(r.getCompanyUniqCode());
expertAvoidCompanyDTO.setCompanyName(r.getCompanyName());
return expertAvoidCompanyDTO;
}).collect(Collectors.toList());
}

private static List<ExpertRegionDTO> buildExpertIntentionWorkRegionInfo(List<ExpertIntentionWorkRegion> expertIntentionWorkRegionList) {
return expertIntentionWorkRegionList.stream().map(r -> {
ExpertRegionDTO expertRegionDTO = new ExpertRegionDTO();
expertRegionDTO.setRegionLevel(r.getRegionLevel());
expertRegionDTO.setRegionCode(r.getRegionCode());
return expertRegionDTO;
}).collect(Collectors.toList());
}

private static List<ExpertTagDTO> buildExpertTagDTOList(List<ExpertTag> expertTagList) {
return expertTagList.stream().map(r -> {
ExpertTagDTO expertTagDTO = new ExpertTagDTO();
expertTagDTO.setExpertInfoField(r.getExpertInfoField());
expertTagDTO.setTagCode(r.getTagCode());
return expertTagDTO;
}).collect(Collectors.toList());
}

private static List<ExpertDictionaryDTO> buildExpertDictionaryDTOList(List<ExpertDictionary> expertDictionaryList) {
return expertDictionaryList.stream().map(r -> {
ExpertDictionaryDTO expertDictionaryDTO = new ExpertDictionaryDTO();
expertDictionaryDTO.setExpertInfoField(r.getExpertInfoField());
expertDictionaryDTO.setDictionaryCode(r.getDictionaryCode());
return expertDictionaryDTO;
}).collect(Collectors.toList());
}

public static ExpertUserFullInfoDTO buildExpertUserFullInfoDTO(ExpertUserFullInfo expertUserFullInfo) {
ExpertUserFullInfoDTO expertUserFullInfoDTO = new ExpertUserFullInfoDTO();
expertUserFullInfoDTO.setIsDingUser(BoolDisplayEnum.judgeBoolean(expertUserFullInfo.getIsDingUser()));
expertUserFullInfoDTO.setPhoneNo(expertUserFullInfo.getPhoneNo());
expertUserFullInfoDTO.setGender(expertUserFullInfo.getGender());
expertUserFullInfoDTO.setName(expertUserFullInfo.getExpertName());
expertUserFullInfoDTO.setAvatarFileId(expertUserFullInfo.getAvatarFileId());
expertUserFullInfoDTO.setIdCard(expertUserFullInfo.getIdCard());
expertUserFullInfoDTO.setOfficePhone(expertUserFullInfo.getOfficePhone());
expertUserFullInfoDTO.setBirth(expertUserFullInfo.getBirth());
expertUserFullInfoDTO.setBankNo(expertUserFullInfo.getBankNo());
expertUserFullInfoDTO.setBank(expertUserFullInfo.getBank());
expertUserFullInfoDTO.setEmail(expertUserFullInfo.getEmail());
expertUserFullInfoDTO.setHometown(expertUserFullInfo.getHometown());
expertUserFullInfoDTO.setNationality(expertUserFullInfo.getNationality());

expertUserFullInfoDTO.setSchool(expertUserFullInfo.getSchool());
expertUserFullInfoDTO.setGraduatedAt(expertUserFullInfo.getGraduatedAt());
expertUserFullInfoDTO.setAcademicTitle(expertUserFullInfo.getAcademicTitle());
if (StringUtils.isNotBlank(expertUserFullInfo.getGraduationCertificateFileIdList())) {
expertUserFullInfoDTO.setGraduationCertificateFileIdList(JSONObject.parseArray(expertUserFullInfo.getGraduationCertificateFileIdList(), Long.class));
}
if (StringUtils.isNotBlank(expertUserFullInfo.getDegreeCertificateFileIdList())) {
expertUserFullInfoDTO.setDegreeCertificateFileIdList(JSONObject.parseArray(expertUserFullInfo.getDegreeCertificateFileIdList(), Long.class));
}
expertUserFullInfoDTO.setRetiredAt(expertUserFullInfo.getRetiredAt());
expertUserFullInfoDTO.setCompany(expertUserFullInfo.getCompany());
// expertUserFullInfoDTO.setCompanyUniqCode(expertUserFullInfo.getCompanyUniqCode());
expertUserFullInfoDTO.setLegalEntityCode(expertUserFullInfo.getLegalEntityCode());
expertUserFullInfoDTO.setAdministrativeDuties(expertUserFullInfo.getAdministrativeDuties());
expertUserFullInfoDTO.setStartWorkAt(expertUserFullInfo.getStartWorkAt());
expertUserFullInfoDTO.setAddress(expertUserFullInfo.getAddress());
expertUserFullInfoDTO.setExperience(expertUserFullInfo.getExperience());

expertUserFullInfoDTO.setTechnicalTitles(expertUserFullInfo.getTechnicalTitles());
if (StringUtils.isNotBlank(expertUserFullInfo.getTitleCertificateFileIdList())) {
expertUserFullInfoDTO.setTitleCertificateFileIdList(JSONObject.parseArray(expertUserFullInfo.getTitleCertificateFileIdList(), Long.class));
}
expertUserFullInfoDTO.setAwards(expertUserFullInfo.getAwards());
expertUserFullInfoDTO.setRecognitionReward(expertUserFullInfo.getRecognitionReward());

expertUserFullInfoDTO.setRegionCode(expertUserFullInfo.getRegionCode());
expertUserFullInfoDTO.setRegionLevel(expertUserFullInfo.getRegionLevel());

if (StringUtils.isNotBlank(expertUserFullInfo.getRecommendationProofFileIdList())) {
expertUserFullInfoDTO.setRecommendationProofFileIdList(JSONObject.parseArray(expertUserFullInfo.getRecommendationProofFileIdList(), Long.class));
}
expertUserFullInfoDTO.setRemark(expertUserFullInfo.getRemark());

return expertUserFullInfoDTO;
}

// public static ExpertAdminExpertManageListDTO buildExpertAdminExpertManageListDTO(ExpertUserFullInfo expertUserFullInfo
// , Map<Long, List<ExpertDictionary>> expertDictionaryMap, Map<Long, List<ExpertTag>> expertTagMap) {
// Long userId = expertUserFullInfo.getUserId();
// ExpertAdminExpertManageListDTO expertAdminExpertManageListDTO = new ExpertAdminExpertManageListDTO();
// expertAdminExpertManageListDTO.setUserId(expertUserFullInfo.getUserId());
// expertAdminExpertManageListDTO.setExpertName(expertUserFullInfo.getName());
// expertAdminExpertManageListDTO.setPhoneNo(expertUserFullInfo.getPhoneNo());
// expertAdminExpertManageListDTO.setIsDingUser(BoolDisplayEnum.judgeBoolean(expertUserFullInfo.getIsDingUser()));
// expertAdminExpertManageListDTO.setCompany(expertUserFullInfo.getCompany());
// expertAdminExpertManageListDTO.setLegalEntityCode(expertUserFullInfo.getLegalEntityCode());
// expertAdminExpertManageListDTO.setExpertAccountStatus(expertUserFullInfo.getExpertAccountStatus());
//
// // 装配字典数据
// List<ExpertDictionary> userExpertDictionaryList = Objects.isNull(expertDictionaryMap.get(userId)) ? new ArrayList<>() : expertDictionaryMap.get(userId);
// Map<String, List<ExpertDictionary>> fieldExpertDictionaryMap = userExpertDictionaryList.stream().collect(Collectors.groupingBy(ExpertDictionary::getExpertInfoField));
// expertAdminExpertManageListDTO.setExpertType(
// DictionaryAssembler.toDictionaryFieldInfoList(fieldExpertDictionaryMap.get(DictExpertInfoTypeEnum.EXPERT_TYPE.getKey())));
// expertAdminExpertManageListDTO.setCompanyAttribute(
// DictionaryAssembler.toDictionaryFieldInfoList(fieldExpertDictionaryMap.get(DictExpertInfoTypeEnum.COMPANY_ATTRIBUTE.getKey())));
// expertAdminExpertManageListDTO.setTitleLevel(
// DictionaryAssembler.toDictionaryFieldInfoList(fieldExpertDictionaryMap.get(DictExpertInfoTypeEnum.TITLE_LEVEL.getKey())));
// // 装配标签数据
// List<ExpertTag> expertTagList = Objects.isNull(expertTagMap.get(userId)) ? new ArrayList<>() : expertTagMap.get(userId);
// Map<String, List<ExpertTag>> fieldExpertTagMap = expertTagList.stream().collect(Collectors.groupingBy(ExpertTag::getExpertInfoField));
// expertAdminExpertManageListDTO.setExpertSource(
// TagAssembler.toTagFieldInfoList(fieldExpertTagMap.get(ExpertTagEnum.EXPERT_SOURCE.getKey())));
//
// if (StringUtils.isNotBlank(expertUserFullInfo.getRegionCode()) && Objects.nonNull(expertUserFullInfo.getRegionLevel())) {
// ExpertRegionInfo expertRegionInfo = new ExpertRegionInfo();
// expertRegionInfo.setRegionLevel(expertUserFullInfo.getRegionLevel());
// expertRegionInfo.setRegionCode(expertUserFullInfo.getRegionCode());
// expertAdminExpertManageListDTO.setExpertRegionInfo(expertRegionInfo);
// }
//
// // 以下数据为专家excel导出使用
// expertAdminExpertManageListDTO.setGender(expertUserFullInfo.getGender());
// expertAdminExpertManageListDTO.setBirth(expertUserFullInfo.getBirth());
// expertAdminExpertManageListDTO.setHometown(expertUserFullInfo.getHometown());
// expertAdminExpertManageListDTO.setNationality(expertUserFullInfo.getNationality());
// expertAdminExpertManageListDTO.setPolitical(
// DictionaryAssembler.toDictionaryFieldInfoList(fieldExpertDictionaryMap.get(DictExpertInfoTypeEnum.POLITICAL.getKey())));
// expertAdminExpertManageListDTO.setIdCard(expertUserFullInfo.getIdCard());
// expertAdminExpertManageListDTO.setBankNo(expertUserFullInfo.getBankNo());
// expertAdminExpertManageListDTO.setEdu(
// DictionaryAssembler.toDictionaryFieldInfoList(fieldExpertDictionaryMap.get(DictExpertInfoTypeEnum.EDU.getKey())));
// expertAdminExpertManageListDTO.setRecommendedWay(
// DictionaryAssembler.toDictionaryFieldInfoList(fieldExpertDictionaryMap.get(DictExpertInfoTypeEnum.RECOMMENDED_WAY.getKey())));
// return expertAdminExpertManageListDTO;
//
// }


}

+ 0
- 19
pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertAvoidCompanyController.java View File

@@ -1,19 +0,0 @@
package com.ningdatech.pmapi.expert.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
* <p>
* 前端控制器
* </p>
*
* @author Liuxinxin
* @since 2023-02-23
*/
@Controller
@RequestMapping("/pmapi.expert/expert-avoid-company")
public class ExpertAvoidCompanyController {

}

+ 15
- 4
pmapi/src/main/java/com/ningdatech/pmapi/expert/controller/ExpertController.java View File

@@ -2,14 +2,13 @@ package com.ningdatech.pmapi.expert.controller;


import com.ningdatech.pmapi.expert.manage.ExpertManage;
import com.ningdatech.pmapi.expert.model.req.ExpertRecommendProofSubmitRequest;
import com.ningdatech.pmapi.expert.model.req.ExpertUserBasicInfoSubmitRequest;
import com.ningdatech.pmapi.expert.model.vo.ExpertFullInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

@@ -36,5 +35,17 @@ public class ExpertController {
expertManage.expertBasicInfoSubmit(request);
}

@PostMapping("/recommend-proof-submit")
@ApiOperation("推荐证明提交接口(专家报名使用)")
public void expertRecommendProofSubmit(@Valid @RequestBody ExpertRecommendProofSubmitRequest request) {
expertManage.expertRecommendProofSubmit(request);
}

@GetMapping("/detail")
@ApiOperation("专家获取专家详细信息")
public ExpertFullInfoVO getExpertFullInfoDetail() {
return expertManage.getExpertFullInfoDetail(null);
}


}

+ 46
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/helper/ExpertInfoCommonHelper.java View File

@@ -0,0 +1,46 @@
package com.ningdatech.pmapi.expert.helper;

import com.ningdatech.pmapi.expert.model.dto.ExpertFullInfoAllDTO;
import com.ningdatech.pmapi.expert.model.dto.ExpertUserFullInfoDTO;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
* @author liuxinxin
* @date 2022/7/28 上午10:18
*/
@Component
public class ExpertInfoCommonHelper {

/**
* 获取专家的所有文件id
* 头像,学位证书,毕业证书,推荐证明材料,职称证明
*
* @param expertUserFullInfoAll
* @return
*/
public List<Long> getExpertFileIdList(ExpertFullInfoAllDTO expertUserFullInfoAll) {
ExpertUserFullInfoDTO expertUserInfoDTO = expertUserFullInfoAll.getExpertUserInfoDTO();
List<Long> fileIdList = new ArrayList<>();
if (Objects.nonNull(expertUserInfoDTO.getAvatarFileId())) {
fileIdList.add(expertUserInfoDTO.getAvatarFileId());
}
if (CollectionUtils.isNotEmpty(expertUserInfoDTO.getDegreeCertificateFileIdList())) {
fileIdList.addAll(expertUserInfoDTO.getDegreeCertificateFileIdList());
}
if (CollectionUtils.isNotEmpty(expertUserInfoDTO.getGraduationCertificateFileIdList())) {
fileIdList.addAll(expertUserInfoDTO.getGraduationCertificateFileIdList());
}
if (CollectionUtils.isNotEmpty(expertUserInfoDTO.getRecommendationProofFileIdList())) {
fileIdList.addAll(expertUserInfoDTO.getRecommendationProofFileIdList());
}
if (CollectionUtils.isNotEmpty(expertUserInfoDTO.getTitleCertificateFileIdList())) {
fileIdList.addAll(expertUserInfoDTO.getTitleCertificateFileIdList());
}
return fileIdList;
}
}

+ 65
- 6
pmapi/src/main/java/com/ningdatech/pmapi/expert/manage/ExpertManage.java View File

@@ -1,25 +1,36 @@
package com.ningdatech.pmapi.expert.manage;

import com.ningdatech.basic.exception.BizException;
import com.ningdatech.file.entity.vo.result.AttachFileVo;
import com.ningdatech.file.service.FileService;
import com.ningdatech.pmapi.expert.assembler.ExpertInfoCmdAssembler;
import com.ningdatech.pmapi.expert.assembler.ExpertUserInfoAssembler;
import com.ningdatech.pmapi.expert.constant.ExpertAccountStatusEnum;
import com.ningdatech.pmapi.expert.constant.ExpertUserInfoStepEnum;
import com.ningdatech.pmapi.expert.entity.ExpertUserFullInfo;
import com.ningdatech.pmapi.expert.helper.ExpertInfoCommonHelper;
import com.ningdatech.pmapi.expert.helper.ExpertManageHelper;
import com.ningdatech.pmapi.expert.model.ExpertBasicInfo;
import com.ningdatech.pmapi.expert.model.ExpertEduInfo;
import com.ningdatech.pmapi.expert.model.ExpertJobInfo;
import com.ningdatech.pmapi.expert.model.ExpertProfessionalInfo;
import com.ningdatech.pmapi.expert.model.*;
import com.ningdatech.pmapi.expert.model.cmd.ExpertFullInfoSaveCmd;
import com.ningdatech.pmapi.expert.model.cmd.ExpertRecommendProofSaveCmd;
import com.ningdatech.pmapi.expert.model.dto.ExpertDictionaryDTO;
import com.ningdatech.pmapi.expert.model.dto.ExpertFullInfoAllDTO;
import com.ningdatech.pmapi.expert.model.req.ExpertRecommendProofSubmitRequest;
import com.ningdatech.pmapi.expert.model.req.ExpertUserBasicInfoSubmitRequest;
import com.ningdatech.pmapi.expert.model.vo.ExpertFullInfoVO;
import com.ningdatech.pmapi.expert.service.ExpertInfoService;
import com.ningdatech.pmapi.expert.service.IExpertUserFullInfoService;
import com.ningdatech.pmapi.meta.constant.DictExpertInfoTypeEnum;
import com.ningdatech.pmapi.meta.model.ExpertRegionInfo;
import com.ningdatech.pmapi.user.util.LoginUserUtil;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
* @author liuxinxin
@@ -31,10 +42,11 @@ import java.util.Objects;
public class ExpertManage {

private final ExpertManageHelper expertManageHelper;

private final IExpertUserFullInfoService iExpertUserFullInfoService;

private final ExpertInfoService expertInfoService;
private final ExpertInfoCommonHelper expertInfoCommonHelper;
private final FileService fileService;
private final ExpertUserInfoAssembler expertUserInfoAssembler;


/**
@@ -75,4 +87,51 @@ public class ExpertManage {
}


public void expertRecommendProofSubmit(ExpertRecommendProofSubmitRequest request) {
// 用户id
Long expertUserId = LoginUserUtil.getUserId();
ExpertUserFullInfo expertUserFullInfo = iExpertUserFullInfoService.getByUserId(expertUserId);
// 判断专家状态,是否可以进行证明材料提交
if (Objects.isNull(expertUserFullInfo)
|| !ExpertAccountStatusEnum.APPLYING.getKey().equals(expertUserFullInfo.getExpertAccountStatus())
|| ExpertUserInfoStepEnum.EVIDENCE_HAS_BEEN_SUBMITTED.getKey().equals(expertUserFullInfo.getUserInfoStep())) {
throw new BizException("当前状态无法提交证明材料");
}
// 根据用户id 获取用户信息,获取手机号校验 验证码是否正确
String phoneNo = expertUserFullInfo.getPhoneNo();
String verificationCode = request.getVerificationCode();

// 证明材料提交
List<FileBasicInfo> recommendProofFile = request.getRecommendProofFile();
List<DictionaryFieldInfo> recommendedWayList = request.getRecommendedWay();
ExpertRecommendProofSaveCmd expertRecommendProofSaveCmd = new ExpertRecommendProofSaveCmd();
if (CollectionUtils.isNotEmpty(recommendProofFile)) {
expertRecommendProofSaveCmd.setRecommendationProofFileIdList(recommendProofFile.stream().map(FileBasicInfo::getFileId).collect(Collectors.toList()));
}
List<ExpertDictionaryDTO> recommendedWayDictionaryDTOList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(recommendedWayList)) {
recommendedWayDictionaryDTOList = recommendedWayList.stream().map(r -> {
ExpertDictionaryDTO expertDictionaryDTO = new ExpertDictionaryDTO();
expertDictionaryDTO.setDictionaryCode(r.getDictionaryCode());
expertDictionaryDTO.setExpertInfoField(DictExpertInfoTypeEnum.RECOMMENDED_WAY.getKey());
return expertDictionaryDTO;
}).collect(Collectors.toList());
}
expertRecommendProofSaveCmd.setRecommendedWay(recommendedWayDictionaryDTOList);
expertRecommendProofSaveCmd.setUserId(expertUserId);
expertInfoService.expertRecommendProofSave(expertRecommendProofSaveCmd);
}

public ExpertFullInfoVO getExpertFullInfoDetail(Long expertUserId) {
Long currentUserId = LoginUserUtil.getUserId();
if (Objects.isNull(expertUserId)) {
expertUserId = currentUserId;
}
ExpertFullInfoAllDTO expertUserFullInfoAll = expertInfoService.getExpertUserFullInfoAll(expertUserId);
if (Objects.isNull(expertUserFullInfoAll)) {
return null;
}
List<Long> fileIdList = expertInfoCommonHelper.getExpertFileIdList(expertUserFullInfoAll);
List<AttachFileVo> attachFiles = fileService.getByIds(fileIdList);
return expertUserInfoAssembler.buildExpertFullInfoVO(attachFiles, expertUserFullInfoAll); }
}

+ 37
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/AdminModifyExpertInfoCmd.java View File

@@ -0,0 +1,37 @@
//package com.ningdatech.pmapi.expert.model.cmd;
//
//import com.ningdatech.emapi.expert.entity.bo.ExpertInfoSensitiveFieldCheckBO;
//import com.ningdatech.emapi.expert.entity.dto.*;
//import lombok.Data;
//
//import java.util.List;
//
///**
// * @author liuxinxin
// * @date 2022/7/28 下午2:43
// */
//@Data
//public class AdminModifyExpertInfoCmd {
//
// private Long userId;
//
// private ExpertUserFullInfoDTO expertUserInfoDTO;
//
// private List<ExpertDictionaryDTO> expertDictionaryList;
//
// private List<ExpertTagDTO> expertTagList;
//
// /**
// * 专家履职意向(区域编码)
// */
// private List<ExpertRegionDTO> expertIntentionWorkRegionInfo;
//
// /**
// * 回避单位列表
// */
// private List<ExpertAvoidCompanyDTO> expertAvoidCompanyList;
//
// private ExpertInfoSensitiveFieldCheckBO expertInfoSensitiveFieldCheckBO;
//
// private ModifyApplyExtraInfoDTO modifyApplyExtraInfo;
//}

+ 61
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertAdminExpertManageQueryCmd.java View File

@@ -0,0 +1,61 @@
//package com.ningdatech.pmapi.expert.model.cmd;
//
//import com.ningdatech.emapi.common.model.CommonPageReq;
//import com.ningdatech.emapi.expert.constants.ExpertAccountStatusEnum;
//import com.ningdatech.emapi.expert.entity.bo.RegionContainsBO;
//import com.ningdatech.emapi.expert.entity.query.ExpertDictionaryQuery;
//import com.ningdatech.emapi.expert.entity.query.ExpertTagQuery;
//import io.swagger.annotations.ApiModelProperty;
//import lombok.Data;
//
//import java.util.List;
//
///**
// * @author liuxinxin
// * @date 2022/8/4 上午11:11
// */
//@Data
//public class ExpertAdminExpertManageQueryCmd extends CommonPageReq {
//
// @ApiModelProperty("专家姓名(精准匹配)")
// private String expertName;
//
// @ApiModelProperty("工作单位(模糊匹配)")
// private String company;
//
// @ApiModelProperty("专家账号状态")
// private List<ExpertAccountStatusEnum> expertAccountStatusList;
//
// /**
// * 区域编码
// */
// @ApiModelProperty("区域编码")
// private String regionCode;
//
// /**
// * 区域级别
// */
// @ApiModelProperty("区域级别")
// private Integer regionLevel;
//
// /**
// * 专家管理区域范围
// */
// List<RegionContainsBO> regionContainsList;
//
// /**
// * 专家字典信息
// */
// private List<ExpertDictionaryQuery> expertDictionaryQueryList;
//
// /**
// * 专家标签信息
// */
// private List<ExpertTagQuery> expertTagQueryList;
//
// /**
// * 是否为钉用户
// */
// private Boolean isDingUser;
//
//}

+ 16
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertDeliveryDealCmd.java View File

@@ -0,0 +1,16 @@
package com.ningdatech.pmapi.expert.model.cmd;

import lombok.Data;

/**
* @author liuxinxin
* @date 2022/7/26 下午6:28
* 专家出库审核处理cmd
*/
@Data
public class ExpertDeliveryDealCmd {

private Long expertUserId;

private Boolean applyResult;
}

+ 18
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertInfoModifyApplyDealCmd.java View File

@@ -0,0 +1,18 @@
package com.ningdatech.pmapi.expert.model.cmd;

import lombok.Data;

/**
* @author liuxinxin
* @date 2022/7/28 下午5:35
*/
@Data
public class ExpertInfoModifyApplyDealCmd {

private Long expertUserId;

private Boolean applyResult;

private Long applyId;

}

+ 37
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertInfoModifyCmd.java View File

@@ -0,0 +1,37 @@
//package com.ningdatech.pmapi.expert.model.cmd;
//
//import com.ningdatech.emapi.expert.entity.bo.ExpertInfoSensitiveFieldCheckBO;
//import com.ningdatech.emapi.expert.entity.dto.*;
//import lombok.Data;
//
//import java.util.List;
//
///**
// * @author liuxinxin
// * @date 2022/7/28 下午2:43
// */
//@Data
//public class ExpertInfoModifyCmd {
//
// private Long userId;
//
// private ExpertUserFullInfoDTO expertUserInfoDTO;
//
// private List<ExpertDictionaryDTO> expertDictionaryList;
//
// private List<ExpertTagDTO> expertTagList;
//
// /**
// * 专家履职意向(区域编码)
// */
// private List<ExpertRegionDTO> expertIntentionWorkRegionInfo;
//
// /**
// * 回避单位列表
// */
// private List<ExpertAvoidCompanyDTO> expertAvoidCompanyList;
//
// private ExpertInfoSensitiveFieldCheckBO expertInfoSensitiveFieldCheckBO;
//
// private ModifyApplyExtraInfoDTO modifyApplyExtraInfo;
//}

+ 22
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertIntentionApplyDealCmd.java View File

@@ -0,0 +1,22 @@
//package com.ningdatech.pmapi.expert.model.cmd;
//
//import com.ningdatech.emapi.expert.constants.ExpertApplyTypeEnum;
//import lombok.Data;
//
///**
// * @author liuxinxin
// * @date 2022/7/27 上午9:06
// */
//@Data
//public class ExpertIntentionApplyDealCmd {
//
// private Long expertUserId;
//
// private Boolean applyResult;
//
// ExpertApplyTypeEnum applyTypeEnum;
//
// private String expertRegionCode;
//
// private Integer expertRegionLevel;
//}

+ 22
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertRecommendProofSaveCmd.java View File

@@ -0,0 +1,22 @@
package com.ningdatech.pmapi.expert.model.cmd;

import com.ningdatech.pmapi.expert.model.dto.ExpertDictionaryDTO;
import lombok.Data;

import java.util.List;

/**
* @author liuxinxin
* @date 2022/7/25 下午4:59
*/
@Data
public class ExpertRecommendProofSaveCmd {


private Long userId;

private List<Long> recommendationProofFileIdList;

private List<ExpertDictionaryDTO> recommendedWay;

}

+ 35
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/ExpertStorageDealCmd.java View File

@@ -0,0 +1,35 @@
//package com.ningdatech.pmapi.expert.model.cmd;
//
//import com.ningdatech.emapi.expert.entity.dto.ExpertDictionaryDTO;
//import com.ningdatech.emapi.expert.entity.dto.ExpertTagDTO;
//import lombok.Data;
//
//import java.util.List;
//
///**
// * @author liuxinxin
// * @date 2022/7/26 下午5:40
// */
//@Data
//public class ExpertStorageDealCmd {
//
// private Long expertUserId;
//
// private Boolean applyResult;
//
// private String joinRegionCode;
//
// private Integer joinRegionLevel;
//
// /**
// * 专家类型(内外围)
// */
// private List<ExpertDictionaryDTO> expertType;
//
// /**
// * 其他标签(标签code)
// */
// private List<ExpertTagDTO> other;
//
// private String remark;
//}

+ 60
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/model/cmd/SaveExpertAdminCmd.java View File

@@ -0,0 +1,60 @@
//package com.ningdatech.pmapi.expert.model.cmd;
//
//import com.ningdatech.emapi.expert.entity.dto.ExpertAdminRegionDTO;
//import lombok.Data;
//
//import java.util.List;
//
///**
// * @author liuxinxin
// * @date 2022/8/1 上午10:54
// */
//@Data
//public class SaveExpertAdminCmd {
//
// /**
// * 用户id
// */
// private Long userId;
//
// /**
// * 是否浙政钉用户Y/N
// */
// private Boolean isDingUser;
//
// /**
// * 手机号
// */
// private String phoneNo;
//
// /**
// * 用户名称
// */
// private String name;
//
// /**
// * 工作单位
// */
// private String company;
//
// /**
// * 公司唯一标识
// */
// private String companyUniqCode;
//
// /**
// * 层级
// */
// private List<ExpertAdminRegionDTO> regionInfoList;
//
// /**
// * 用户状态(启用/关闭)
// */
// private Boolean isEnable;
//
// /**
// * 操作者id
// */
// private Long operatorId;
//
//}

+ 39
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/model/dto/ExpertFullInfoAllDTO.java View File

@@ -0,0 +1,39 @@
package com.ningdatech.pmapi.expert.model.dto;

import lombok.Data;

import java.util.List;

/**
* @author liuxinxin
* @date 2022/7/27 上午10:22
* 专家全量信息表,包含履职意向,专家字典信息,专家标签信息,回避单位信息
*/
@Data
public class ExpertFullInfoAllDTO {

private Long userId;

private ExpertUserFullInfoDTO expertUserInfoDTO;

private List<ExpertDictionaryDTO> expertDictionaryList;

private List<ExpertTagDTO> expertTagList;

/**
* 专家履职意向(区域编码)
*/
private List<ExpertRegionDTO> expertIntentionWorkRegionInfo;

/**
* 专家申请履职意向展示列表
*/
private List<ExpertRegionDTO> expertApplyIntentionWorkRegionInfo;

/**
* 回避单位列表
*/
private List<ExpertAvoidCompanyDTO> expertAvoidCompanyList;


}

+ 31
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/model/req/ExpertRecommendProofSubmitRequest.java View File

@@ -0,0 +1,31 @@
package com.ningdatech.pmapi.expert.model.req;

import com.ningdatech.pmapi.expert.model.DictionaryFieldInfo;
import com.ningdatech.pmapi.expert.model.FileBasicInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;

/**
* @author liuxinxin
* @date 2022/7/22 下午5:49
*/
@Data
@ApiModel("专家证明材料提交Request")
public class ExpertRecommendProofSubmitRequest {

@NotEmpty
@ApiModelProperty("推荐方式")
private List<DictionaryFieldInfo> recommendedWay;

@ApiModelProperty("推荐证明材料")
private List<FileBasicInfo> recommendProofFile;

@NotBlank
@ApiModelProperty("短信验证码")
private String verificationCode;
}

+ 45
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/model/vo/ExpertFullInfoVO.java View File

@@ -0,0 +1,45 @@
package com.ningdatech.pmapi.expert.model.vo;

import com.ningdatech.pmapi.expert.model.*;
import com.ningdatech.pmapi.meta.model.ExpertRegionInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import java.util.List;

/**
* @author liuxinxin
* @date 2022/7/25 下午1:43
*/
@Data
@ApiModel("专家全量信息")
public class ExpertFullInfoVO {

@ApiModelProperty("专家用户id")
private Long userId;

@ApiModelProperty("基本信息")
private ExpertBasicInfo basicInfo;

@ApiModelProperty("学历信息")
private ExpertEduInfo eduInfo;

@ApiModelProperty("职业信息")
private ExpertJobInfo jobInfo;

@ApiModelProperty("专业信息")
private ExpertProfessionalInfo professionalInfo;

@ApiModelProperty("推荐信息")
private ExpertRecommendInfo recommendInfo;

@ApiModelProperty("其他信息")
private ExpertOtherInfo expertOtherInfo;

@NotEmpty
@ApiModelProperty("专家申请履职意向展示列表")
private List<ExpertRegionInfo> expertApplyIntentionWorkRegions;

}

+ 16
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/service/ExpertInfoService.java View File

@@ -1,6 +1,8 @@
package com.ningdatech.pmapi.expert.service;

import com.ningdatech.pmapi.expert.model.cmd.ExpertFullInfoSaveCmd;
import com.ningdatech.pmapi.expert.model.cmd.ExpertRecommendProofSaveCmd;
import com.ningdatech.pmapi.expert.model.dto.ExpertFullInfoAllDTO;

/**
* @author liuxinxin
@@ -11,4 +13,18 @@ public interface ExpertInfoService {

void saveExpertInfo(ExpertFullInfoSaveCmd cmd);

/**
* 专家报名提交 推荐证明材料
*
* @param expertRecommendProofSaveCmd
*/
void expertRecommendProofSave(ExpertRecommendProofSaveCmd expertRecommendProofSaveCmd);

/**
* 根据user_id 获取用户全量信息
*
* @param userId
* @return
*/
ExpertFullInfoAllDTO getExpertUserFullInfoAll(Long userId);
}

+ 72
- 0
pmapi/src/main/java/com/ningdatech/pmapi/expert/service/impl/ExpertInfoServiceImpl.java View File

@@ -4,14 +4,18 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ningdatech.pmapi.common.constant.BoolDisplayEnum;
import com.ningdatech.pmapi.expert.assembler.ExpertUserInfoAssembler;
import com.ningdatech.pmapi.expert.constant.ExpertAccountStatusEnum;
import com.ningdatech.pmapi.expert.constant.ExpertUserInfoStepEnum;
import com.ningdatech.pmapi.expert.entity.ExpertAvoidCompany;
import com.ningdatech.pmapi.expert.entity.ExpertIntentionWorkRegion;
import com.ningdatech.pmapi.expert.entity.ExpertUserFullInfo;
import com.ningdatech.pmapi.expert.model.cmd.ExpertFullInfoSaveCmd;
import com.ningdatech.pmapi.expert.model.cmd.ExpertRecommendProofSaveCmd;
import com.ningdatech.pmapi.expert.model.dto.*;
import com.ningdatech.pmapi.expert.service.ExpertInfoService;
import com.ningdatech.pmapi.expert.service.IExpertAvoidCompanyService;
import com.ningdatech.pmapi.expert.service.IExpertIntentionWorkRegionService;
import com.ningdatech.pmapi.expert.service.IExpertUserFullInfoService;
import com.ningdatech.pmapi.meta.model.entity.ExpertDictionary;
import com.ningdatech.pmapi.meta.model.entity.ExpertTag;
@@ -44,6 +48,8 @@ public class ExpertInfoServiceImpl implements ExpertInfoService {

private final IExpertAvoidCompanyService iExpertAvoidCompanyService;

private final IExpertIntentionWorkRegionService iExpertIntentionWorkRegionService;


/**
* 用户第一次申请修改,仅在专家用户状态为applying 状态时调用
@@ -216,4 +222,70 @@ public class ExpertInfoServiceImpl implements ExpertInfoService {
}).collect(Collectors.toList());
}

@Override
@Transactional(rollbackFor = Exception.class)
public void expertRecommendProofSave(ExpertRecommendProofSaveCmd cmd) {
// 保存专家证明材料
Long userId = cmd.getUserId();
ExpertUserFullInfo expertUserFullInfo = iExpertUserFullInfoService.getByUserId(userId);
expertUserFullInfo.setRecommendationProofFileIdList(JSONObject.toJSONString(cmd.getRecommendationProofFileIdList()));
expertUserFullInfo.setUpdateOn(LocalDateTime.now());
expertUserFullInfo.setUserInfoStep(ExpertUserInfoStepEnum.EVIDENCE_HAS_BEEN_SUBMITTED.getKey());
iExpertUserFullInfoService.saveOrUpdate(expertUserFullInfo);

List<ExpertDictionaryDTO> recommendedWayList = cmd.getRecommendedWay();
if (CollectionUtils.isNotEmpty(recommendedWayList)) {
List<ExpertDictionary> saveExpertDictionaryList = recommendedWayList.stream().map(r -> {
ExpertDictionary expertDictionary = new ExpertDictionary();
expertDictionary.setUserId(userId);
expertDictionary.setExpertInfoField(r.getExpertInfoField());
expertDictionary.setDictionaryCode(r.getDictionaryCode());
expertDictionary.setUpdateOn(LocalDateTime.now());
expertDictionary.setCreateOn(LocalDateTime.now());
return expertDictionary;
}).collect(Collectors.toList());
iExpertDictionaryService.saveBatch(saveExpertDictionaryList);
}

// // 创建入库申请
// ExpertMetaApply expertRegionApply = new ExpertMetaApply();
// expertRegionApply.setApplyType(ExpertApplyTypeEnum.EXPERT_STORAGE.getKey());
// expertRegionApply.setApplyStatus(ExpertApplyStatusEnum.PENDING_REVIEW.getKey());
// expertRegionApply.setRegionCode(expertUserFullInfo.getRegionCode());
// expertRegionApply.setRegionLevel(expertUserFullInfo.getRegionLevel());
// expertRegionApply.setUserId(userId);
// expertRegionApply.setDisplayEnable(BoolDisplayEnum.Y.name());
// iExpertMetaApplyService.save(expertRegionApply);
}

@Override
public ExpertFullInfoAllDTO getExpertUserFullInfoAll(Long userId) {
ExpertUserFullInfo expertUserFullInfo = iExpertUserFullInfoService.getByUserId(userId);
if (Objects.isNull(expertUserFullInfo)) {
return null;
}
// 所有专家标签字段
List<ExpertTag> expertTagList = iExpertTagService
.list(Wrappers.lambdaQuery(ExpertTag.class).eq(ExpertTag::getUserId, userId));
// 所有专家字典字段
List<ExpertDictionary> expertDictionaryList = iExpertDictionaryService
.list(Wrappers.lambdaQuery(ExpertDictionary.class).eq(ExpertDictionary::getUserId, userId));
// 专家履职意向列表
List<ExpertIntentionWorkRegion> expertIntentionWorkRegionList = iExpertIntentionWorkRegionService
.list(Wrappers.lambdaQuery(ExpertIntentionWorkRegion.class).eq(ExpertIntentionWorkRegion::getUserId, userId));
// // 专家履职意向申请列表
// List<ExpertMetaApply> expertMetaApplyList = iExpertMetaApplyService.list(Wrappers.lambdaQuery(ExpertMetaApply.class)
// .eq(ExpertMetaApply::getUserId, userId)
// .eq(ExpertMetaApply::getApplyStatus, ExpertApplyStatusEnum.PENDING_REVIEW.getKey())
// .in(ExpertMetaApply::getApplyType, ExpertApplyTypeEnum.EXPERT_INTENTION_JOIN.getKey(), ExpertApplyTypeEnum.EXPERT_INTENTION_LEAVE.getKey()));
// 所有专家回避单位
List<ExpertAvoidCompany> expertAvoidCompanyList = iExpertAvoidCompanyService
.list(Wrappers.lambdaQuery(ExpertAvoidCompany.class).eq(ExpertAvoidCompany::getUserId, userId));

// return ExpertUserInfoAssembler.buildExpertFullInfoAllDTO(expertUserFullInfo, expertTagList, expertDictionaryList
// , expertIntentionWorkRegionList, expertMetaApplyList, expertAvoidCompanyList);
return ExpertUserInfoAssembler.buildExpertFullInfoAllDTO(expertUserFullInfo, expertTagList, expertDictionaryList
, expertIntentionWorkRegionList, expertAvoidCompanyList);
}

}

+ 0
- 3
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/controller/ProjectLibController.java View File

@@ -2,13 +2,10 @@ package com.ningdatech.pmapi.projectlib.controller;

import com.ningdatech.basic.model.PageVo;
import com.ningdatech.pmapi.projectlib.manage.ProjectLibManage;

import com.ningdatech.pmapi.projectlib.model.entity.Project;
import com.ningdatech.pmapi.projectlib.model.req.ProjectListReq;
import com.ningdatech.pmapi.projectlib.model.vo.ProcessDetailVO;
import com.ningdatech.pmapi.projectlib.model.vo.ProjectDetailVO;
import com.ningdatech.pmapi.projectlib.model.vo.ProjectLibListItemVO;
import com.ningdatech.pmapi.todocenter.model.dto.req.ToBeProcessedExportReq;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;


+ 19
- 19
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectLibManage.java View File

@@ -23,13 +23,15 @@ import com.ningdatech.pmapi.projectlib.model.vo.ProjectLibListItemVO;
import com.ningdatech.pmapi.projectlib.service.IProjectApplicationService;
import com.ningdatech.pmapi.projectlib.service.IProjectRenewalFundDeclarationService;
import com.ningdatech.pmapi.projectlib.service.IProjectService;
import com.ningdatech.pmapi.todocenter.enumeration.IsAppendProjectEnum;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;

/**
* <p>
@@ -80,7 +82,6 @@ public class ProjectLibManage {
}

/**
*
* @param projectId 项目详情
* @return com.ningdatech.pmapi.projectlib.model.entity.vo.ProjectDetailVO
* @author ZPF
@@ -89,7 +90,7 @@ public class ProjectLibManage {
public ProjectDetailVO getProjectDetail(Long projectId) {
// 查询项目申报信息
Project projectInfo = projectService.getById(projectId);
if(Objects.isNull(projectInfo)){
if (Objects.isNull(projectInfo)) {
return null;
}
ProjectDetailVO vo = new ProjectDetailVO();
@@ -101,28 +102,28 @@ public class ProjectLibManage {
Optional.ofNullable(applications).ifPresent(apps ->
vo.setProjectApplications(CollUtils.convert(apps,
ProjectHelper::convertVO)
));
));

//查询年度投资金额 要是已验收的项目
if(ProjectStatusEnum.ACCEPTED.getCode().equals(projectInfo.getStatus())){
if (ProjectStatusEnum.ACCEPTED.getCode().equals(projectInfo.getStatus())) {
List<AnnualAmountVO> annualAmounts = Lists.newArrayList();
annualAmounts.add(AnnualAmountVO.builder()
.projectId(projectInfo.getId())
.projectYear(projectInfo.getProjectYear())
.annualAmount(projectInfo.getAnnualPlanAmount())
.build());
.projectId(projectInfo.getId())
.projectYear(projectInfo.getProjectYear())
.annualAmount(projectInfo.getAnnualPlanAmount())
.build());
List<ProjectRenewalFundDeclaration> renewalDeclarations = renewalFundDeclarationService.list(Wrappers.lambdaQuery(ProjectRenewalFundDeclaration.class)
.eq(ProjectRenewalFundDeclaration::getProjectId, vo.getId())
.orderByAsc(ProjectRenewalFundDeclaration::getProjectYear));
Optional.ofNullable(renewalDeclarations).ifPresent(declarations ->
declarations.forEach(declaration -> {
annualAmounts.add(AnnualAmountVO.builder()
.projectId(projectInfo.getId())
.projectYear(declaration.getProjectYear())
.annualAmount(declaration.getAnnualPaymentAmount())
.build());
})
);
declarations.forEach(declaration -> {
annualAmounts.add(AnnualAmountVO.builder()
.projectId(projectInfo.getId())
.projectYear(declaration.getProjectYear())
.annualAmount(declaration.getAnnualPaymentAmount())
.build());
})
);
vo.setAnnualAccumulateAmountList(annualAmounts);
}
return vo;
@@ -134,7 +135,6 @@ public class ProjectLibManage {
}

public void exportList(ProjectListReq param, HttpServletResponse response) {

param.setPageNumber(CommonConstant.EXPORT_PAGE_NUMBER);
param.setPageSize(CommonConstant.EXPORT_PAGE_SIZE);
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);


Loading…
Cancel
Save