@@ -13,6 +13,7 @@ import com.ningdatech.pmapi.sys.mapper.RoleMapper; | |||||
import com.ningdatech.pmapi.sys.model.entity.Role; | import com.ningdatech.pmapi.sys.model.entity.Role; | ||||
import com.ningdatech.pmapi.sys.model.entity.UserRole; | import com.ningdatech.pmapi.sys.model.entity.UserRole; | ||||
import com.ningdatech.pmapi.sys.service.IUserRoleService; | import com.ningdatech.pmapi.sys.service.IUserRoleService; | ||||
import com.ningdatech.pmapi.user.constant.UserAvailableEnum; | |||||
import com.ningdatech.pmapi.user.entity.UserInfo; | import com.ningdatech.pmapi.user.entity.UserInfo; | ||||
import com.ningdatech.pmapi.user.entity.enumeration.RoleEnum; | import com.ningdatech.pmapi.user.entity.enumeration.RoleEnum; | ||||
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | ||||
@@ -118,6 +119,11 @@ public class UserInfoHelperImpl implements UserInfoHelper { | |||||
userFullInfo.setUsername(userInfo.getRealName()); | userFullInfo.setUsername(userInfo.getRealName()); | ||||
userFullInfo.setMobile(userInfo.getMobile()); | userFullInfo.setMobile(userInfo.getMobile()); | ||||
userFullInfo.setAccountId(userInfo.getAccountId()); | userFullInfo.setAccountId(userInfo.getAccountId()); | ||||
String available = userInfo.getAvailable(); | |||||
if (StringUtils.isNotBlank(available)) { | |||||
userFullInfo.setAvailable(UserAvailableEnum.valueOf(available)); | |||||
} | |||||
return userFullInfo; | return userFullInfo; | ||||
} | } | ||||
@@ -6,6 +6,7 @@ import com.ningdatech.pmapi.expert.manage.ExpertAdminManage; | |||||
import com.ningdatech.pmapi.expert.manage.ExpertManage; | import com.ningdatech.pmapi.expert.manage.ExpertManage; | ||||
import com.ningdatech.pmapi.expert.model.ExpertAdminExpertManageQuery; | import com.ningdatech.pmapi.expert.model.ExpertAdminExpertManageQuery; | ||||
import com.ningdatech.pmapi.expert.model.req.AdminExpertBasicInfoModifyRequest; | import com.ningdatech.pmapi.expert.model.req.AdminExpertBasicInfoModifyRequest; | ||||
import com.ningdatech.pmapi.expert.model.req.ExpertRegistrationRequest; | |||||
import com.ningdatech.pmapi.expert.model.req.ExpertUserBasicInfoSubmitRequest; | import com.ningdatech.pmapi.expert.model.req.ExpertUserBasicInfoSubmitRequest; | ||||
import com.ningdatech.pmapi.expert.model.req.GetZzdInfoRequest; | import com.ningdatech.pmapi.expert.model.req.GetZzdInfoRequest; | ||||
import com.ningdatech.pmapi.expert.model.vo.ExpertAdminExpertManageListVO; | import com.ningdatech.pmapi.expert.model.vo.ExpertAdminExpertManageListVO; | ||||
@@ -37,8 +38,14 @@ public class ExpertController { | |||||
private final ExpertManage expertManage; | private final ExpertManage expertManage; | ||||
private final ExpertAdminManage expertAdminManage; | private final ExpertAdminManage expertAdminManage; | ||||
@PostMapping("/registration") | |||||
@ApiOperation("社会专家报名") | |||||
public void expertRegistration(@Valid @RequestBody ExpertRegistrationRequest request) { | |||||
expertManage.expertRegistration(request); | |||||
} | |||||
@PostMapping("/basic-info-submit") | @PostMapping("/basic-info-submit") | ||||
@ApiOperation("填写基本信息接口(专家报名使用))") | |||||
@ApiOperation("专家管理员新增专家)") | |||||
public void expertBasicInfoSubmit(@Valid @RequestBody ExpertUserBasicInfoSubmitRequest request) { | public void expertBasicInfoSubmit(@Valid @RequestBody ExpertUserBasicInfoSubmitRequest request) { | ||||
expertManage.expertBasicInfoSubmit(request); | expertManage.expertBasicInfoSubmit(request); | ||||
} | } | ||||
@@ -35,7 +35,6 @@ public class ExpertMetaApplyController { | |||||
@PostMapping("/list") | @PostMapping("/list") | ||||
@ApiOperation(value = "审核列表筛选") | @ApiOperation(value = "审核列表筛选") | ||||
public PageVo<ExpertApplyMetaVO> metaApplyListQuery(@RequestBody @Valid MetaApplyListQuery metaApplyListQuery) { | public PageVo<ExpertApplyMetaVO> metaApplyListQuery(@RequestBody @Valid MetaApplyListQuery metaApplyListQuery) { | ||||
// ExpertMetaApplyValidator.metaApplyListQueryValidate(metaApplyListQuery); | |||||
return expertMetaApplyManage.metaApplyListQuery(metaApplyListQuery); | return expertMetaApplyManage.metaApplyListQuery(metaApplyListQuery); | ||||
} | } | ||||
@@ -17,13 +17,15 @@ import com.ningdatech.pmapi.expert.model.cmd.ExpertFullInfoSaveCmd; | |||||
import com.ningdatech.pmapi.expert.model.cmd.ExpertRecommendProofSaveCmd; | import com.ningdatech.pmapi.expert.model.cmd.ExpertRecommendProofSaveCmd; | ||||
import com.ningdatech.pmapi.expert.model.dto.ExpertDictionaryDTO; | import com.ningdatech.pmapi.expert.model.dto.ExpertDictionaryDTO; | ||||
import com.ningdatech.pmapi.expert.model.dto.ExpertFullInfoAllDTO; | import com.ningdatech.pmapi.expert.model.dto.ExpertFullInfoAllDTO; | ||||
import com.ningdatech.pmapi.expert.model.req.ExpertRegistrationRequest; | |||||
import com.ningdatech.pmapi.expert.model.req.ExpertUserBasicInfoSubmitRequest; | import com.ningdatech.pmapi.expert.model.req.ExpertUserBasicInfoSubmitRequest; | ||||
import com.ningdatech.pmapi.expert.model.req.MetaApplyResultRequest; | |||||
import com.ningdatech.pmapi.expert.model.vo.ExpertFullInfoVO; | import com.ningdatech.pmapi.expert.model.vo.ExpertFullInfoVO; | ||||
import com.ningdatech.pmapi.expert.service.ExpertInfoService; | import com.ningdatech.pmapi.expert.service.ExpertInfoService; | ||||
import com.ningdatech.pmapi.expert.service.IExpertUserFullInfoService; | import com.ningdatech.pmapi.expert.service.IExpertUserFullInfoService; | ||||
import com.ningdatech.pmapi.meta.constant.DictExpertInfoTypeEnum; | import com.ningdatech.pmapi.meta.constant.DictExpertInfoTypeEnum; | ||||
import com.ningdatech.pmapi.meta.model.ExpertRegionInfo; | import com.ningdatech.pmapi.meta.model.ExpertRegionInfo; | ||||
import com.ningdatech.pmapi.sms.constant.VerificationCodeType; | |||||
import com.ningdatech.pmapi.sms.helper.VerifyCodeCheckHelper; | |||||
import com.ningdatech.pmapi.sys.model.entity.Role; | import com.ningdatech.pmapi.sys.model.entity.Role; | ||||
import com.ningdatech.pmapi.sys.model.entity.UserRole; | import com.ningdatech.pmapi.sys.model.entity.UserRole; | ||||
import com.ningdatech.pmapi.sys.service.IRoleService; | import com.ningdatech.pmapi.sys.service.IRoleService; | ||||
@@ -63,59 +65,20 @@ public class ExpertManage { | |||||
private final ExpertMetaApplyManage expertMetaApplyManage; | private final ExpertMetaApplyManage expertMetaApplyManage; | ||||
private final IUserRoleService iUserRoleService; | private final IUserRoleService iUserRoleService; | ||||
private final IRoleService iRoleService; | private final IRoleService iRoleService; | ||||
private final VerifyCodeCheckHelper verifyCodeCheckHelper; | |||||
/** | /** | ||||
* 填写基本信息,只有专家自己可用 | |||||
* 专家管理员新增专家 | |||||
* | * | ||||
* @param req / | * @param req / | ||||
*/ | */ | ||||
@Transactional(rollbackFor = Exception.class) | @Transactional(rollbackFor = Exception.class) | ||||
public void expertBasicInfoSubmit(ExpertUserBasicInfoSubmitRequest req) { | public void expertBasicInfoSubmit(ExpertUserBasicInfoSubmitRequest req) { | ||||
// 用户id | // 用户id | ||||
ExpertBasicInfo basicInfo = req.getBasicInfo(); | |||||
Long userId = generateOrGetUserId(basicInfo); | |||||
// 校验区域编码合法性 校验履职意向编码合法性 | |||||
ExpertRegionInfo expertRegionInfo = basicInfo.getExpertRegionInfo(); | |||||
expertManageHelper.expertRegionInfoCheck(expertRegionInfo); | |||||
List<ExpertRegionInfo> expertIntentionWorkRegions = basicInfo.getExpertIntentionWorkRegions(); | |||||
for (ExpertRegionInfo expertIntentionWorkRegion : expertIntentionWorkRegions) { | |||||
expertManageHelper.expertRegionInfoCheck(expertIntentionWorkRegion); | |||||
} | |||||
ExpertEduInfo eduInfo = req.getEduInfo(); | |||||
ExpertJobInfo jobInfo = req.getJobInfo(); | |||||
ExpertProfessionalInfo professionalInfo = req.getProfessionalInfo(); | |||||
// 校验标签字段 | |||||
expertManageHelper.tagFieldCheck(professionalInfo, basicInfo); | |||||
// 校验字典字段 | |||||
expertManageHelper.dictionaryFieldCheck(basicInfo, eduInfo, jobInfo); | |||||
// 判断专家提交状态,判断是否可以进行此操作 | |||||
ExpertUserFullInfo expertUserFullInfo = iExpertUserFullInfoService.getByUserId(userId); | |||||
boolean submitBasicInfoStatusEnable = Objects.isNull(expertUserFullInfo) | |||||
|| (ExpertAccountStatusEnum.APPLYING.getKey().equals(expertUserFullInfo.getExpertAccountStatus()) | |||||
&& !ExpertUserInfoStepEnum.EVIDENCE_HAS_BEEN_SUBMITTED.getKey().equals(expertUserFullInfo.getUserInfoStep())); | |||||
if (submitBasicInfoStatusEnable) { | |||||
// 新建 保存 | |||||
ExpertFullInfoSaveCmd expertFullInfoSaveCmd = ExpertInfoCmdAssembler | |||||
.buildExpertFullInfoSaveCmd(userId, basicInfo, eduInfo, jobInfo, professionalInfo); | |||||
expertInfoService.saveExpertInfo(expertFullInfoSaveCmd); | |||||
} | |||||
ExpertRecommendInfo recommendInfo = req.getRecommendInfo(); | |||||
// 推荐证明材料 | |||||
List<DictionaryFieldInfo> recommendedWay = recommendInfo.getRecommendedWay(); | |||||
// 推荐方式 | |||||
List<FileBasicInfo> recommendProofFile = recommendInfo.getRecommendationProofFile(); | |||||
Long applyId = expertRecommendProofSubmit(recommendedWay, recommendProofFile, userId); | |||||
// 批量通过专家管理员审核 | |||||
MetaApplyResultRequest applyResult = new MetaApplyResultRequest(); | |||||
applyResult.setApplyId(applyId); | |||||
applyResult.setAuditOpinion("同意"); | |||||
applyResult.setApplyResult(true); | |||||
expertMetaApplyManage.metaApplyResult(applyResult); | |||||
Long userId = assemblerAndGenerateExpert(req); | |||||
// 批量通过专家入库审核/专家履职意向审核 | |||||
expertMetaApplyManage.autoPassExpertApply(userId); | |||||
// 增加用户专家角色 | // 增加用户专家角色 | ||||
Role expertRole = iRoleService.getOne(Wrappers.lambdaQuery(Role.class).eq(Role::getCode, RoleEnum.EXPERT.name())); | Role expertRole = iRoleService.getOne(Wrappers.lambdaQuery(Role.class).eq(Role::getCode, RoleEnum.EXPERT.name())); | ||||
@@ -202,4 +165,63 @@ public class ExpertManage { | |||||
} | } | ||||
return userInfo.getId(); | return userInfo.getId(); | ||||
} | } | ||||
/** | |||||
* 社会专家报名 需要校验手机号 | |||||
* | |||||
* @param request | |||||
*/ | |||||
@Transactional(rollbackFor = Exception.class) | |||||
public void expertRegistration(ExpertRegistrationRequest request) { | |||||
String verificationCode = request.getVerificationCode(); | |||||
String phoneNo = request.getBasicInfo().getPhoneNo(); | |||||
//校验 专家验证码 | |||||
if (false) { | |||||
verifyCodeCheckHelper.verification(VerificationCodeType.EXPERT_REGISTER, phoneNo, verificationCode); | |||||
} | |||||
assemblerAndGenerateExpert(request); | |||||
} | |||||
@Transactional(rollbackFor = Exception.class) | |||||
public Long assemblerAndGenerateExpert(ExpertUserBasicInfoSubmitRequest req) { | |||||
ExpertBasicInfo basicInfo = req.getBasicInfo(); | |||||
Long userId = generateOrGetUserId(basicInfo); | |||||
// 校验区域编码合法性 校验履职意向编码合法性 | |||||
ExpertRegionInfo expertRegionInfo = basicInfo.getExpertRegionInfo(); | |||||
expertManageHelper.expertRegionInfoCheck(expertRegionInfo); | |||||
List<ExpertRegionInfo> expertIntentionWorkRegions = basicInfo.getExpertIntentionWorkRegions(); | |||||
for (ExpertRegionInfo expertIntentionWorkRegion : expertIntentionWorkRegions) { | |||||
expertManageHelper.expertRegionInfoCheck(expertIntentionWorkRegion); | |||||
} | |||||
ExpertEduInfo eduInfo = req.getEduInfo(); | |||||
ExpertJobInfo jobInfo = req.getJobInfo(); | |||||
ExpertProfessionalInfo professionalInfo = req.getProfessionalInfo(); | |||||
// 校验标签字段 | |||||
expertManageHelper.tagFieldCheck(professionalInfo, basicInfo); | |||||
// 校验字典字段 | |||||
expertManageHelper.dictionaryFieldCheck(basicInfo, eduInfo, jobInfo); | |||||
// 判断专家提交状态,判断是否可以进行此操作 | |||||
ExpertUserFullInfo expertUserFullInfo = iExpertUserFullInfoService.getByUserId(userId); | |||||
boolean submitBasicInfoStatusEnable = Objects.isNull(expertUserFullInfo) | |||||
|| (ExpertAccountStatusEnum.APPLYING.getKey().equals(expertUserFullInfo.getExpertAccountStatus()) | |||||
&& !ExpertUserInfoStepEnum.EVIDENCE_HAS_BEEN_SUBMITTED.getKey().equals(expertUserFullInfo.getUserInfoStep())); | |||||
if (submitBasicInfoStatusEnable) { | |||||
// 新建 保存 | |||||
ExpertFullInfoSaveCmd expertFullInfoSaveCmd = ExpertInfoCmdAssembler | |||||
.buildExpertFullInfoSaveCmd(userId, basicInfo, eduInfo, jobInfo, professionalInfo); | |||||
expertInfoService.saveExpertInfo(expertFullInfoSaveCmd); | |||||
} | |||||
ExpertRecommendInfo recommendInfo = req.getRecommendInfo(); | |||||
// 推荐证明材料 | |||||
List<DictionaryFieldInfo> recommendedWay = recommendInfo.getRecommendedWay(); | |||||
// 推荐方式 | |||||
List<FileBasicInfo> recommendProofFile = recommendInfo.getRecommendationProofFile(); | |||||
expertRecommendProofSubmit(recommendedWay, recommendProofFile, userId); | |||||
return userId; | |||||
} | |||||
} | } |
@@ -14,7 +14,6 @@ import com.ningdatech.pmapi.common.helper.RegionCacheHelper; | |||||
import com.ningdatech.pmapi.common.helper.RegionLimitHelper; | import com.ningdatech.pmapi.common.helper.RegionLimitHelper; | ||||
import com.ningdatech.pmapi.common.helper.UserInfoHelper; | import com.ningdatech.pmapi.common.helper.UserInfoHelper; | ||||
import com.ningdatech.pmapi.common.util.BizUtils; | import com.ningdatech.pmapi.common.util.BizUtils; | ||||
import com.ningdatech.pmapi.expert.assembler.RegionWrapperAssembler; | |||||
import com.ningdatech.pmapi.expert.constant.ExpertApplyStatusEnum; | import com.ningdatech.pmapi.expert.constant.ExpertApplyStatusEnum; | ||||
import com.ningdatech.pmapi.expert.constant.ExpertApplyTypeEnum; | import com.ningdatech.pmapi.expert.constant.ExpertApplyTypeEnum; | ||||
import com.ningdatech.pmapi.expert.constant.ExpertApplyTypeQueryEnum; | import com.ningdatech.pmapi.expert.constant.ExpertApplyTypeQueryEnum; | ||||
@@ -82,18 +81,40 @@ public class ExpertMetaApplyManage { | |||||
private final ExpertAdminManageService expertAdminManageService; | private final ExpertAdminManageService expertAdminManageService; | ||||
private final IExpertDictionaryService iExpertDictionaryService; | |||||
public PageVo<ExpertApplyMetaVO> metaApplyListQuery(MetaApplyListQuery req) { | public PageVo<ExpertApplyMetaVO> metaApplyListQuery(MetaApplyListQuery req) { | ||||
Long expertAdminUserId = LoginUserUtil.getUserId(); | Long expertAdminUserId = LoginUserUtil.getUserId(); | ||||
// 筛选符合专家类型的用户id | |||||
List<Long> filterExpertTypeUserIdList = null; | |||||
DictionaryFieldInfo expertType = req.getExpertType(); | |||||
if (Objects.nonNull(expertType) && StringUtils.isNotBlank(expertType.getDictionaryCode())) { | |||||
List<ExpertDictionary> expertTypeDictionaryList = iExpertDictionaryService.list(Wrappers.lambdaQuery(ExpertDictionary.class) | |||||
.eq(ExpertDictionary::getDictionaryCode, expertType.getDictionaryCode())); | |||||
filterExpertTypeUserIdList = expertTypeDictionaryList.stream().map(ExpertDictionary::getUserId).distinct().collect(Collectors.toList()); | |||||
} | |||||
// 查找符合专家条件的用户id | // 查找符合专家条件的用户id | ||||
ExpertAdminExpertManageQueryCmd queryCmd = buildExpertAdminExpertManageQueryCmd(req); | ExpertAdminExpertManageQueryCmd queryCmd = buildExpertAdminExpertManageQueryCmd(req); | ||||
List<Long> filterExpertUserIdList = expertAdminManageService.filterExpertUserIdList(queryCmd); | List<Long> filterExpertUserIdList = expertAdminManageService.filterExpertUserIdList(queryCmd); | ||||
if (CollUtil.isEmpty(filterExpertUserIdList)) { | |||||
// 取交集 | |||||
List<Long> finalFilterExpertUserIdList = new ArrayList<>(); | |||||
if (Objects.nonNull(filterExpertTypeUserIdList)) { | |||||
for (Long userId : filterExpertUserIdList) { | |||||
if (filterExpertTypeUserIdList.contains(userId)) { | |||||
finalFilterExpertUserIdList.add(userId); | |||||
} | |||||
} | |||||
} | |||||
if (CollUtil.isEmpty(finalFilterExpertUserIdList)) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
LambdaQueryWrapper<ExpertMetaApply> expertMetaApplyListQuery = | LambdaQueryWrapper<ExpertMetaApply> expertMetaApplyListQuery = | ||||
buildMetaApplyListQueryWrapper(req, filterExpertUserIdList); | |||||
buildMetaApplyListQueryWrapper(req, finalFilterExpertUserIdList); | |||||
Page<ExpertMetaApply> pageResult = iMetaApplyService.page(req.page(), expertMetaApplyListQuery); | Page<ExpertMetaApply> pageResult = iMetaApplyService.page(req.page(), expertMetaApplyListQuery); | ||||
PageVo<ExpertApplyMetaVO> result = new PageVo<>(); | PageVo<ExpertApplyMetaVO> result = new PageVo<>(); | ||||
result.setTotal(pageResult.getTotal()); | result.setTotal(pageResult.getTotal()); | ||||
@@ -102,9 +123,12 @@ public class ExpertMetaApplyManage { | |||||
// 根据用户id 获取专家基本信息 | // 根据用户id 获取专家基本信息 | ||||
List<ExpertUserFullInfo> expertList = userFullInfoService.listByUserIds(expertIds); | List<ExpertUserFullInfo> expertList = userFullInfoService.listByUserIds(expertIds); | ||||
Map<Long, ExpertUserFullInfo> expertMap = CollUtils.listToMap(expertList, ExpertUserFullInfo::getUserId); | Map<Long, ExpertUserFullInfo> expertMap = CollUtils.listToMap(expertList, ExpertUserFullInfo::getUserId); | ||||
List<ExpertDictionary> expertDictList = expertDictionaryService.listByUserId(expertIds, DictExpertInfoTypeEnum.TITLE_LEVEL); | |||||
Map<Long, List<ExpertDictionary>> dictMap = CollUtils.group(expertDictList, ExpertDictionary::getUserId); | |||||
result.setRecords(buildExpertApplyMetaVOList(records, expertMap, dictMap)); | |||||
List<ExpertDictionary> titleLevelDictList = expertDictionaryService.listByUserId(expertIds, DictExpertInfoTypeEnum.TITLE_LEVEL); | |||||
Map<Long, List<ExpertDictionary>> titleLevelDictMap = CollUtils.group(titleLevelDictList, ExpertDictionary::getUserId); | |||||
List<ExpertDictionary> expertTypeDictList = expertDictionaryService.listByUserId(expertIds, DictExpertInfoTypeEnum.EXPERT_TYPE); | |||||
Map<Long, List<ExpertDictionary>> expertTypeDictMap = CollUtils.group(expertTypeDictList, ExpertDictionary::getUserId); | |||||
result.setRecords(buildExpertApplyMetaVOList(records, expertMap, titleLevelDictMap, expertTypeDictMap)); | |||||
}); | }); | ||||
return result; | return result; | ||||
} | } | ||||
@@ -398,18 +422,19 @@ public class ExpertMetaApplyManage { | |||||
return expertAdminExpertManageQueryCmd; | return expertAdminExpertManageQueryCmd; | ||||
} | } | ||||
/** | /** | ||||
* 装配 专家审核列表筛选返回VO | * 装配 专家审核列表筛选返回VO | ||||
* | * | ||||
* @param expertMetaApplyList / | |||||
* @param expertUserFullInfoMap / | |||||
* @param expertDictionaryListMap / | |||||
* @return / | |||||
* @param expertMetaApplyList | |||||
* @param expertUserFullInfoMap | |||||
* @param titleLevelDictMap | |||||
* @param expertTypeDictMap | |||||
* @return | |||||
*/ | */ | ||||
private List<ExpertApplyMetaVO> buildExpertApplyMetaVOList(List<ExpertMetaApply> expertMetaApplyList | private List<ExpertApplyMetaVO> buildExpertApplyMetaVOList(List<ExpertMetaApply> expertMetaApplyList | ||||
, Map<Long, ExpertUserFullInfo> expertUserFullInfoMap | , Map<Long, ExpertUserFullInfo> expertUserFullInfoMap | ||||
, Map<Long, List<ExpertDictionary>> expertDictionaryListMap) { | |||||
, Map<Long, List<ExpertDictionary>> titleLevelDictMap | |||||
, Map<Long, List<ExpertDictionary>> expertTypeDictMap) { | |||||
List<ExpertApplyMetaVO> expertApplyMetaVOList = new ArrayList<>(); | List<ExpertApplyMetaVO> expertApplyMetaVOList = new ArrayList<>(); | ||||
for (ExpertMetaApply expertMetaApply : expertMetaApplyList) { | for (ExpertMetaApply expertMetaApply : expertMetaApplyList) { | ||||
ExpertApplyMetaVO expertApplyMetaVO = new ExpertApplyMetaVO(); | ExpertApplyMetaVO expertApplyMetaVO = new ExpertApplyMetaVO(); | ||||
@@ -435,9 +460,24 @@ public class ExpertMetaApplyManage { | |||||
expertApplyMetaVO.setExpertRegionInfo(expertRegionInfo); | expertApplyMetaVO.setExpertRegionInfo(expertRegionInfo); | ||||
} | } | ||||
List<ExpertDictionary> expertDictionaryList = expertDictionaryListMap.get(userId); | |||||
if (CollectionUtils.isNotEmpty(expertDictionaryList)) { | |||||
expertApplyMetaVO.setTitleLevel(expertDictionaryList.stream().map(r -> { | |||||
List<ExpertDictionary> titleLevelDictionaryList = titleLevelDictMap.get(userId); | |||||
if (CollectionUtils.isNotEmpty(titleLevelDictionaryList)) { | |||||
expertApplyMetaVO.setTitleLevel(titleLevelDictionaryList.stream().map(r -> { | |||||
DictionaryDTO dictionaryDTO = dictionaryCache.getByCode(r.getDictionaryCode()); | |||||
DictionaryFieldInfo dictionaryFieldInfo = new DictionaryFieldInfo(); | |||||
dictionaryFieldInfo.setDictionaryCode(r.getDictionaryCode()); | |||||
dictionaryFieldInfo.setDictionaryFieldName(r.getExpertInfoField()); | |||||
if (Objects.nonNull(dictionaryDTO)) { | |||||
dictionaryFieldInfo.setDictionaryName(dictionaryDTO.getName()); | |||||
} | |||||
return dictionaryFieldInfo; | |||||
}).collect(Collectors.toList())); | |||||
} | |||||
// 装配专家类型 | |||||
List<ExpertDictionary> expertTypeDictionaryList = expertTypeDictMap.get(userId); | |||||
if (CollectionUtils.isNotEmpty(titleLevelDictionaryList)) { | |||||
expertApplyMetaVO.setExpertType(expertTypeDictionaryList.stream().map(r -> { | |||||
DictionaryDTO dictionaryDTO = dictionaryCache.getByCode(r.getDictionaryCode()); | DictionaryDTO dictionaryDTO = dictionaryCache.getByCode(r.getDictionaryCode()); | ||||
DictionaryFieldInfo dictionaryFieldInfo = new DictionaryFieldInfo(); | DictionaryFieldInfo dictionaryFieldInfo = new DictionaryFieldInfo(); | ||||
dictionaryFieldInfo.setDictionaryCode(r.getDictionaryCode()); | dictionaryFieldInfo.setDictionaryCode(r.getDictionaryCode()); | ||||
@@ -550,4 +590,25 @@ public class ExpertMetaApplyManage { | |||||
expertIntentionApplyDealCmd.setExpertRegionLevel(expertMetaApply.getRegionLevel()); | expertIntentionApplyDealCmd.setExpertRegionLevel(expertMetaApply.getRegionLevel()); | ||||
return expertIntentionApplyDealCmd; | return expertIntentionApplyDealCmd; | ||||
} | } | ||||
/** | |||||
* 专家管理员 新增专家使用使用 | |||||
* @param expertUserId | |||||
*/ | |||||
@Transactional(rollbackFor = Exception.class) | |||||
public void autoPassExpertApply(Long expertUserId) { | |||||
List<ExpertMetaApply> expertIntentionJoinApplyList = iMetaApplyService.list(Wrappers | |||||
.lambdaQuery(ExpertMetaApply.class) | |||||
.eq(ExpertMetaApply::getUserId, expertUserId) | |||||
.in(ExpertMetaApply::getApplyType, ExpertApplyTypeEnum.EXPERT_INTENTION_JOIN.getKey(), ExpertApplyTypeEnum.EXPERT_STORAGE.getKey()) | |||||
.eq(ExpertMetaApply::getApplyStatus, ExpertApplyStatusEnum.PENDING_REVIEW.getKey())); | |||||
for (ExpertMetaApply expertMetaApply : expertIntentionJoinApplyList) { | |||||
MetaApplyResultRequest applyResult = new MetaApplyResultRequest(); | |||||
applyResult.setApplyId(expertMetaApply.getId()); | |||||
applyResult.setAuditOpinion("同意"); | |||||
applyResult.setApplyResult(true); | |||||
metaApplyResult(applyResult); | |||||
} | |||||
} | |||||
} | } |
@@ -3,6 +3,7 @@ package com.ningdatech.pmapi.expert.model.cmd; | |||||
import com.ningdatech.basic.model.PagePo; | import com.ningdatech.basic.model.PagePo; | ||||
import com.ningdatech.pmapi.expert.constant.ExpertApplyStatusEnum; | import com.ningdatech.pmapi.expert.constant.ExpertApplyStatusEnum; | ||||
import com.ningdatech.pmapi.expert.constant.ExpertApplyTypeQueryEnum; | import com.ningdatech.pmapi.expert.constant.ExpertApplyTypeQueryEnum; | ||||
import com.ningdatech.pmapi.expert.model.DictionaryFieldInfo; | |||||
import com.ningdatech.pmapi.meta.model.ExpertRegionInfo; | import com.ningdatech.pmapi.meta.model.ExpertRegionInfo; | ||||
import io.swagger.annotations.ApiModel; | import io.swagger.annotations.ApiModel; | ||||
import io.swagger.annotations.ApiModelProperty; | import io.swagger.annotations.ApiModelProperty; | ||||
@@ -43,4 +44,7 @@ public class MetaApplyListQuery extends PagePo { | |||||
@ApiModelProperty("筛选结束时间") | @ApiModelProperty("筛选结束时间") | ||||
private LocalDateTime applyEndTime; | private LocalDateTime applyEndTime; | ||||
@ApiModelProperty("专家类型") | |||||
private DictionaryFieldInfo expertType; | |||||
} | } |
@@ -0,0 +1,21 @@ | |||||
package com.ningdatech.pmapi.expert.model.req; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import javax.validation.constraints.NotBlank; | |||||
/** | |||||
* @author liuxinxin | |||||
* @date 2022/7/25 下午2:21 | |||||
*/ | |||||
@Data | |||||
@ApiModel(value = "ExpertUserBasicInfoSubmitRequest", description = "社会专家报名接口") | |||||
public class ExpertRegistrationRequest extends ExpertUserBasicInfoSubmitRequest { | |||||
@NotBlank(message = "手机验证码不能为空") | |||||
@ApiModelProperty("手机验证码") | |||||
private String verificationCode; | |||||
} |
@@ -72,5 +72,8 @@ public class ExpertApplyMetaVO { | |||||
@ApiModelProperty("申请时间") | @ApiModelProperty("申请时间") | ||||
private LocalDateTime applyTime; | private LocalDateTime applyTime; | ||||
@ApiModelProperty("专家类型") | |||||
private List<DictionaryFieldInfo> expertType; | |||||
} | } |
@@ -17,6 +17,7 @@ import com.ningdatech.pmapi.projectlib.model.dto.ProjectDTO; | |||||
import com.ningdatech.pmapi.projectlib.model.entity.Project; | import com.ningdatech.pmapi.projectlib.model.entity.Project; | ||||
import com.ningdatech.pmapi.projectlib.service.IProjectService; | import com.ningdatech.pmapi.projectlib.service.IProjectService; | ||||
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | ||||
import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails; | |||||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | import com.ningdatech.pmapi.user.util.LoginUserUtil; | ||||
import com.wflow.bean.entity.WflowModels; | import com.wflow.bean.entity.WflowModels; | ||||
import com.wflow.bean.entity.WflowOrgModels; | import com.wflow.bean.entity.WflowOrgModels; | ||||
@@ -216,15 +217,13 @@ public class DefaultDeclaredProjectManage { | |||||
} | } | ||||
//根据提交者的单位 | //根据提交者的单位 | ||||
public DeclaredProjectStatisticsPO declaredProjectOrgStatistics(Integer year){ | |||||
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | |||||
public DeclaredProjectStatisticsPO declaredProjectOrgStatistics(Integer year, UserFullInfoDTO user){ | |||||
//查此人建设单位的项目 | //查此人建设单位的项目 | ||||
return statisticsService.getOrgStatistics(user.getEmpPosUnitCode(),year); | return statisticsService.getOrgStatistics(user.getEmpPosUnitCode(),year); | ||||
} | } | ||||
//根据提交者的区域 他是区管或者超管 | //根据提交者的区域 他是区管或者超管 | ||||
public DeclaredProjectStatisticsPO declaredProjectRegionStatistics(Integer year){ | |||||
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | |||||
public DeclaredProjectStatisticsPO declaredProjectRegionStatistics(Integer year, UserFullInfoDTO user){ | |||||
//查此人建设单位的项目 | //查此人建设单位的项目 | ||||
return statisticsService.getRegionStatistics(user.getRegionCode(),year); | return statisticsService.getRegionStatistics(user.getRegionCode(),year); | ||||
} | } | ||||
@@ -1,10 +1,13 @@ | |||||
package com.ningdatech.pmapi.projectlib.controller; | package com.ningdatech.pmapi.projectlib.controller; | ||||
import com.ningdatech.basic.model.PageVo; | import com.ningdatech.basic.model.PageVo; | ||||
import com.ningdatech.pmapi.common.helper.UserInfoHelper; | |||||
import com.ningdatech.pmapi.projectlib.manage.ProjectLibManage; | import com.ningdatech.pmapi.projectlib.manage.ProjectLibManage; | ||||
import com.ningdatech.pmapi.projectlib.model.req.ProjectListReq; | import com.ningdatech.pmapi.projectlib.model.req.ProjectListReq; | ||||
import com.ningdatech.pmapi.projectlib.model.vo.ProjectDetailVO; | import com.ningdatech.pmapi.projectlib.model.vo.ProjectDetailVO; | ||||
import com.ningdatech.pmapi.projectlib.model.vo.ProjectLibListItemVO; | import com.ningdatech.pmapi.projectlib.model.vo.ProjectLibListItemVO; | ||||
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | |||||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | |||||
import com.wflow.workflow.bean.vo.ProcessDetailVO; | import com.wflow.workflow.bean.vo.ProcessDetailVO; | ||||
import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
@@ -31,10 +34,13 @@ public class ProjectLibController { | |||||
private final ProjectLibManage projectLibManage; | private final ProjectLibManage projectLibManage; | ||||
private final UserInfoHelper userInfoHelper; | |||||
@GetMapping("/list") | @GetMapping("/list") | ||||
@ApiOperation("项目库列表") | @ApiOperation("项目库列表") | ||||
public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) { | public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) { | ||||
return projectLibManage.projectLibListWithPermission(req); | |||||
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | |||||
return projectLibManage.projectLibListWithPermission(req,user); | |||||
} | } | ||||
@GetMapping("/{id}") | @GetMapping("/{id}") | ||||
@@ -288,7 +288,7 @@ public class AnnualPlanLibManage { | |||||
return project; | return project; | ||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
// 保存到项目库中 | // 保存到项目库中 | ||||
projectService.saveBatch(projectList); | |||||
projectService.saveOrUpdateBatch(projectList); | |||||
// 筛选出导入的续建项目 | // 筛选出导入的续建项目 | ||||
List<AnnualLibImportDTO> continuedList = list.stream() | List<AnnualLibImportDTO> continuedList = list.stream() | ||||
@@ -108,9 +108,9 @@ public class ProjectLibManage { | |||||
return PageVo.of(records, total); | return PageVo.of(records, total); | ||||
} | } | ||||
public PageVo<ProjectLibListItemVO> projectLibListWithPermission(ProjectListReq req) { | |||||
public PageVo<ProjectLibListItemVO> projectLibListWithPermission(ProjectListReq req,UserFullInfoDTO user) { | |||||
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req); | LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req); | ||||
UserFullInfoDTO user = buildProjectLibPermission(query); | |||||
user = buildProjectLibPermission(query,user); | |||||
//项目查最新 | //项目查最新 | ||||
query.eq(Project::getNewest,Boolean.TRUE); | query.eq(Project::getNewest,Boolean.TRUE); | ||||
Page<Project> page = projectService.page(req.page(), query); | Page<Project> page = projectService.page(req.page(), query); | ||||
@@ -118,6 +118,7 @@ public class ProjectLibManage { | |||||
if ((total = page.getTotal()) == 0) { | if ((total = page.getTotal()) == 0) { | ||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
UserFullInfoDTO finalUser = user; | |||||
List<ProjectLibListItemVO> records = CollUtils.convert(page.getRecords(), w -> { | List<ProjectLibListItemVO> records = CollUtils.convert(page.getRecords(), w -> { | ||||
ProjectLibListItemVO item = new ProjectLibListItemVO(); | ProjectLibListItemVO item = new ProjectLibListItemVO(); | ||||
item.setId(w.getId()); | item.setId(w.getId()); | ||||
@@ -133,10 +134,10 @@ public class ProjectLibManage { | |||||
item.setProcessStatus(w.getProcessStatus()); | item.setProcessStatus(w.getProcessStatus()); | ||||
item.setInstCode(w.getInstCode()); | item.setInstCode(w.getInstCode()); | ||||
item.setIsHigherSuperOrg(w.getIsHigherSuperOrg()); | item.setIsHigherSuperOrg(w.getIsHigherSuperOrg()); | ||||
if (user.getIsOrgAdmin() && | |||||
if (finalUser.getIsOrgAdmin() && | |||||
ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode().equals(item.getStatus()) | ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode().equals(item.getStatus()) | ||||
&& StringUtils.isNotBlank(w.getSuperOrgCode()) && StringUtils.isNotBlank(user.getEmpPosUnitCode()) | |||||
&& w.getSuperOrgCode().equals(user.getEmpPosUnitCode())) { | |||||
&& StringUtils.isNotBlank(w.getSuperOrgCode()) && StringUtils.isNotBlank(finalUser.getEmpPosUnitCode()) | |||||
&& w.getSuperOrgCode().equals(finalUser.getEmpPosUnitCode())) { | |||||
item.setCanPreDeclared(Boolean.TRUE); | item.setCanPreDeclared(Boolean.TRUE); | ||||
} | } | ||||
return item; | return item; | ||||
@@ -522,8 +523,7 @@ public class ProjectLibManage { | |||||
* | * | ||||
* @param query | * @param query | ||||
*/ | */ | ||||
public UserFullInfoDTO buildProjectLibPermission(LambdaQueryWrapper<Project> query) { | |||||
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | |||||
public UserFullInfoDTO buildProjectLibPermission(LambdaQueryWrapper<Project> query,UserFullInfoDTO user) { | |||||
Optional<DataScopeDTO> currentUserDataScope = DataScopeUtil.getCurrentUserDataScope(user); | Optional<DataScopeDTO> currentUserDataScope = DataScopeUtil.getCurrentUserDataScope(user); | ||||
if (!currentUserDataScope.isPresent()) { | if (!currentUserDataScope.isPresent()) { | ||||
log.warn("没有取到权限信息 当前查询 没有权限条件"); | log.warn("没有取到权限信息 当前查询 没有权限条件"); | ||||
@@ -20,9 +20,14 @@ import java.util.stream.Stream; | |||||
public enum VerificationCodeType { | public enum VerificationCodeType { | ||||
/** | /** | ||||
* 用户注册 | |||||
* 用户登陆 | |||||
*/ | */ | ||||
LOGIN("用户登录", 1, 5, 10); | |||||
LOGIN("用户登录", 1, 5, 10), | |||||
/** | |||||
* 社会专家注册 | |||||
*/ | |||||
EXPERT_REGISTER("社会专家注册", 1, 5, 10); | |||||
@ApiModelProperty(value = "描述") | @ApiModelProperty(value = "描述") | ||||
private String desc; | private String desc; | ||||
@@ -13,7 +13,12 @@ public interface VoiceSmsTemplateConst { | |||||
/** | /** | ||||
* 短信登陆验证码 | * 短信登陆验证码 | ||||
*/ | */ | ||||
String SMS_LOGIN_TEMPLATE = "验证码:%s(有效期为%s分钟),请勿泄露给他人,如非本人操作,请忽略此信息。"; | |||||
String SMS_COMMON_TEMPLATE = "验证码:%s(有效期为%s分钟),请勿泄露给他人,如非本人操作,请忽略此信息。"; | |||||
/** | |||||
* 社会专家报名 | |||||
*/ | |||||
String EXPERT_REGISTER = "专家报名验证码:%s(有效期为%s分钟),请勿泄露给他人,如非本人操作,请忽略此信息。"; | |||||
/** | /** | ||||
* 专家电话通知语音模版 | * 专家电话通知语音模版 | ||||
@@ -66,16 +66,26 @@ public class SmsManage { | |||||
// 创建短信内容 | // 创建短信内容 | ||||
SendSmsCmd sendSmsCmd = new SendSmsCmd(); | SendSmsCmd sendSmsCmd = new SendSmsCmd(); | ||||
switch (verificationCodeTypeEnum) { | switch (verificationCodeTypeEnum) { | ||||
case LOGIN: | |||||
case LOGIN: { | |||||
SendSmsCmd.SendSmsContext sendSmsContext = new SendSmsCmd.SendSmsContext(); | SendSmsCmd.SendSmsContext sendSmsContext = new SendSmsCmd.SendSmsContext(); | ||||
sendSmsContext.setReceiveNumber(request.getMobile()); | sendSmsContext.setReceiveNumber(request.getMobile()); | ||||
sendSmsContext.setContent(String.format(VoiceSmsTemplateConst.SMS_LOGIN_TEMPLATE, code, verificationCodeTypeEnum.getExpireTime())); | |||||
sendSmsContext.setContent(String.format(VoiceSmsTemplateConst.SMS_COMMON_TEMPLATE, code, verificationCodeTypeEnum.getExpireTime())); | |||||
sendSmsCmd.setContextList(Collections.singletonList(sendSmsContext)); | sendSmsCmd.setContextList(Collections.singletonList(sendSmsContext)); | ||||
sendSmsCmd.setSmsSignEnum(YxtSmsSignEnum.ZJS_ELECTRONIC_EXPERT_LIB); | sendSmsCmd.setSmsSignEnum(YxtSmsSignEnum.ZJS_ELECTRONIC_EXPERT_LIB); | ||||
break; | |||||
} | |||||
break; | |||||
case EXPERT_REGISTER: { | |||||
SendSmsCmd.SendSmsContext sendSmsContext = new SendSmsCmd.SendSmsContext(); | |||||
sendSmsContext.setReceiveNumber(request.getMobile()); | |||||
sendSmsContext.setContent(String.format(VoiceSmsTemplateConst.EXPERT_REGISTER, code, verificationCodeTypeEnum.getExpireTime())); | |||||
sendSmsCmd.setContextList(Collections.singletonList(sendSmsContext)); | |||||
sendSmsCmd.setSmsSignEnum(YxtSmsSignEnum.ZJS_ELECTRONIC_EXPERT_LIB); | |||||
} | |||||
break; | |||||
default: | default: | ||||
throw new IllegalArgumentException("非法的短信发送类型"); | throw new IllegalArgumentException("非法的短信发送类型"); | ||||
} | } | ||||
// 发送 短信 | // 发送 短信 | ||||
yxtClient.submitSmsTask(sendSmsCmd); | yxtClient.submitSmsTask(sendSmsCmd); | ||||
log.info("send verificationCode mobile = {},code = {}", request.getMobile(), code); | log.info("send verificationCode mobile = {},code = {}", request.getMobile(), code); | ||||
@@ -26,6 +26,7 @@ public class WorkNoticeFlowMapUtil { | |||||
* 扫描的间隔越来越长 秒数 | * 扫描的间隔越来越长 秒数 | ||||
*/ | */ | ||||
public WorkNoticeFlowMapUtil(){ | public WorkNoticeFlowMapUtil(){ | ||||
intervalTimeMap.put(0,60); | |||||
intervalTimeMap.put(1,60 * 2); | intervalTimeMap.put(1,60 * 2); | ||||
intervalTimeMap.put(2,60 * 6); | intervalTimeMap.put(2,60 * 6); | ||||
intervalTimeMap.put(3,60 * 15); | intervalTimeMap.put(3,60 * 15); | ||||
@@ -68,6 +68,7 @@ public class WithDrawHandle { | |||||
} | } | ||||
ReqProcessHandlerDTO dto = new ReqProcessHandlerDTO(); | ReqProcessHandlerDTO dto = new ReqProcessHandlerDTO(); | ||||
dto.setTaskId(taskId); | dto.setTaskId(taskId); | ||||
dto.setInstanceId(instanceId); | |||||
return checkUserIsBefore(progressInstanceDetail.getProgressInfo(),dto); | return checkUserIsBefore(progressInstanceDetail.getProgressInfo(),dto); | ||||
} | } | ||||
@@ -122,11 +122,7 @@ public class TodoCenterManage { | |||||
private final RuntimeService runtimeService; | private final RuntimeService runtimeService; | ||||
private final IProjectService projectService; | private final IProjectService projectService; | ||||
private final ProjectLibManage projectLibManage; | private final ProjectLibManage projectLibManage; | ||||
private final StateMachineUtils stateMachineUtils; | |||||
private final IDingEmployeeInfoService dingEmployeeInfoService; | |||||
private final IDingOrganizationService dingOrganizationService; | |||||
private final ProcessInstanceService processInstanceService; | private final ProcessInstanceService processInstanceService; | ||||
private final INdWorkNoticeStagingService workNoticeStagingService; | |||||
private final DefaultDeclaredProjectManage defaultDeclaredProjectManage; | private final DefaultDeclaredProjectManage defaultDeclaredProjectManage; | ||||
private final IProjectApplicationService projectApplicationService; | private final IProjectApplicationService projectApplicationService; | ||||
private final UserInfoHelper userInfoHelper; | private final UserInfoHelper userInfoHelper; | ||||
@@ -152,12 +148,15 @@ public class TodoCenterManage { | |||||
* @since 2023/02/18 | * @since 2023/02/18 | ||||
*/ | */ | ||||
public PageVo<ResToBeProcessedVO> todoProjectList(ToBeProcessedReq param) { | public PageVo<ResToBeProcessedVO> todoProjectList(ToBeProcessedReq param) { | ||||
// 获取登录用户ID | |||||
Long userId = LoginUserUtil.getUserId(); | |||||
// 获取登录用户全量信息 | |||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | |||||
// 获取员工浙政钉code | |||||
String employeeCode = userFullInfo.getEmployeeCode(); | |||||
String employeeCode = param.getEmployeeCode(); | |||||
if(StringUtils.isBlank(employeeCode)){ | |||||
// 获取登录用户ID | |||||
Long userId = LoginUserUtil.getUserId(); | |||||
// 获取登录用户全量信息 | |||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | |||||
// 获取员工浙政钉code | |||||
employeeCode = userFullInfo.getEmployeeCode(); | |||||
} | |||||
// 查出项目库项目 | // 查出项目库项目 | ||||
ProjectListReq projectListReq = new ProjectListReq(); | ProjectListReq projectListReq = new ProjectListReq(); | ||||
@@ -184,7 +183,6 @@ public class TodoCenterManage { | |||||
Integer pageNumber = param.getPageNumber(); | Integer pageNumber = param.getPageNumber(); | ||||
Integer pageSize = param.getPageSize(); | Integer pageSize = param.getPageSize(); | ||||
req.setProcessDefId(param.getProcessDefId()); | req.setProcessDefId(param.getProcessDefId()); | ||||
req.setUserId(String.valueOf(userId)); | |||||
req.setEmployeeCode(employeeCode); | req.setEmployeeCode(employeeCode); | ||||
//有待办节点的(不包含退回) | //有待办节点的(不包含退回) | ||||
List<ProcessTaskVo> todoList = processTaskService.getUserTodoList(req); | List<ProcessTaskVo> todoList = processTaskService.getUserTodoList(req); | ||||
@@ -1136,13 +1134,7 @@ public class TodoCenterManage { | |||||
} | } | ||||
//获取当前登录人的 待办中心统计数据 | //获取当前登录人的 待办中心统计数据 | ||||
public TodoCenterStatisticsVO todoCenterStatistics(){ | |||||
Long userId = LoginUserUtil.getUserId(); | |||||
// 获取登录用户全量信息 | |||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | |||||
// 获取登录用户浙政钉code | |||||
String employeeCode = userFullInfo.getEmployeeCode(); | |||||
public TodoCenterStatisticsVO todoCenterStatistics(String employeeCode){ | |||||
//为了查询效率 还是自己去写统计接口 | //为了查询效率 还是自己去写统计接口 | ||||
TodoCenterStatisticsPO statistics = statisticsService.getStatistics(employeeCode); | TodoCenterStatisticsPO statistics = statisticsService.getStatistics(employeeCode); | ||||
TodoCenterStatisticsVO statisticsVO = BeanUtil.copyProperties(statistics,TodoCenterStatisticsVO.class); | TodoCenterStatisticsVO statisticsVO = BeanUtil.copyProperties(statistics,TodoCenterStatisticsVO.class); | ||||
@@ -45,4 +45,7 @@ public class ToBeProcessedReq extends PagePo implements Serializable { | |||||
@ApiModelProperty("流程配置ID") | @ApiModelProperty("流程配置ID") | ||||
private String processDefId; | private String processDefId; | ||||
@ApiModelProperty("登录人员工号") | |||||
private String employeeCode; | |||||
} | } |
@@ -3,7 +3,10 @@ package com.ningdatech.pmapi.todocenter.service.impl; | |||||
import com.ningdatech.pmapi.todocenter.mapper.StatisticsMapper; | import com.ningdatech.pmapi.todocenter.mapper.StatisticsMapper; | ||||
import com.ningdatech.pmapi.todocenter.model.po.TodoCenterStatisticsPO; | import com.ningdatech.pmapi.todocenter.model.po.TodoCenterStatisticsPO; | ||||
import com.ningdatech.pmapi.todocenter.service.StatisticsService; | import com.ningdatech.pmapi.todocenter.service.StatisticsService; | ||||
import com.wflow.workflow.bean.dto.TodoCenterListReqDTO; | |||||
import com.wflow.workflow.service.ProcessTaskService; | |||||
import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||
import org.flowable.engine.TaskService; | |||||
import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
import java.util.Objects; | import java.util.Objects; | ||||
@@ -20,18 +23,22 @@ public class StatisticsServiceImpl implements StatisticsService { | |||||
private final StatisticsMapper mapper; | private final StatisticsMapper mapper; | ||||
private final ProcessTaskService processTaskService; | |||||
private final TaskService taskService; | |||||
@Override | @Override | ||||
public TodoCenterStatisticsPO getStatistics(String employeeCode) { | public TodoCenterStatisticsPO getStatistics(String employeeCode) { | ||||
TodoCenterStatisticsPO res = new TodoCenterStatisticsPO(); | TodoCenterStatisticsPO res = new TodoCenterStatisticsPO(); | ||||
TodoCenterStatisticsPO todo = mapper.getTodoOrIdo(employeeCode); | |||||
if(Objects.nonNull(todo)){ | |||||
res.setTodoNum(todo.getTodoNum()); | |||||
} | |||||
TodoCenterStatisticsPO ido = mapper.getIdo(employeeCode); | |||||
if(Objects.nonNull(ido)){ | |||||
res.setIdoNum(ido.getIdoNum()); | |||||
} | |||||
TodoCenterListReqDTO req = new TodoCenterListReqDTO(); | |||||
req.setEmployeeCode(employeeCode); | |||||
Integer todoCount = processTaskService.getTodoCount(req); | |||||
res.setTodoNum(todoCount); | |||||
Integer idoCount = processTaskService.getUserIdoCount(req); | |||||
res.setIdoNum(idoCount); | |||||
TodoCenterStatisticsPO submit = mapper.mysubmitNum(employeeCode); | TodoCenterStatisticsPO submit = mapper.mysubmitNum(employeeCode); | ||||
if(Objects.nonNull(submit)){ | if(Objects.nonNull(submit)){ | ||||
res.setMysubmitNum(submit.getMysubmitNum()); | res.setMysubmitNum(submit.getMysubmitNum()); | ||||
@@ -2,8 +2,10 @@ package com.ningdatech.pmapi.user.security.auth.agent; | |||||
import com.ningdatech.pmapi.common.helper.UserInfoHelper; | import com.ningdatech.pmapi.common.helper.UserInfoHelper; | ||||
import com.ningdatech.pmapi.user.constant.UserAvailableEnum; | |||||
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | ||||
import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails; | import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails; | ||||
import com.ningdatech.pmapi.user.security.auth.validate.CommonLoginException; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import org.springframework.security.core.userdetails.UserDetailsService; | import org.springframework.security.core.userdetails.UserDetailsService; | ||||
import org.springframework.security.core.userdetails.UsernameNotFoundException; | import org.springframework.security.core.userdetails.UsernameNotFoundException; | ||||
@@ -32,6 +34,10 @@ public class AgentLoginUserDetailService implements UserDetailsService { | |||||
if (Objects.isNull(userFullInfoDTO)) { | if (Objects.isNull(userFullInfoDTO)) { | ||||
throw new UsernameNotFoundException(String.format("%s user not exist", username)); | throw new UsernameNotFoundException(String.format("%s user not exist", username)); | ||||
} | } | ||||
if (UserAvailableEnum.DISABLE.equals(userFullInfoDTO.getAvailable())) { | |||||
throw new CommonLoginException("该账号已被禁用"); | |||||
} | |||||
UserInfoDetails userInfoDetails = new UserInfoDetails(); | UserInfoDetails userInfoDetails = new UserInfoDetails(); | ||||
userInfoDetails.setUserId(userFullInfoDTO.getUserId()); | userInfoDetails.setUserId(userFullInfoDTO.getUserId()); | ||||
userInfoDetails.setUsername(userFullInfoDTO.getUsername()); | userInfoDetails.setUsername(userFullInfoDTO.getUsername()); | ||||
@@ -1,9 +1,11 @@ | |||||
package com.ningdatech.pmapi.user.security.auth.common; | package com.ningdatech.pmapi.user.security.auth.common; | ||||
import com.ningdatech.pmapi.user.constant.UserAvailableEnum; | |||||
import com.ningdatech.pmapi.user.manage.UserInfoManage; | import com.ningdatech.pmapi.user.manage.UserInfoManage; | ||||
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | ||||
import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails; | import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails; | ||||
import com.ningdatech.pmapi.user.security.auth.validate.CommonLoginException; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import org.springframework.security.core.userdetails.UserDetailsService; | import org.springframework.security.core.userdetails.UserDetailsService; | ||||
import org.springframework.security.core.userdetails.UsernameNotFoundException; | import org.springframework.security.core.userdetails.UsernameNotFoundException; | ||||
@@ -30,6 +32,9 @@ public class CommonLoginUserDetailService implements UserDetailsService { | |||||
if (Objects.isNull(userFullInfoDTO)) { | if (Objects.isNull(userFullInfoDTO)) { | ||||
throw new UsernameNotFoundException(String.format("%s user not exist", username)); | throw new UsernameNotFoundException(String.format("%s user not exist", username)); | ||||
} | } | ||||
if (UserAvailableEnum.DISABLE.equals(userFullInfoDTO.getAvailable())) { | |||||
throw new CommonLoginException("该账号已被禁用"); | |||||
} | |||||
UserInfoDetails userInfoDetails = new UserInfoDetails(); | UserInfoDetails userInfoDetails = new UserInfoDetails(); | ||||
userInfoDetails.setUserId(userFullInfoDTO.getUserId()); | userInfoDetails.setUserId(userFullInfoDTO.getUserId()); | ||||
userInfoDetails.setUsername(userFullInfoDTO.getUsername()); | userInfoDetails.setUsername(userFullInfoDTO.getUsername()); | ||||
@@ -2,6 +2,7 @@ package com.ningdatech.pmapi.user.security.auth.credential; | |||||
import com.ningdatech.pmapi.user.constant.LoginTypeEnum; | import com.ningdatech.pmapi.user.constant.LoginTypeEnum; | ||||
import com.ningdatech.pmapi.user.constant.UserAvailableEnum; | |||||
import com.ningdatech.pmapi.user.convert.UserInfoConvertor; | import com.ningdatech.pmapi.user.convert.UserInfoConvertor; | ||||
import com.ningdatech.pmapi.user.manage.UserInfoManage; | import com.ningdatech.pmapi.user.manage.UserInfoManage; | ||||
import com.ningdatech.pmapi.user.security.auth.constants.UserDeatilsServiceConstant; | import com.ningdatech.pmapi.user.security.auth.constants.UserDeatilsServiceConstant; | ||||
@@ -60,6 +61,10 @@ public class CredentialLoginUserDetailService implements UserDetailsService { | |||||
throw new UsernameNotFoundException(String.format("%s user not exist", username)); | throw new UsernameNotFoundException(String.format("%s user not exist", username)); | ||||
} | } | ||||
} | } | ||||
if (UserAvailableEnum.DISABLE.equals(userFullInfo.getAvailable())) { | |||||
throw new CommonLoginException("该账号已被禁用"); | |||||
} | |||||
return UserInfoConvertor.toUserInfoDetails(userFullInfo); | return UserInfoConvertor.toUserInfoDetails(userFullInfo); | ||||
} | } | ||||
} | } |
@@ -2,6 +2,7 @@ package com.ningdatech.pmapi.user.security.auth.model; | |||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import com.ningdatech.pmapi.sys.model.entity.Role; | import com.ningdatech.pmapi.sys.model.entity.Role; | ||||
import com.ningdatech.pmapi.user.constant.UserAvailableEnum; | |||||
import com.ningdatech.pmapi.user.entity.enumeration.RoleEnum; | import com.ningdatech.pmapi.user.entity.enumeration.RoleEnum; | ||||
import lombok.Data; | import lombok.Data; | ||||
@@ -74,6 +75,12 @@ public class UserFullInfoDTO { | |||||
private Long accountId; | private Long accountId; | ||||
/** | /** | ||||
* 用户是否可用 | |||||
*/ | |||||
private UserAvailableEnum available; | |||||
/** | |||||
* 取最高的权限 | * 取最高的权限 | ||||
* | * | ||||
* @return | * @return | ||||
@@ -1,22 +1,15 @@ | |||||
package com.ningdatech.pmapi.workbench.manage; | package com.ningdatech.pmapi.workbench.manage; | ||||
import cn.hutool.core.bean.BeanUtil; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.pmapi.common.helper.UserInfoHelper; | import com.ningdatech.pmapi.common.helper.UserInfoHelper; | ||||
import com.ningdatech.pmapi.projectdeclared.manage.DeclaredProjectManage; | import com.ningdatech.pmapi.projectdeclared.manage.DeclaredProjectManage; | ||||
import com.ningdatech.pmapi.projectdeclared.manage.DefaultDeclaredProjectManage; | import com.ningdatech.pmapi.projectdeclared.manage.DefaultDeclaredProjectManage; | ||||
import com.ningdatech.pmapi.projectdeclared.model.po.DeclaredProjectStatisticsPO; | |||||
import com.ningdatech.pmapi.projectlib.manage.ProjectLibManage; | import com.ningdatech.pmapi.projectlib.manage.ProjectLibManage; | ||||
import com.ningdatech.pmapi.projectlib.model.req.ProjectListReq; | import com.ningdatech.pmapi.projectlib.model.req.ProjectListReq; | ||||
import com.ningdatech.pmapi.sys.enumeration.NoticeTypeEnum; | |||||
import com.ningdatech.pmapi.sys.manage.NoticeManage; | import com.ningdatech.pmapi.sys.manage.NoticeManage; | ||||
import com.ningdatech.pmapi.sys.model.req.NoticeListReq; | import com.ningdatech.pmapi.sys.model.req.NoticeListReq; | ||||
import com.ningdatech.pmapi.sys.model.vo.NoticeListItemVO; | |||||
import com.ningdatech.pmapi.todocenter.manage.TodoCenterManage; | import com.ningdatech.pmapi.todocenter.manage.TodoCenterManage; | ||||
import com.ningdatech.pmapi.todocenter.model.req.ToBeProcessedReq; | import com.ningdatech.pmapi.todocenter.model.req.ToBeProcessedReq; | ||||
import com.ningdatech.pmapi.todocenter.model.vo.ResToBeProcessedVO; | |||||
import com.ningdatech.pmapi.todocenter.model.vo.TodoCenterStatisticsVO; | import com.ningdatech.pmapi.todocenter.model.vo.TodoCenterStatisticsVO; | ||||
import com.ningdatech.pmapi.todocenter.model.vo.TodoVO; | |||||
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | ||||
import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails; | import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails; | ||||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | import com.ningdatech.pmapi.user.util.LoginUserUtil; | ||||
@@ -24,7 +17,8 @@ import com.ningdatech.pmapi.workbench.converter.WorkbenchConverter; | |||||
import com.ningdatech.pmapi.workbench.model.vo.WorkbenchVO; | import com.ningdatech.pmapi.workbench.model.vo.WorkbenchVO; | ||||
import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.util.concurrent.CompletableFuture; | |||||
import java.util.concurrent.ForkJoinPool; | |||||
import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
/** | /** | ||||
@@ -51,34 +45,43 @@ public class WorkbenchManage { | |||||
public WorkbenchVO getWorkbenchData(Integer year){ | public WorkbenchVO getWorkbenchData(Integer year){ | ||||
WorkbenchVO res = new WorkbenchVO(); | WorkbenchVO res = new WorkbenchVO(); | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | |||||
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | |||||
//1.待办中心数据 | |||||
TodoCenterStatisticsVO statisticsVO = todoCenterManage.todoCenterStatistics(); | |||||
ToBeProcessedReq toBeProcessedReq = new ToBeProcessedReq(); | |||||
toBeProcessedReq.setPageNumber(1); | |||||
toBeProcessedReq.setPageSize(5); | |||||
statisticsVO.setTodoList(todoCenterManage.todoProjectList(toBeProcessedReq).getRecords() | |||||
.stream().map(v -> WorkbenchConverter.convert(v)).collect(Collectors.toList())); | |||||
res.setTodoCerter(statisticsVO); | |||||
CompletableFuture.allOf( | |||||
CompletableFuture.runAsync(()-> { | |||||
//1.待办中心数据 | |||||
TodoCenterStatisticsVO statisticsVO = todoCenterManage.todoCenterStatistics(user.getEmployeeCode()); | |||||
ToBeProcessedReq toBeProcessedReq = new ToBeProcessedReq(); | |||||
toBeProcessedReq.setPageNumber(1); | |||||
toBeProcessedReq.setPageSize(5); | |||||
toBeProcessedReq.setEmployeeCode(user.getEmployeeCode()); | |||||
statisticsVO.setTodoList(todoCenterManage.todoProjectList(toBeProcessedReq).getRecords() | |||||
.stream().map(v -> WorkbenchConverter.convert(v)).collect(Collectors.toList())); | |||||
res.setTodoCerter(statisticsVO); | |||||
}, ForkJoinPool.commonPool()), | |||||
CompletableFuture.runAsync(()-> { | |||||
//2.项目统计数据 | |||||
res.setOrgDeclared(WorkbenchConverter.convert(defaultDeclaredProjectManage.declaredProjectOrgStatistics(year,user))); | |||||
if(userInfoHelper.isSuperOrRegionAdmin(user.getUserId())){ | |||||
res.setRegionDeclared(WorkbenchConverter.convert(defaultDeclaredProjectManage.declaredProjectRegionStatistics(year,user))); | |||||
} | |||||
}, ForkJoinPool.commonPool()), | |||||
CompletableFuture.runAsync(()-> { | |||||
//3.所有公告按类型分 | |||||
NoticeListReq noticeListReq = new NoticeListReq(); | |||||
noticeListReq.setPageNumber(1); | |||||
noticeListReq.setPageSize(1000); | |||||
res.setNoticeList(noticeManage.listToMapByManager(noticeListReq)); | |||||
}, ForkJoinPool.commonPool()) | |||||
).join(); | |||||
//2.项目统计数据 | |||||
res.setOrgDeclared(WorkbenchConverter.convert(defaultDeclaredProjectManage.declaredProjectOrgStatistics(year))); | |||||
if(userInfoHelper.isSuperOrRegionAdmin(LoginUserUtil.getUserId())){ | |||||
res.setRegionDeclared(WorkbenchConverter.convert(defaultDeclaredProjectManage.declaredProjectRegionStatistics(year))); | |||||
} | |||||
//这个不能放入子线程 | |||||
ProjectListReq projectListReq = new ProjectListReq(); | ProjectListReq projectListReq = new ProjectListReq(); | ||||
projectListReq.setPageNumber(1); | projectListReq.setPageNumber(1); | ||||
projectListReq.setPageSize(5); | projectListReq.setPageSize(5); | ||||
projectListReq.setProjectYear(year); | projectListReq.setProjectYear(year); | ||||
projectListReq.setBuildOrgCode(user.getEmpPosUnitCode()); | projectListReq.setBuildOrgCode(user.getEmpPosUnitCode()); | ||||
res.setProjects(projectLibManage.projectLibListWithPermission(projectListReq).getRecords().stream().collect(Collectors.toList())); | |||||
//3.所有公告按类型分 | |||||
NoticeListReq noticeListReq = new NoticeListReq(); | |||||
noticeListReq.setPageNumber(1); | |||||
noticeListReq.setPageSize(1000); | |||||
res.setNoticeList(noticeManage.listToMapByManager(noticeListReq)); | |||||
res.setProjects(projectLibManage.projectLibListWithPermission(projectListReq,user).getRecords().stream().collect(Collectors.toList())); | |||||
return res; | return res; | ||||
} | } | ||||
@@ -25,6 +25,7 @@ security: | |||||
- /wflow/** | - /wflow/** | ||||
- /sys/** | - /sys/** | ||||
- /api/v1/verification/** | - /api/v1/verification/** | ||||
- /api/v1/expert/registration | |||||
ignore-csrf-urls: | ignore-csrf-urls: | ||||
- /api/v1/user/auth/** | - /api/v1/user/auth/** | ||||
- /v2/api-docs | - /v2/api-docs | ||||
@@ -42,6 +43,7 @@ security: | |||||
- /wflow/** | - /wflow/** | ||||
- /sys/** | - /sys/** | ||||
- /api/v1/verification/** | - /api/v1/verification/** | ||||
- /api/v1/expert/registration | |||||
role-map: | role-map: | ||||
"engineer": | "engineer": | ||||
"project_manager": | "project_manager": | ||||