@@ -39,6 +39,8 @@ public class BizConst { | |||||
*/ | */ | ||||
public static final long ROOT_REGION_CODE = 100000L; | public static final long ROOT_REGION_CODE = 100000L; | ||||
public static final double D100 = 100.0; | |||||
/** | /** | ||||
* 一级行政区划数量 | * 一级行政区划数量 | ||||
*/ | */ | ||||
@@ -3,11 +3,9 @@ package com.hz.pm.api.common.util; | |||||
import cn.hutool.core.util.StrUtil; | import cn.hutool.core.util.StrUtil; | ||||
import com.alibaba.fastjson.JSON; | import com.alibaba.fastjson.JSON; | ||||
import com.alibaba.fastjson.JSONArray; | import com.alibaba.fastjson.JSONArray; | ||||
import com.alibaba.fastjson.JSONObject; | |||||
import com.hz.pm.api.projectlib.enumeration.ProjectTypeNewEnum; | |||||
import com.ningdatech.basic.util.StrPool; | import com.ningdatech.basic.util.StrPool; | ||||
import com.ningdatech.file.entity.vo.result.FileResultVO; | import com.ningdatech.file.entity.vo.result.FileResultVO; | ||||
import com.hz.pm.api.projectlib.enumeration.ProjectTypeEnum; | |||||
import com.hz.pm.api.projectlib.enumeration.ProjectTypeNewEnum; | |||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
import org.springframework.util.NumberUtils; | import org.springframework.util.NumberUtils; | ||||
@@ -121,7 +119,7 @@ public class BizUtils { | |||||
public static String getProjectTypeName(String projectType) { | public static String getProjectTypeName(String projectType) { | ||||
if (Objects.nonNull(projectType)) { | if (Objects.nonNull(projectType)) { | ||||
return ProjectTypeNewEnum.getDesc(projectType); | |||||
return ProjectTypeNewEnum.getDesc(projectType); | |||||
} | } | ||||
return StringUtils.EMPTY; | return StringUtils.EMPTY; | ||||
} | } | ||||
@@ -134,17 +132,17 @@ public class BizUtils { | |||||
} | } | ||||
public static String computeRise(Integer numa, Integer numb) { | public static String computeRise(Integer numa, Integer numb) { | ||||
if((Objects.isNull(numb)|| numb.equals(0)) && | |||||
(Objects.isNull(numa)|| numa.equals(0))){ | |||||
if ((Objects.isNull(numb) || numb.equals(0)) && | |||||
(Objects.isNull(numa) || numa.equals(0))) { | |||||
return "0"; | return "0"; | ||||
} | } | ||||
if(Objects.isNull(numa) || numa.equals(0)){ | |||||
if (Objects.isNull(numa) || numa.equals(0)) { | |||||
return "-100"; | return "-100"; | ||||
} | } | ||||
if(Objects.isNull(numb)|| numb.equals(0)){ | |||||
if (Objects.isNull(numb) || numb.equals(0)) { | |||||
return "100"; | return "100"; | ||||
} | } | ||||
return BigDecimal.valueOf((numa - numb) * 100.0).divide(BigDecimal.valueOf(numb),2, RoundingMode.CEILING) | |||||
return BigDecimal.valueOf((numa - numb) * 100.0).divide(BigDecimal.valueOf(numb), 2, RoundingMode.CEILING) | |||||
.stripTrailingZeros().toPlainString(); | .stripTrailingZeros().toPlainString(); | ||||
} | } | ||||
@@ -155,22 +153,23 @@ public class BizUtils { | |||||
} | } | ||||
public static LocalDateTime convertLocalDateTime(String time) { | public static LocalDateTime convertLocalDateTime(String time) { | ||||
if(StringUtils.isBlank(time)){ | |||||
if (StringUtils.isBlank(time)) { | |||||
return null; | return null; | ||||
} | } | ||||
String[] timeSplit = time.split(StrPool.DASH); | String[] timeSplit = time.split(StrPool.DASH); | ||||
String year = timeSplit[0]; | String year = timeSplit[0]; | ||||
String month = "01"; | String month = "01"; | ||||
String dayOfMonth = "01"; | String dayOfMonth = "01"; | ||||
if(timeSplit.length > 1){ | |||||
if (timeSplit.length > 1) { | |||||
month = timeSplit[1]; | month = timeSplit[1]; | ||||
} | } | ||||
if(timeSplit.length > 2){ | |||||
if (timeSplit.length > 2) { | |||||
dayOfMonth = timeSplit[2]; | dayOfMonth = timeSplit[2]; | ||||
} | } | ||||
return LocalDateTime.of(Integer.parseInt(year), | return LocalDateTime.of(Integer.parseInt(year), | ||||
Integer.parseInt(month), | Integer.parseInt(month), | ||||
Integer.parseInt(dayOfMonth) | Integer.parseInt(dayOfMonth) | ||||
,0,0,0); | |||||
, 0, 0, 0); | |||||
} | } | ||||
} | } |
@@ -7,7 +7,7 @@ import com.hz.pm.api.expert.constant.QueryExpertAccountStatusEnum; | |||||
import com.hz.pm.api.expert.model.DictionaryFieldInfo; | import com.hz.pm.api.expert.model.DictionaryFieldInfo; | ||||
import com.hz.pm.api.expert.model.TagFieldInfo; | import com.hz.pm.api.expert.model.TagFieldInfo; | ||||
import com.hz.pm.api.expert.model.dto.ExpertAdminExpertManageListDTO; | import com.hz.pm.api.expert.model.dto.ExpertAdminExpertManageListDTO; | ||||
import com.hz.pm.api.expert.model.vo.ExpertAdminExpertManageListVO; | |||||
import com.hz.pm.api.expert.model.vo.ExpertLibraryListItemVO; | |||||
import com.hz.pm.api.meta.helper.DictionaryCache; | import com.hz.pm.api.meta.helper.DictionaryCache; | ||||
import com.hz.pm.api.meta.helper.impl.TagsCacheImpl; | import com.hz.pm.api.meta.helper.impl.TagsCacheImpl; | ||||
import com.hz.pm.api.meta.model.ExpertRegionInfo; | import com.hz.pm.api.meta.model.ExpertRegionInfo; | ||||
@@ -36,28 +36,28 @@ public class ExpertAdminExpertManageAssembler { | |||||
private final TagsCacheImpl tagCache; | private final TagsCacheImpl tagCache; | ||||
private final RegionCacheHelper regionCache; | private final RegionCacheHelper regionCache; | ||||
public List<ExpertAdminExpertManageListVO> toExpertAdminExpertManageListVOList( | |||||
public List<ExpertLibraryListItemVO> toExpertAdminExpertManageListVOList( | |||||
List<ExpertAdminExpertManageListDTO> expertManageListDTOList) { | List<ExpertAdminExpertManageListDTO> expertManageListDTOList) { | ||||
if (CollectionUtil.isEmpty(expertManageListDTOList)) { | if (CollectionUtil.isEmpty(expertManageListDTOList)) { | ||||
return new ArrayList<>(); | return new ArrayList<>(); | ||||
} | } | ||||
return expertManageListDTOList.stream().map(r -> { | return expertManageListDTOList.stream().map(r -> { | ||||
ExpertAdminExpertManageListVO expertAdminExpertManageListVO = new ExpertAdminExpertManageListVO(); | |||||
expertAdminExpertManageListVO.setUserId(r.getUserId()); | |||||
expertAdminExpertManageListVO.setExpertName(r.getExpertName()); | |||||
expertAdminExpertManageListVO.setPhoneNo(r.getPhoneNo()); | |||||
expertAdminExpertManageListVO.setIsDingUser(r.getIsDingUser()); | |||||
expertAdminExpertManageListVO.setCompany(r.getCompany()); | |||||
expertAdminExpertManageListVO.setLegalEntityCode(r.getLegalEntityCode()); | |||||
ExpertLibraryListItemVO expertLibraryListItemVO = new ExpertLibraryListItemVO(); | |||||
expertLibraryListItemVO.setUserId(r.getUserId()); | |||||
expertLibraryListItemVO.setExpertName(r.getExpertName()); | |||||
expertLibraryListItemVO.setPhoneNo(r.getPhoneNo()); | |||||
expertLibraryListItemVO.setIsDingUser(r.getIsDingUser()); | |||||
expertLibraryListItemVO.setCompany(r.getCompany()); | |||||
expertLibraryListItemVO.setLegalEntityCode(r.getLegalEntityCode()); | |||||
if (StringUtils.isNotBlank(r.getExpertAccountStatus())) { | if (StringUtils.isNotBlank(r.getExpertAccountStatus())) { | ||||
ExpertAccountStatusEnum statusEnum = ExpertAccountStatusEnum.of(r.getExpertAccountStatus()); | ExpertAccountStatusEnum statusEnum = ExpertAccountStatusEnum.of(r.getExpertAccountStatus()); | ||||
switch (statusEnum) { | switch (statusEnum) { | ||||
case FREEZE: | case FREEZE: | ||||
expertAdminExpertManageListVO.setExpertAccountStatus(QueryExpertAccountStatusEnum.FREEZING.getKey()); | |||||
expertLibraryListItemVO.setExpertAccountStatus(QueryExpertAccountStatusEnum.FREEZING.getKey()); | |||||
break; | break; | ||||
case AVAILABLE: | case AVAILABLE: | ||||
expertAdminExpertManageListVO.setExpertAccountStatus(QueryExpertAccountStatusEnum.NORMAL.getKey()); | |||||
expertLibraryListItemVO.setExpertAccountStatus(QueryExpertAccountStatusEnum.NORMAL.getKey()); | |||||
break; | break; | ||||
default: | default: | ||||
break; | break; | ||||
@@ -72,32 +72,32 @@ public class ExpertAdminExpertManageAssembler { | |||||
expertRegionInfo.setRegionCode(regionDTO.getRegionCode()); | expertRegionInfo.setRegionCode(regionDTO.getRegionCode()); | ||||
expertRegionInfo.setRegionLevel(regionDTO.getRegionLevel()); | expertRegionInfo.setRegionLevel(regionDTO.getRegionLevel()); | ||||
expertRegionInfo.setRegionName(regionDTO.getRegionName()); | expertRegionInfo.setRegionName(regionDTO.getRegionName()); | ||||
expertAdminExpertManageListVO.setExpertRegionInfo(expertRegionInfo); | |||||
expertLibraryListItemVO.setExpertRegionInfo(expertRegionInfo); | |||||
} | } | ||||
} | } | ||||
List<DictionaryFieldInfo> expertType = r.getExpertType(); | List<DictionaryFieldInfo> expertType = r.getExpertType(); | ||||
if (CollectionUtils.isNotEmpty(expertType)) { | if (CollectionUtils.isNotEmpty(expertType)) { | ||||
expertType = assembleDictionaryName(expertType); | expertType = assembleDictionaryName(expertType); | ||||
expertAdminExpertManageListVO.setExpertType(expertType); | |||||
expertLibraryListItemVO.setExpertType(expertType); | |||||
} | } | ||||
List<DictionaryFieldInfo> companyAttribute = r.getCompanyAttribute(); | List<DictionaryFieldInfo> companyAttribute = r.getCompanyAttribute(); | ||||
if (CollectionUtils.isNotEmpty(companyAttribute)) { | if (CollectionUtils.isNotEmpty(companyAttribute)) { | ||||
companyAttribute = assembleDictionaryName(companyAttribute); | companyAttribute = assembleDictionaryName(companyAttribute); | ||||
expertAdminExpertManageListVO.setCompanyAttribute(companyAttribute); | |||||
expertLibraryListItemVO.setCompanyAttribute(companyAttribute); | |||||
} | } | ||||
List<DictionaryFieldInfo> titleLevel = r.getTitleLevel(); | List<DictionaryFieldInfo> titleLevel = r.getTitleLevel(); | ||||
if (CollectionUtils.isNotEmpty(titleLevel)) { | if (CollectionUtils.isNotEmpty(titleLevel)) { | ||||
titleLevel = assembleDictionaryName(titleLevel); | titleLevel = assembleDictionaryName(titleLevel); | ||||
expertAdminExpertManageListVO.setTitleLevel(titleLevel); | |||||
expertLibraryListItemVO.setTitleLevel(titleLevel); | |||||
} | } | ||||
List<TagFieldInfo> expertSource = r.getExpertSource(); | List<TagFieldInfo> expertSource = r.getExpertSource(); | ||||
if (CollectionUtils.isNotEmpty(expertSource)) { | if (CollectionUtils.isNotEmpty(expertSource)) { | ||||
expertSource = assembleTagName(expertSource); | expertSource = assembleTagName(expertSource); | ||||
expertAdminExpertManageListVO.setExpertSource(expertSource); | |||||
expertLibraryListItemVO.setExpertSource(expertSource); | |||||
} | } | ||||
expertAdminExpertManageListVO.setCreateTime(r.getCreateTime()); | |||||
return expertAdminExpertManageListVO; | |||||
expertLibraryListItemVO.setCreateTime(r.getCreateTime()); | |||||
return expertLibraryListItemVO; | |||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
} | } | ||||
@@ -1,8 +1,6 @@ | |||||
package com.hz.pm.api.expert.controller; | package com.hz.pm.api.expert.controller; | ||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.log.annotation.WebLog; | |||||
import com.hz.pm.api.expert.manage.ExpertAdminManage; | import com.hz.pm.api.expert.manage.ExpertAdminManage; | ||||
import com.hz.pm.api.expert.manage.ExpertManage; | import com.hz.pm.api.expert.manage.ExpertManage; | ||||
import com.hz.pm.api.expert.model.ExpertAdminExpertManageQuery; | import com.hz.pm.api.expert.model.ExpertAdminExpertManageQuery; | ||||
@@ -10,10 +8,9 @@ import com.hz.pm.api.expert.model.req.AdminExpertBasicInfoModifyRequest; | |||||
import com.hz.pm.api.expert.model.req.ExpertRegistrationRequest; | import com.hz.pm.api.expert.model.req.ExpertRegistrationRequest; | ||||
import com.hz.pm.api.expert.model.req.ExpertUserBasicInfoSubmitRequest; | import com.hz.pm.api.expert.model.req.ExpertUserBasicInfoSubmitRequest; | ||||
import com.hz.pm.api.expert.model.req.GetZzdInfoRequest; | import com.hz.pm.api.expert.model.req.GetZzdInfoRequest; | ||||
import com.hz.pm.api.expert.model.vo.ExpertAdminExpertManageListVO; | |||||
import com.hz.pm.api.expert.model.vo.ExpertBasicInfoModifyResultVO; | |||||
import com.hz.pm.api.expert.model.vo.ExpertFullInfoVO; | |||||
import com.hz.pm.api.expert.model.vo.ZzdInfoByMobileVO; | |||||
import com.hz.pm.api.expert.model.vo.*; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.log.annotation.WebLog; | |||||
import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
@@ -80,13 +77,17 @@ public class ExpertController { | |||||
expertManage.expertBasicInfoSubmit(request); | expertManage.expertBasicInfoSubmit(request); | ||||
} | } | ||||
@GetMapping("/portrait/{expertId}/{year}") | |||||
public ExpertPortraitVO expertPortrait(@PathVariable Long expertId, @PathVariable Integer year) { | |||||
return expertManage.expertPortrait(expertId, year); | |||||
} | |||||
@GetMapping("/detail") | @GetMapping("/detail") | ||||
@ApiOperation("专家获取专家详细信息") | @ApiOperation("专家获取专家详细信息") | ||||
public ExpertFullInfoVO getExpertFullInfoDetail() { | public ExpertFullInfoVO getExpertFullInfoDetail() { | ||||
return expertManage.getExpertFullInfoDetail(null); | return expertManage.getExpertFullInfoDetail(null); | ||||
} | } | ||||
@GetMapping("/admin/detail") | @GetMapping("/admin/detail") | ||||
@ApiOperation("专家管理员获取专家详细信息") | @ApiOperation("专家管理员获取专家详细信息") | ||||
public ExpertFullInfoVO getExpertFullInfoDetail(@RequestParam(value = "expertUserId") @NotNull Long expertUserId) { | public ExpertFullInfoVO getExpertFullInfoDetail(@RequestParam(value = "expertUserId") @NotNull Long expertUserId) { | ||||
@@ -95,7 +96,7 @@ public class ExpertController { | |||||
@PostMapping("/expert-library/list") | @PostMapping("/expert-library/list") | ||||
@ApiOperation("专家库列表查询接口") | @ApiOperation("专家库列表查询接口") | ||||
public PageVo<ExpertAdminExpertManageListVO> getExpertLibraryList(@RequestBody @Valid ExpertAdminExpertManageQuery query) { | |||||
public PageVo<ExpertLibraryListItemVO> getExpertLibraryList(@RequestBody @Valid ExpertAdminExpertManageQuery query) { | |||||
return expertAdminManage.getExpertLibraryList(query); | return expertAdminManage.getExpertLibraryList(query); | ||||
} | } | ||||
@@ -29,7 +29,7 @@ import com.hz.pm.api.expert.model.query.ExpertTagQuery; | |||||
import com.hz.pm.api.expert.model.req.AdminExpertBasicInfoModifyRequest; | import com.hz.pm.api.expert.model.req.AdminExpertBasicInfoModifyRequest; | ||||
import com.hz.pm.api.expert.model.req.GetZzdInfoRequest; | import com.hz.pm.api.expert.model.req.GetZzdInfoRequest; | ||||
import com.hz.pm.api.expert.model.req.MetaApplyResultRequest; | import com.hz.pm.api.expert.model.req.MetaApplyResultRequest; | ||||
import com.hz.pm.api.expert.model.vo.ExpertAdminExpertManageListVO; | |||||
import com.hz.pm.api.expert.model.vo.ExpertLibraryListItemVO; | |||||
import com.hz.pm.api.expert.model.vo.ExpertBasicInfoModifyResultVO; | import com.hz.pm.api.expert.model.vo.ExpertBasicInfoModifyResultVO; | ||||
import com.hz.pm.api.expert.model.vo.ZzdInfoByMobileVO; | import com.hz.pm.api.expert.model.vo.ZzdInfoByMobileVO; | ||||
import com.hz.pm.api.expert.service.ExpertAdminManageService; | import com.hz.pm.api.expert.service.ExpertAdminManageService; | ||||
@@ -77,7 +77,7 @@ public class ExpertAdminManage { | |||||
* @param query | * @param query | ||||
* @return | * @return | ||||
*/ | */ | ||||
public PageVo<ExpertAdminExpertManageListVO> getExpertLibraryList(ExpertAdminExpertManageQuery query) { | |||||
public PageVo<ExpertLibraryListItemVO> getExpertLibraryList(ExpertAdminExpertManageQuery query) { | |||||
Long userId = LoginUserUtil.getUserId(); | Long userId = LoginUserUtil.getUserId(); | ||||
ExpertAdminExpertManageQueryCmd queryCmd = buildExpertAdminExpertManageQueryCmd(query, userId); | ExpertAdminExpertManageQueryCmd queryCmd = buildExpertAdminExpertManageQueryCmd(query, userId); | ||||
if (queryCmd.isHasNonData()) { | if (queryCmd.isHasNonData()) { | ||||
@@ -85,7 +85,7 @@ public class ExpertAdminManage { | |||||
} | } | ||||
CommonPage<ExpertAdminExpertManageListDTO> pageResult = expertAdminManageService.getExpertLibraryList(queryCmd); | CommonPage<ExpertAdminExpertManageListDTO> pageResult = expertAdminManageService.getExpertLibraryList(queryCmd); | ||||
PageVo<ExpertAdminExpertManageListVO> pageVo = new PageVo<>(); | |||||
PageVo<ExpertLibraryListItemVO> pageVo = new PageVo<>(); | |||||
pageVo.setTotal(pageResult.getItemsTotal()); | pageVo.setTotal(pageResult.getItemsTotal()); | ||||
pageVo.setRecords(expertAdminExpertManageAssembler.toExpertAdminExpertManageListVOList(pageResult.getItems())); | pageVo.setRecords(expertAdminExpertManageAssembler.toExpertAdminExpertManageListVOList(pageResult.getItems())); | ||||
return pageVo; | return pageVo; | ||||
@@ -3,7 +3,9 @@ package com.hz.pm.api.expert.manage; | |||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import cn.hutool.core.util.StrUtil; | import cn.hutool.core.util.StrUtil; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.hz.pm.api.common.constant.BizConst; | |||||
import com.hz.pm.api.common.model.FileBasicInfo; | import com.hz.pm.api.common.model.FileBasicInfo; | ||||
import com.hz.pm.api.common.model.entity.KeyValDTO; | |||||
import com.hz.pm.api.common.util.BizUtils; | import com.hz.pm.api.common.util.BizUtils; | ||||
import com.hz.pm.api.expert.assembler.ExpertInfoCmdAssembler; | import com.hz.pm.api.expert.assembler.ExpertInfoCmdAssembler; | ||||
import com.hz.pm.api.expert.assembler.ExpertUserInfoAssembler; | import com.hz.pm.api.expert.assembler.ExpertUserInfoAssembler; | ||||
@@ -20,9 +22,17 @@ import com.hz.pm.api.expert.model.dto.ExpertFullInfoAllDTO; | |||||
import com.hz.pm.api.expert.model.req.ExpertRegistrationRequest; | import com.hz.pm.api.expert.model.req.ExpertRegistrationRequest; | ||||
import com.hz.pm.api.expert.model.req.ExpertUserBasicInfoSubmitRequest; | import com.hz.pm.api.expert.model.req.ExpertUserBasicInfoSubmitRequest; | ||||
import com.hz.pm.api.expert.model.vo.ExpertFullInfoVO; | import com.hz.pm.api.expert.model.vo.ExpertFullInfoVO; | ||||
import com.hz.pm.api.expert.model.vo.ExpertPortraitVO; | |||||
import com.hz.pm.api.expert.service.ExpertInfoService; | import com.hz.pm.api.expert.service.ExpertInfoService; | ||||
import com.hz.pm.api.expert.service.IExpertUserFullInfoService; | import com.hz.pm.api.expert.service.IExpertUserFullInfoService; | ||||
import com.hz.pm.api.meeting.entity.config.WebProperties; | import com.hz.pm.api.meeting.entity.config.WebProperties; | ||||
import com.hz.pm.api.meeting.entity.domain.MeetingExpertJudge; | |||||
import com.hz.pm.api.meeting.entity.dto.ExpertInvitedRecordDTO; | |||||
import com.hz.pm.api.meeting.entity.enumeration.ExpertAttendStatusEnum; | |||||
import com.hz.pm.api.meeting.entity.enumeration.ExpertJudgeEnum.AttendStatus; | |||||
import com.hz.pm.api.meeting.entity.enumeration.ExpertJudgeEnum.Performance; | |||||
import com.hz.pm.api.meeting.service.IMeetingExpertJudgeService; | |||||
import com.hz.pm.api.meeting.service.IMeetingExpertService; | |||||
import com.hz.pm.api.meta.constant.DictExpertInfoTypeEnum; | import com.hz.pm.api.meta.constant.DictExpertInfoTypeEnum; | ||||
import com.hz.pm.api.meta.model.ExpertRegionInfo; | import com.hz.pm.api.meta.model.ExpertRegionInfo; | ||||
import com.hz.pm.api.sms.constant.VerificationCodeType; | import com.hz.pm.api.sms.constant.VerificationCodeType; | ||||
@@ -38,6 +48,7 @@ import com.hz.pm.api.user.service.IUserInfoService; | |||||
import com.hz.pm.api.user.util.LoginUserUtil; | import com.hz.pm.api.user.util.LoginUserUtil; | ||||
import com.ningdatech.basic.exception.BizException; | import com.ningdatech.basic.exception.BizException; | ||||
import com.ningdatech.basic.model.GenericResult; | import com.ningdatech.basic.model.GenericResult; | ||||
import com.ningdatech.basic.util.CollUtils; | |||||
import com.ningdatech.cache.model.cache.CacheKey; | import com.ningdatech.cache.model.cache.CacheKey; | ||||
import com.ningdatech.cache.repository.CachePlusOps; | import com.ningdatech.cache.repository.CachePlusOps; | ||||
import com.ningdatech.file.entity.vo.result.AttachFileVo; | import com.ningdatech.file.entity.vo.result.AttachFileVo; | ||||
@@ -55,11 +66,13 @@ import org.springframework.transaction.annotation.Transactional; | |||||
import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.nio.charset.StandardCharsets; | import java.nio.charset.StandardCharsets; | ||||
import java.time.Duration; | |||||
import java.time.LocalDateTime; | |||||
import java.time.*; | |||||
import java.time.temporal.TemporalAdjusters; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | |||||
import java.util.Objects; | import java.util.Objects; | ||||
import java.util.concurrent.atomic.AtomicInteger; | |||||
import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
/** | /** | ||||
@@ -84,6 +97,8 @@ public class ExpertManage { | |||||
private final VerifyCodeCheckHelper verifyCodeCheckHelper; | private final VerifyCodeCheckHelper verifyCodeCheckHelper; | ||||
private final CachePlusOps cachePlusOps; | private final CachePlusOps cachePlusOps; | ||||
private final ZwddClient zwddClient; | private final ZwddClient zwddClient; | ||||
private final IMeetingExpertService meetingExpertService; | |||||
private final IMeetingExpertJudgeService expertJudgeService; | |||||
@Value("${expert-registration.verify-code.check:true}") | @Value("${expert-registration.verify-code.check:true}") | ||||
private Boolean expertRegistrationVerifyCodeCheck; | private Boolean expertRegistrationVerifyCodeCheck; | ||||
@@ -291,4 +306,52 @@ public class ExpertManage { | |||||
return userId; | return userId; | ||||
} | } | ||||
public ExpertPortraitVO expertPortrait(Long expertId, Integer year) { | |||||
ExpertPortraitVO portrait = ExpertPortraitVO.init(); | |||||
LocalDate firstDate = LocalDate.of(year, 1, 1); | |||||
LocalDateTime sTime = firstDate.atStartOfDay(); | |||||
LocalDateTime eTime = firstDate.with(TemporalAdjusters.lastDayOfYear()).atTime(LocalTime.MAX); | |||||
List<ExpertInvitedRecordDTO> meetings = meetingExpertService.listByExpertIdAndTime(expertId, sTime, eTime); | |||||
portrait.setReceivedCount(meetings.size()); | |||||
if (!meetings.isEmpty()) { | |||||
AtomicInteger agreedCount = new AtomicInteger(0); | |||||
Map<Integer, Long> countByPerMonth = meetings.stream() | |||||
.filter(w -> { | |||||
boolean agreed = ExpertAttendStatusEnum.AGREED.eq(w.getStatus()); | |||||
if (agreed) { | |||||
agreedCount.incrementAndGet(); | |||||
} | |||||
return agreed; | |||||
}).collect(Collectors.groupingBy(w -> w.getCreateOn().getMonthValue(), Collectors.counting())); | |||||
portrait.setAttendCountPerMonth(new ArrayList<>()); | |||||
for (int i = 1; i <= Month.DECEMBER.getValue(); i++) { | |||||
KeyValDTO<Integer, Long> currMonth = KeyValDTO.of(i, countByPerMonth.getOrDefault(i, 0L)); | |||||
portrait.getAttendCountPerMonth().add(currMonth); | |||||
} | |||||
portrait.setConfirmedCount(agreedCount.get()); | |||||
List<Long> meetingExpertIds = CollUtils.fieldList(meetings, ExpertInvitedRecordDTO::getMeetingExpertId); | |||||
List<MeetingExpertJudge> expertJudges = expertJudgeService.listByMeetingExpertIds(meetingExpertIds); | |||||
if (!expertJudges.isEmpty()) { | |||||
int positivity = 0; | |||||
for (MeetingExpertJudge expertJudge : expertJudges) { | |||||
if (AttendStatus.BE_LATE.eq(expertJudge.getAttended())) { | |||||
portrait.incrBeLateCount(); | |||||
} | |||||
if (Boolean.TRUE.equals(expertJudge.getLeaveEarly())) { | |||||
portrait.incrLeaveEarlyCount(); | |||||
} | |||||
if (Boolean.TRUE.equals(expertJudge.getBrokeRule())) { | |||||
portrait.incrViolationCount(); | |||||
} | |||||
if (Performance.POSITIVE.eq(expertJudge.getPerformance())) { | |||||
positivity++; | |||||
} | |||||
} | |||||
portrait.setPositivity((int) Math.round(positivity * BizConst.D100 / expertJudges.size())); | |||||
} | |||||
} | |||||
return portrait; | |||||
} | |||||
} | } |
@@ -17,7 +17,7 @@ import java.util.List; | |||||
*/ | */ | ||||
@Data | @Data | ||||
@ApiModel("专家库列表查询返回model") | @ApiModel("专家库列表查询返回model") | ||||
public class ExpertAdminExpertManageListVO { | |||||
public class ExpertLibraryListItemVO { | |||||
@ApiModelProperty(value = "用户id") | @ApiModelProperty(value = "用户id") | ||||
private Long userId; | private Long userId; |
@@ -0,0 +1,64 @@ | |||||
package com.hz.pm.api.expert.model.vo; | |||||
import com.hz.pm.api.common.model.entity.KeyValDTO; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* ExpertPortraitVO | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 10:46 2023/12/19 | |||||
*/ | |||||
@Data | |||||
public class ExpertPortraitVO { | |||||
@ApiModelProperty("收到邀请次数") | |||||
private Integer receivedCount; | |||||
@ApiModelProperty("确认参加次数") | |||||
private Integer confirmedCount; | |||||
@ApiModelProperty("迟到次数") | |||||
private Integer beLateCount; | |||||
@ApiModelProperty("早退次数") | |||||
private Integer leaveEarlyCount; | |||||
@ApiModelProperty("参与积极度") | |||||
private Integer positivity; | |||||
@ApiModelProperty("违规次数") | |||||
private Integer violationCount; | |||||
@ApiModelProperty("每月参会次数") | |||||
private List<KeyValDTO<Integer, Long>> attendCountPerMonth; | |||||
public static ExpertPortraitVO init() { | |||||
ExpertPortraitVO portrait = new ExpertPortraitVO(); | |||||
portrait.setReceivedCount(0); | |||||
portrait.setPositivity(0); | |||||
portrait.setConfirmedCount(0); | |||||
portrait.setBeLateCount(0); | |||||
portrait.setViolationCount(0); | |||||
portrait.setLeaveEarlyCount(0); | |||||
return portrait; | |||||
} | |||||
public void incrBeLateCount() { | |||||
this.beLateCount += 1; | |||||
} | |||||
public void incrLeaveEarlyCount() { | |||||
this.leaveEarlyCount +=1; | |||||
} | |||||
public void incrViolationCount() { | |||||
this.violationCount += 1; | |||||
} | |||||
} |
@@ -203,10 +203,10 @@ public class MeetingController { | |||||
meetingManage.uploadMeetingResult(req); | meetingManage.uploadMeetingResult(req); | ||||
} | } | ||||
@GetMapping("/{meetingId}/listExpertEval") | |||||
@GetMapping("/{meetingId}/listExpertJudge") | |||||
@ApiOperation("查询会议专家评价信息") | @ApiOperation("查询会议专家评价信息") | ||||
@WebLog("查询会议专家评价信息") | @WebLog("查询会议专家评价信息") | ||||
public List<ExpertEvalListItemVO> listExpertEval(@PathVariable Long meetingId) { | |||||
public List<ExpertEvalListItemVO> listExpertJudge(@PathVariable Long meetingId) { | |||||
return meetingManage.listExpertJudge(meetingId); | return meetingManage.listExpertJudge(meetingId); | ||||
} | } | ||||
@@ -2,16 +2,18 @@ package com.hz.pm.api.meeting.entity.dto; | |||||
import lombok.Data; | import lombok.Data; | ||||
import java.time.LocalDateTime; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
* MeetingAndAttendStatusDto | |||||
* ExpertInvitedRecordDTO | |||||
* </p> | * </p> | ||||
* | * | ||||
* @author WendyYang | * @author WendyYang | ||||
* @since 22:48 2022/8/22 | * @since 22:48 2022/8/22 | ||||
*/ | */ | ||||
@Data | @Data | ||||
public class MeetingAndAttendStatusDTO { | |||||
public class ExpertInvitedRecordDTO { | |||||
private Long meetingId; | private Long meetingId; | ||||
@@ -23,4 +25,6 @@ public class MeetingAndAttendStatusDTO { | |||||
private Boolean attended; | private Boolean attended; | ||||
private LocalDateTime createOn; | |||||
} | } |
@@ -18,14 +18,9 @@ import java.time.LocalDateTime; | |||||
* @since 11:43 2022/8/8 | * @since 11:43 2022/8/8 | ||||
*/ | */ | ||||
@Data | @Data | ||||
@Builder | |||||
@ApiModel("会议实体(管理员列表)") | @ApiModel("会议实体(管理员列表)") | ||||
public class MeetingByManagerVO { | public class MeetingByManagerVO { | ||||
@Tolerate | |||||
public MeetingByManagerVO() { | |||||
} | |||||
@ApiModelProperty("会议ID") | @ApiModelProperty("会议ID") | ||||
private Long meetingId; | private Long meetingId; | ||||
@@ -102,21 +102,21 @@ public class MeetingManageHelper { | |||||
} | } | ||||
public MeetingByManagerVO buildByMeeting(Meeting meeting) { | public MeetingByManagerVO buildByMeeting(Meeting meeting) { | ||||
return MeetingByManagerVO.builder() | |||||
.meetingId(meeting.getId()) | |||||
.meetingType(meeting.getType()) | |||||
.meetingTypeName(MeetingReviewTypeEnum.getValue(meeting.getType())) | |||||
.meetingName(meeting.getName()) | |||||
.startTime(meeting.getStartTime()) | |||||
.endTime(meeting.getEndTime()) | |||||
.inviteType(meeting.getInviteType()) | |||||
.confirmedRoster(meeting.getConfirmedRoster()) | |||||
.inviteStatus(meeting.getInviteStatus()) | |||||
.status(meeting.getStatus()) | |||||
.createOn(meeting.getCreateOn()) | |||||
.connecter(meeting.getConnecter()) | |||||
.contact(meeting.getContact()) | |||||
.build(); | |||||
MeetingByManagerVO result = new MeetingByManagerVO(); | |||||
result.setMeetingId(meeting.getId()); | |||||
result.setMeetingType(meeting.getType()); | |||||
result.setMeetingTypeName(MeetingReviewTypeEnum.getValue(meeting.getType())); | |||||
result.setMeetingName(meeting.getName()); | |||||
result.setStartTime(meeting.getStartTime()); | |||||
result.setEndTime(meeting.getEndTime()); | |||||
result.setInviteType(meeting.getInviteType()); | |||||
result.setConfirmedRoster(meeting.getConfirmedRoster()); | |||||
result.setInviteStatus(meeting.getInviteStatus()); | |||||
result.setStatus(meeting.getStatus()); | |||||
result.setCreateOn(meeting.getCreateOn()); | |||||
result.setConnecter(meeting.getConnecter()); | |||||
result.setContact(meeting.getContact()); | |||||
return result; | |||||
} | } | ||||
public void buildMeetingQuery(LambdaQueryWrapper<Meeting> query, MeetingListReq req) { | public void buildMeetingQuery(LambdaQueryWrapper<Meeting> query, MeetingListReq req) { | ||||
@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.hz.pm.api.meeting.entity.domain.Meeting; | import com.hz.pm.api.meeting.entity.domain.Meeting; | ||||
import com.hz.pm.api.meeting.entity.domain.MeetingExpert; | import com.hz.pm.api.meeting.entity.domain.MeetingExpert; | ||||
import com.hz.pm.api.meeting.entity.dto.CountConfirmByMeetingIdDTO; | import com.hz.pm.api.meeting.entity.dto.CountConfirmByMeetingIdDTO; | ||||
import com.hz.pm.api.meeting.entity.dto.MeetingAndAttendStatusDTO; | |||||
import com.hz.pm.api.meeting.entity.dto.ExpertInvitedRecordDTO; | |||||
import com.hz.pm.api.meeting.entity.enumeration.ExpertInviteTypeEnum; | import com.hz.pm.api.meeting.entity.enumeration.ExpertInviteTypeEnum; | ||||
import com.hz.pm.api.meeting.entity.enumeration.MeetingStatusByDashboard; | import com.hz.pm.api.meeting.entity.enumeration.MeetingStatusByDashboard; | ||||
import com.hz.pm.api.meeting.entity.req.MeetingCalenderReq; | import com.hz.pm.api.meeting.entity.req.MeetingCalenderReq; | ||||
@@ -178,7 +178,7 @@ public class DashboardManage { | |||||
} | } | ||||
public MeetingCountByExpertVO meetingCountByExpert() { | public MeetingCountByExpertVO meetingCountByExpert() { | ||||
List<MeetingAndAttendStatusDTO> attendStatusList = meetingExpertService.listByExpertIdAndStatus(LoginUserUtil.getUserId(), null, null); | |||||
List<ExpertInvitedRecordDTO> attendStatusList = meetingExpertService.listByExpertIdAndStatus(LoginUserUtil.getUserId(), null, null); | |||||
MeetingCountByExpertVO result = MeetingCountByExpertVO.init(); | MeetingCountByExpertVO result = MeetingCountByExpertVO.init(); | ||||
attendStatusList.forEach(w -> { | attendStatusList.forEach(w -> { | ||||
if (w.getAttended() != null && w.getAttended()) { | if (w.getAttended() != null && w.getAttended()) { | ||||
@@ -326,11 +326,11 @@ public class MeetingManage { | |||||
**/ | **/ | ||||
public PageVo<MeetingByManagerVO> meetingListForExpert(MeetingListReq req) { | public PageVo<MeetingByManagerVO> meetingListForExpert(MeetingListReq req) { | ||||
Long expertId = req.getExpertId() != null ? req.getExpertId() : LoginUserUtil.getUserId(); | Long expertId = req.getExpertId() != null ? req.getExpertId() : LoginUserUtil.getUserId(); | ||||
List<MeetingAndAttendStatusDTO> meetings = meetingExpertService.listByExpertIdAndStatus(expertId, null, null); | |||||
List<ExpertInvitedRecordDTO> meetings = meetingExpertService.listByExpertIdAndStatus(expertId, null, null); | |||||
if (meetings.isEmpty()) { | if (meetings.isEmpty()) { | ||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
Map<Long, MeetingAndAttendStatusDTO> mapByMeetingId = new HashMap<>(16); | |||||
Map<Long, ExpertInvitedRecordDTO> mapByMeetingId = new HashMap<>(16); | |||||
List<Long> meetingExpertIds = new ArrayList<>(); | List<Long> meetingExpertIds = new ArrayList<>(); | ||||
meetings.forEach(w -> { | meetings.forEach(w -> { | ||||
mapByMeetingId.put(w.getMeetingId(), w); | mapByMeetingId.put(w.getMeetingId(), w); | ||||
@@ -352,7 +352,7 @@ public class MeetingManage { | |||||
PageVo<MeetingByManagerVO> result = new PageVo<>(new ArrayList<>(), page.getTotal()); | PageVo<MeetingByManagerVO> result = new PageVo<>(new ArrayList<>(), page.getTotal()); | ||||
page.getRecords().forEach(meeting -> { | page.getRecords().forEach(meeting -> { | ||||
MeetingByManagerVO item = meetingManageHelper.buildByMeeting(meeting); | MeetingByManagerVO item = meetingManageHelper.buildByMeeting(meeting); | ||||
MeetingAndAttendStatusDTO info = mapByMeetingId.get(meeting.getId()); | |||||
ExpertInvitedRecordDTO info = mapByMeetingId.get(meeting.getId()); | |||||
item.setMeetingExpertId(info.getMeetingExpertId()); | item.setMeetingExpertId(info.getMeetingExpertId()); | ||||
item.setExpertStatus(info.getStatus()); | item.setExpertStatus(info.getStatus()); | ||||
item.setHasJudge(existsMeIds.contains(info.getMeetingExpertId())); | item.setHasJudge(existsMeIds.contains(info.getMeetingExpertId())); | ||||
@@ -3,7 +3,7 @@ package com.hz.pm.api.meeting.mapper; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
import com.hz.pm.api.meeting.entity.domain.MeetingExpert; | import com.hz.pm.api.meeting.entity.domain.MeetingExpert; | ||||
import com.hz.pm.api.meeting.entity.dto.MeetingAndAttendStatusDTO; | |||||
import com.hz.pm.api.meeting.entity.dto.ExpertInvitedRecordDTO; | |||||
import com.hz.pm.api.meeting.entity.dto.ReviewProjectDTO; | import com.hz.pm.api.meeting.entity.dto.ReviewProjectDTO; | ||||
import com.hz.pm.api.meeting.entity.enumeration.ExpertAttendStatusEnum; | import com.hz.pm.api.meeting.entity.enumeration.ExpertAttendStatusEnum; | ||||
import com.hz.pm.api.meeting.entity.req.ReviewProjectListReq; | import com.hz.pm.api.meeting.entity.req.ReviewProjectListReq; | ||||
@@ -32,9 +32,22 @@ public interface MeetingExpertMapper extends BaseMapper<MeetingExpert> { | |||||
* @return 专家参会状态列表 | * @return 专家参会状态列表 | ||||
* @author WendyYang | * @author WendyYang | ||||
**/ | **/ | ||||
List<MeetingAndAttendStatusDTO> selectByExpertIdAndStatus(@Param("expertId") Long expertId, | |||||
@Param("status") Integer status, | |||||
@Param("meetingIds") List<Long> meetingIds); | |||||
List<ExpertInvitedRecordDTO> selectByExpertIdAndStatus(@Param("expertId") Long expertId, | |||||
@Param("status") Integer status, | |||||
@Param("meetingIds") List<Long> meetingIds); | |||||
/** | |||||
* 查询专家在某个时间段的邀请记录 | |||||
* | |||||
* @param expertId 专家ID | |||||
* @param sTime 开始时间 | |||||
* @param eTime 结束时间 | |||||
* @return 专家邀请记录 | |||||
* @author WendyYang | |||||
**/ | |||||
List<ExpertInvitedRecordDTO> selectByExpertIdAndTime(@Param("expertId") Long expertId, | |||||
@Param("sTime") LocalDateTime sTime, | |||||
@Param("eTime") LocalDateTime eTime); | |||||
/** | /** | ||||
* 分页查询专家列表 | * 分页查询专家列表 | ||||
@@ -3,7 +3,7 @@ | |||||
<mapper namespace="com.hz.pm.api.meeting.mapper.MeetingExpertMapper"> | <mapper namespace="com.hz.pm.api.meeting.mapper.MeetingExpertMapper"> | ||||
<select id="selectByExpertIdAndStatus" | <select id="selectByExpertIdAndStatus" | ||||
resultType="com.hz.pm.api.meeting.entity.dto.MeetingAndAttendStatusDTO"> | |||||
resultType="com.hz.pm.api.meeting.entity.dto.ExpertInvitedRecordDTO"> | |||||
SELECT em.meeting_id meetingId, em.status, em.ID meetingExpertId | SELECT em.meeting_id meetingId, em.status, em.ID meetingExpertId | ||||
FROM (SELECT ROW_NUMBER() OVER ( PARTITION BY meeting_id ORDER BY update_on DESC ) rowNumber, ID, expert_id, | FROM (SELECT ROW_NUMBER() OVER ( PARTITION BY meeting_id ORDER BY update_on DESC ) rowNumber, ID, expert_id, | ||||
status, meeting_id | status, meeting_id | ||||
@@ -23,6 +23,20 @@ | |||||
</if> | </if> | ||||
</select> | </select> | ||||
<select id="selectByExpertIdAndTime" | |||||
resultType="com.hz.pm.api.meeting.entity.dto.ExpertInvitedRecordDTO"> | |||||
SELECT em.meeting_id meetingId, em.status, em.ID meetingExpertId, em.create_on createOn | |||||
FROM (SELECT ROW_NUMBER() OVER ( PARTITION BY me.meeting_id ORDER BY me.update_on DESC ) rowNumber, me.ID, me.expert_id, | |||||
me.status, me.meeting_id, m.create_on | |||||
FROM meeting_expert me inner join meeting m on m.id = me.meeting_id | |||||
where expert_id = #{expertId} | |||||
<if test="sTime != null and eTime != null"> | |||||
and m.start_time between #{sTime} and #{eTime} | |||||
</if> | |||||
) em | |||||
WHERE rowNumber = 1 | |||||
</select> | |||||
<select id="selectExpertByStatusAndMeetingId" | <select id="selectExpertByStatusAndMeetingId" | ||||
resultType="com.hz.pm.api.meeting.entity.domain.MeetingExpert"> | resultType="com.hz.pm.api.meeting.entity.domain.MeetingExpert"> | ||||
SELECT * FROM (SELECT ROW_NUMBER() OVER ( PARTITION BY expert_id ORDER BY update_on DESC ) rowNumber, | SELECT * FROM (SELECT ROW_NUMBER() OVER ( PARTITION BY expert_id ORDER BY update_on DESC ) rowNumber, | ||||
@@ -3,9 +3,9 @@ package com.hz.pm.api.meeting.service; | |||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.ningdatech.basic.util.CollUtils; | |||||
import com.hz.pm.api.meeting.entity.domain.MeetingExpertJudge; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||
import com.hz.pm.api.meeting.entity.domain.MeetingExpertJudge; | |||||
import com.ningdatech.basic.util.CollUtils; | |||||
import java.util.Collection; | import java.util.Collection; | ||||
import java.util.Collections; | import java.util.Collections; | ||||
@@ -32,11 +32,17 @@ public interface IMeetingExpertJudgeService extends IService<MeetingExpertJudge> | |||||
return CollUtils.fieldList(list(query), MeetingExpertJudge::getMeetingExpertId); | return CollUtils.fieldList(list(query), MeetingExpertJudge::getMeetingExpertId); | ||||
} | } | ||||
default Map<Long,Long> getExpertJudgeIdMap(Long meetingId){ | |||||
default Map<Long, Long> getExpertJudgeIdMap(Long meetingId) { | |||||
LambdaQueryWrapper<MeetingExpertJudge> query = Wrappers.lambdaQuery(MeetingExpertJudge.class) | LambdaQueryWrapper<MeetingExpertJudge> query = Wrappers.lambdaQuery(MeetingExpertJudge.class) | ||||
.select(MeetingExpertJudge::getExpertId,MeetingExpertJudge::getId) | |||||
.select(MeetingExpertJudge::getExpertId, MeetingExpertJudge::getId) | |||||
.eq(MeetingExpertJudge::getMeetingId, meetingId); | .eq(MeetingExpertJudge::getMeetingId, meetingId); | ||||
return CollUtils.listToMap(list(query), MeetingExpertJudge::getExpertId,MeetingExpertJudge::getExpertId); | |||||
return CollUtils.listToMap(list(query), MeetingExpertJudge::getExpertId, MeetingExpertJudge::getExpertId); | |||||
} | |||||
default List<MeetingExpertJudge> listByMeetingExpertIds(Collection<Long> meetingExpertIds) { | |||||
LambdaQueryWrapper<MeetingExpertJudge> query = Wrappers.lambdaQuery(MeetingExpertJudge.class) | |||||
.in(MeetingExpertJudge::getMeetingId, meetingExpertIds); | |||||
return list(query); | |||||
} | } | ||||
} | } |
@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||
import com.hz.pm.api.meeting.entity.domain.MeetingExpert; | import com.hz.pm.api.meeting.entity.domain.MeetingExpert; | ||||
import com.hz.pm.api.meeting.entity.dto.CountConfirmByMeetingIdDTO; | import com.hz.pm.api.meeting.entity.dto.CountConfirmByMeetingIdDTO; | ||||
import com.hz.pm.api.meeting.entity.dto.MeetingAndAttendStatusDTO; | |||||
import com.hz.pm.api.meeting.entity.dto.ExpertInvitedRecordDTO; | |||||
import com.hz.pm.api.meeting.entity.dto.ReviewProjectDTO; | import com.hz.pm.api.meeting.entity.dto.ReviewProjectDTO; | ||||
import com.hz.pm.api.meeting.entity.enumeration.ExpertAttendStatusEnum; | import com.hz.pm.api.meeting.entity.enumeration.ExpertAttendStatusEnum; | ||||
import com.hz.pm.api.meeting.entity.enumeration.ExpertInviteTypeEnum; | import com.hz.pm.api.meeting.entity.enumeration.ExpertInviteTypeEnum; | ||||
@@ -35,7 +35,9 @@ public interface IMeetingExpertService extends IService<MeetingExpert> { | |||||
* @return 会议参加状态统计 | * @return 会议参加状态统计 | ||||
* @author WendyYang | * @author WendyYang | ||||
**/ | **/ | ||||
List<MeetingAndAttendStatusDTO> listByExpertIdAndStatus(Long expertId, Integer status, List<Long> meetingIds); | |||||
List<ExpertInvitedRecordDTO> listByExpertIdAndStatus(Long expertId, Integer status, List<Long> meetingIds); | |||||
List<ExpertInvitedRecordDTO> listByExpertIdAndTime(Long expertId, LocalDateTime sTime, LocalDateTime eTime); | |||||
/** | /** | ||||
* 查询每个会议的确认进度 | * 查询每个会议的确认进度 | ||||
@@ -4,11 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
import com.ningdatech.basic.util.CollUtils; | |||||
import com.hz.pm.api.meeting.entity.domain.ExpertInviteRule; | import com.hz.pm.api.meeting.entity.domain.ExpertInviteRule; | ||||
import com.hz.pm.api.meeting.entity.domain.MeetingExpert; | import com.hz.pm.api.meeting.entity.domain.MeetingExpert; | ||||
import com.hz.pm.api.meeting.entity.dto.CountConfirmByMeetingIdDTO; | import com.hz.pm.api.meeting.entity.dto.CountConfirmByMeetingIdDTO; | ||||
import com.hz.pm.api.meeting.entity.dto.MeetingAndAttendStatusDTO; | |||||
import com.hz.pm.api.meeting.entity.dto.ExpertInvitedRecordDTO; | |||||
import com.hz.pm.api.meeting.entity.dto.ReviewProjectDTO; | import com.hz.pm.api.meeting.entity.dto.ReviewProjectDTO; | ||||
import com.hz.pm.api.meeting.entity.enumeration.ExpertAttendStatusEnum; | import com.hz.pm.api.meeting.entity.enumeration.ExpertAttendStatusEnum; | ||||
import com.hz.pm.api.meeting.entity.enumeration.ExpertInviteTypeEnum; | import com.hz.pm.api.meeting.entity.enumeration.ExpertInviteTypeEnum; | ||||
@@ -16,6 +15,7 @@ import com.hz.pm.api.meeting.entity.req.ReviewProjectListReq; | |||||
import com.hz.pm.api.meeting.mapper.ExpertInviteRuleMapper; | import com.hz.pm.api.meeting.mapper.ExpertInviteRuleMapper; | ||||
import com.hz.pm.api.meeting.mapper.MeetingExpertMapper; | import com.hz.pm.api.meeting.mapper.MeetingExpertMapper; | ||||
import com.hz.pm.api.meeting.service.IMeetingExpertService; | import com.hz.pm.api.meeting.service.IMeetingExpertService; | ||||
import com.ningdatech.basic.util.CollUtils; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
@@ -41,11 +41,16 @@ public class MeetingExpertServiceImpl extends ServiceImpl<MeetingExpertMapper, M | |||||
private final ExpertInviteRuleMapper inviteRuleMapper; | private final ExpertInviteRuleMapper inviteRuleMapper; | ||||
@Override | @Override | ||||
public List<MeetingAndAttendStatusDTO> listByExpertIdAndStatus(Long expertId, Integer status, List<Long> meetingIds) { | |||||
public List<ExpertInvitedRecordDTO> listByExpertIdAndStatus(Long expertId, Integer status, List<Long> meetingIds) { | |||||
return baseMapper.selectByExpertIdAndStatus(expertId, status, meetingIds); | return baseMapper.selectByExpertIdAndStatus(expertId, status, meetingIds); | ||||
} | } | ||||
@Override | @Override | ||||
public List<ExpertInvitedRecordDTO> listByExpertIdAndTime(Long expertId, LocalDateTime sTime, LocalDateTime eTime) { | |||||
return baseMapper.selectByExpertIdAndTime(expertId, sTime, eTime); | |||||
} | |||||
@Override | |||||
public Map<Long, CountConfirmByMeetingIdDTO> countConfirmedByMeetingIds(List<Long> meetingIds) { | public Map<Long, CountConfirmByMeetingIdDTO> countConfirmedByMeetingIds(List<Long> meetingIds) { | ||||
List<ExpertInviteRule> inviteRules = inviteRuleMapper.selectList(Wrappers.lambdaQuery(ExpertInviteRule.class) | List<ExpertInviteRule> inviteRules = inviteRuleMapper.selectList(Wrappers.lambdaQuery(ExpertInviteRule.class) | ||||
.eq(ExpertInviteRule::getInviteType, ExpertInviteTypeEnum.RANDOM.getCode()) | .eq(ExpertInviteRule::getInviteType, ExpertInviteTypeEnum.RANDOM.getCode()) | ||||