Commit 95b862250ba82bc7ae0371388bd73e0df3c56892

Authored by 姜超
1 parent 11fce249

feature(*): 考评报表抽取修改

考评报表抽取修改
fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalUserExtraReportDao.java 0 → 100644
  1 +package cn.fw.morax.dao.eval;
  2 +
  3 +
  4 +import cn.fw.morax.domain.db.eval.EvalUserExtraReport;
  5 +import cn.fw.morax.domain.db.eval.EvalUserReport;
  6 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  7 +
  8 +/**
  9 + * <p>
  10 + * 报表编码数据 Mapper 接口
  11 + * </p>
  12 + *
  13 + * @author jiangchao
  14 + * @since 2023-03-31
  15 + */
  16 +public interface EvalUserExtraReportDao extends BaseMapper<EvalUserExtraReport> {
  17 +
  18 +}
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserExtraReport.java 0 → 100644
  1 +package cn.fw.morax.domain.db.eval;
  2 +
  3 +import cn.fw.common.data.entity.BaseEntity;
  4 +import cn.fw.common.data.mybatis.handler.LongListTypeHandler;
  5 +import cn.fw.common.data.mybatis.handler.StringListTypeHandler;
  6 +import com.baomidou.mybatisplus.annotation.TableField;
  7 +import com.baomidou.mybatisplus.annotation.TableName;
  8 +import lombok.*;
  9 +import lombok.experimental.Accessors;
  10 +
  11 +import java.util.List;
  12 +
  13 +/**
  14 + * <p>
  15 + * 报表编码维度数据表(额外数据)
  16 + * </p>
  17 + *
  18 + * @author jiangchao
  19 + * @since 2023-04-17
  20 + */
  21 +@Data
  22 +@EqualsAndHashCode(callSuper = false)
  23 +@Accessors(chain = true)
  24 +@TableName(autoResultMap = true)
  25 +@Builder
  26 +@NoArgsConstructor
  27 +@AllArgsConstructor
  28 +public class EvalUserExtraReport extends BaseEntity<EvalUserExtraReport, Long> {
  29 +
  30 + private static final long serialVersionUID = 1L;
  31 +
  32 + /**
  33 + * 考评报表id
  34 + */
  35 + private Long evalUserReportId;
  36 +
  37 + /**
  38 + * 适用门店ids
  39 + */
  40 + @TableField(typeHandler = LongListTypeHandler.class)
  41 + private List<Long> shopIds;
  42 +
  43 + /**
  44 + * 人员ids
  45 + */
  46 + @TableField(typeHandler = LongListTypeHandler.class)
  47 + private List<Long> staffIds;
  48 +
  49 + /**
  50 + * 适用角色编码
  51 + */
  52 + @TableField(typeHandler = StringListTypeHandler.class)
  53 + private List<String> roleCodes;
  54 + /**
  55 + * 适用角色名称
  56 + */
  57 + @TableField(typeHandler = StringListTypeHandler.class)
  58 + private List<String> roleNames;
  59 +
  60 +}
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java
... ... @@ -4,12 +4,24 @@ import cn.fw.common.cache.locker.DistributedLocker;
4 4 import cn.fw.morax.common.constant.Constant;
5 5 import cn.fw.morax.common.constant.TimeTaskConstant;
6 6 import cn.fw.morax.common.utils.PublicUtil;
  7 +import cn.fw.morax.domain.bo.salary.SalaryGroupProjectBO;
7 8 import cn.fw.morax.domain.db.eval.*;
8 9 import cn.fw.morax.domain.db.kpi.IndicatorUserValue;
  10 +import cn.fw.morax.domain.db.salary.ReportSalaryDim;
  11 +import cn.fw.morax.domain.db.salary.ReportSalaryDimExtra;
  12 +import cn.fw.morax.domain.db.salary.ReportSalaryDimValue;
  13 +import cn.fw.morax.domain.db.salary.SalaryPool;
9 14 import cn.fw.morax.domain.enums.*;
  15 +import cn.fw.morax.domain.vo.salary.SalaryGroupProjectParamVO;
  16 +import cn.fw.morax.rpc.ehr.EhrRpcService;
  17 +import cn.fw.morax.rpc.ehr.dto.ManagerDTO;
  18 +import cn.fw.morax.rpc.ehr.dto.ManagerStaffRoleDTO;
  19 +import cn.fw.morax.rpc.ehr.dto.ManagerStaffShopDTO;
  20 +import cn.fw.morax.rpc.ehr.dto.StaffBaseInfoDTO;
10 21 import cn.fw.morax.service.biz.CommonService;
11 22 import cn.fw.morax.service.data.eval.*;
12 23 import cn.fw.morax.service.data.kpi.IndicatorUserValueService;
  24 +import com.alibaba.fastjson.JSON;
13 25 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
14 26 import com.google.common.collect.Maps;
15 27 import lombok.Getter;
... ... @@ -60,13 +72,15 @@ public class EvalUserReportTask {
60 72 private final PlatformTransactionManager platformTransactionManager;
61 73 private final EvalUserRankReportService evalUserRankReportService;
62 74 private final EvalGroupRankStageService evalGroupRankStageService;
  75 + private final EvalUserExtraReportService evalUserExtraReportService;
63 76 private final EvalUserReportService evalUserReportService;
64 77 private final TransactionDefinition transactionDefinition;
65 78 private final EvalUserPoolService evalUserPoolService;
66 79 private final EvalShopPoolService evalShopPoolService;
67 80 private final EvalGroupRankService evalGroupRankService;
68   - private final EvalGroupService evalGroupService;
69 81 private final DistributedLocker distributedLocker;
  82 + private final EvalGroupService evalGroupService;
  83 + private final EhrRpcService ehrRpcService;
70 84 private final CommonService commonService;
71 85  
72 86 @Value("${spring.cache.custom.global-prefix}:eval:user:report")
... ... @@ -80,7 +94,7 @@ public class EvalUserReportTask {
80 94 @Scheduled(cron = TimeTaskConstant.EVAL_REPORT)
81 95 @Transactional(rollbackFor = Exception.class)
82 96 public void evalUserReportTask() {
83   -// this.evalUserReport(LocalDate.now().minusDays(1));
  97 + this.evalUserReport(LocalDate.now().minusDays(1));
84 98 }
85 99  
86 100 /**
... ... @@ -134,6 +148,8 @@ public class EvalUserReportTask {
134 148 EvalUserRankReport reportRank = this.saveRankReport(rank, date, groupId);
135 149 final Long evalUserRankReportId = reportRank.getId();
136 150 for (EvalGroupRankStage rankStage : stages) {
  151 + //如果当前时间 大于 考评阶段结束时间,使用考评结束时间进行查询
  152 + LocalDate dataDate = (date.compareTo(rankStage.getOverTime()) > 0) ? rankStage.getOverTime() : date;
137 153 List<EvalGroup> evalGroups = evalGroupService.getEvalGroups(rank.getId());
138 154 List<Long> evalGroupIds = evalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList());
139 155 if (PublicUtil.isEmpty(evalGroupIds)) {
... ... @@ -141,12 +157,12 @@ public class EvalUserReportTask {
141 157 }
142 158 List<EvalUserPool> userPools = evalUserPoolService.list(Wrappers.<EvalUserPool>lambdaQuery()
143 159 .in(EvalUserPool::getEvalGroupId, evalGroupIds)
144   - .eq(EvalUserPool::getMonthly, YearMonth.from(date))
  160 + .eq(EvalUserPool::getMonthly, YearMonth.from(dataDate))
145 161 .eq(EvalUserPool::getYn, Boolean.TRUE)
146 162 );
147 163 List<EvalShopPool> shopPools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery()
148 164 .in(EvalShopPool::getEvalGroupId, evalGroupIds)
149   - .eq(EvalShopPool::getMonthly, YearMonth.from(date))
  165 + .eq(EvalShopPool::getMonthly, YearMonth.from(dataDate))
150 166 .eq(EvalShopPool::getYn, Boolean.TRUE)
151 167 );
152 168 List<EvalGroupIndicator> evalGroupIndicators = evalGroupIndicatorService.list(Wrappers.<EvalGroupIndicator>lambdaQuery()
... ... @@ -155,16 +171,19 @@ public class EvalUserReportTask {
155 171 .orderByAsc(EvalGroupIndicator::getId)
156 172 );
157 173  
  174 + //排名组阶段
158 175 EvalUserRankStageReport rankStageReport = this.saveRankStageReport(reportRank, rank, rankStage, evalGroups);
159 176 final Long evalUserRankStageReportId = rankStageReport.getId();
160 177 //排名组指标编码、人员、门店
161   - List<EvalUserRankCodeReport> rankCodes = this.saveRankCodeReports(evalGroupIndicators, evalUserRankReportId, evalUserRankStageReportId, date);
162   - List<EvalUserReport> evalUserReports = this.saveStaffReports(userPools, date, evalUserRankReportId, evalUserRankStageReportId);
163   - List<EvalUserReport> evalShopReports = this.saveShopReports(shopPools, date, evalUserRankReportId, evalUserRankStageReportId);
  178 + List<EvalUserRankCodeReport> rankCodes = this.saveRankCodeReports(evalGroupIndicators, evalUserRankReportId, evalUserRankStageReportId, dataDate);
  179 + List<EvalUserReport> evalUserReports = this.saveStaffReports(userPools, dataDate, evalUserRankReportId, evalUserRankStageReportId);
  180 + List<EvalUserReport> evalShopReports = this.saveShopReports(shopPools, dataDate, evalUserRankReportId, evalUserRankStageReportId);
164 181 //人员维度
165   - List<EvalUserValueReport> reportUserValues = calcUser(userPools, evalGroupIndicators, evalUserReports, date);
  182 + List<EvalUserValueReport> reportUserValues = calcUser(userPools, evalGroupIndicators, evalUserReports, dataDate);
  183 + //门店维度
  184 + calcShop(shopPools, evalGroupIndicators, evalShopReports, dataDate);
166 185 //门店维度
167   - calcShop(shopPools, evalGroupIndicators, evalShopReports, date);
  186 + calcManager(userPools, reportUserValues, rankCodes, evalUserReports, rankStageReport, dataDate);
168 187 }
169 188  
170 189  
... ... @@ -173,6 +192,9 @@ public class EvalUserReportTask {
173 192 List<EvalGroupIndicator> evalGroupIndicators,
174 193 List<EvalUserReport> evalUserReports,
175 194 LocalDate date) {
  195 + if (PublicUtil.isEmpty(pools)) {
  196 + return new ArrayList<>();
  197 + }
176 198 List<EvalUserValueReport> reportUserValues = new ArrayList<>();
177 199 List<Long> userIds = pools.stream().map(EvalUserPool::getUserId).distinct().collect(Collectors.toList());
178 200 List<Long> poolIds = pools.stream().map(EvalUserPool::getId).collect(Collectors.toList());
... ... @@ -260,9 +282,6 @@ public class EvalUserReportTask {
260 282 }
261 283  
262 284 Optional<EvalGroupIndicatorHitLog> hitLog = Optional.ofNullable(poolHitLogMap.get(pool.getId()));
263   - if (pool.getDataDate().compareTo(date) != 0) {
264   - hitLog = evalGroupIndicatorHitLogService.getHitLog(evalGroupIndicatorId, pool.getId(), EvalScopeEnum.SHOP, pool.getDataDate());
265   - }
266 285 BigDecimal value = (ScoreWayEnum.LADDER.equals(scoreWay)) ?
267 286 hitLog.map(EvalGroupIndicatorHitLog::getHitLadderValue).orElse(BigDecimal.ZERO) :
268 287 hitLog.map(EvalGroupIndicatorHitLog::getHitCommissionValue).orElse(BigDecimal.ZERO);
... ... @@ -275,9 +294,7 @@ public class EvalUserReportTask {
275 294 for (EvalGroupIndicatorParam param : params) {
276 295 Map<Long, EvalGroupIndicatorTargetHitLog> targetHitLogMap = queryTargetValue(param.getId(), poolIds, date, EvalScopeEnum.SHOP);
277 296 for (EvalShopPool pool : pools) {
278   - Boolean staffChange = pool.getDataDate().compareTo(date) != 0;
279   - EvalGroupIndicatorTargetHitLog targetHitLog = (staffChange)
280   - ? queryTargetValue(param.getId(), pool.getId(), pool.getDataDate(), EvalScopeEnum.SHOP) : targetHitLogMap.get(pool.getId());
  297 + EvalGroupIndicatorTargetHitLog targetHitLog = targetHitLogMap.get(pool.getId());
281 298 BigDecimal value = this.getParamValue(targetHitLog);
282 299 Long evalUserReportId = shopPoolReportIdMap.get(pool.getId());
283 300 reportUserValues.add(convertParamDB(evalUserReportId, param, value, date));
... ... @@ -291,6 +308,55 @@ public class EvalUserReportTask {
291 308 return reportUserValues;
292 309 }
293 310  
  311 + public void calcManager(List<EvalUserPool> pools,
  312 + List<EvalUserValueReport> reportUserValues,
  313 + List<EvalUserRankCodeReport> rankCodes,
  314 + List<EvalUserReport> evalUserReports,
  315 + EvalUserRankStageReport rankStageReport,
  316 + LocalDate date) {
  317 + if (PublicUtil.isEmpty(pools)) {
  318 + return;
  319 + }
  320 + List<Long> shopIds = pools.stream().map(EvalUserPool::getShopId).collect(Collectors.toList());
  321 + List<ManagerDTO> managerDTOS = ehrRpcService.getRealTimeShopManager(new ArrayList<>(shopIds));
  322 + log.info("查询门店实时管理者:{},{}", JSON.toJSONString(shopIds), JSON.toJSONString(managerDTOS));
  323 + if (PublicUtil.isEmpty(managerDTOS)) {
  324 + return;
  325 + }
  326 + Map<Long, StaffBaseInfoDTO> managerMap = staffInfoMap(managerDTOS);
  327 + List<EvalUserValueReport> valueReports = new ArrayList<>();
  328 + for (ManagerDTO manager : managerDTOS) {
  329 + if (PublicUtil.isEmpty(manager.getManageStaffList())) {
  330 + continue;
  331 + }
  332 + List<Long> manageStaffIds = manager.getManageStaffList().stream().map(StaffBaseInfoDTO::getId).distinct().collect(Collectors.toList());
  333 + Set<Long> managerStaffDimReportIds = evalUserReports.stream()
  334 + .filter(user -> manageStaffIds.contains(user.getUserId()))
  335 + .map(EvalUserReport::getId).collect(Collectors.toSet());
  336 + if (PublicUtil.isEmpty(managerStaffDimReportIds)) {
  337 + continue;
  338 + }
  339 + final Long managerEvalUserReportId = this.saveManagerDimDB(manager, rankStageReport, managerMap, manageStaffIds, date);
  340 +
  341 + for (EvalUserRankCodeReport codeReport : rankCodes) {
  342 + BigDecimal value = calcAverageValue(reportUserValues, managerStaffDimReportIds, codeReport.getCode());
  343 + valueReports.add(this.convertManagerValue(managerEvalUserReportId, codeReport, value, date));
  344 + }
  345 + }
  346 + if (PublicUtil.isNotEmpty(valueReports)) {
  347 + evalUserValueReportService.saveBatch(valueReports);
  348 + }
  349 + }
  350 +
  351 + public BigDecimal calcAverageValue(List<EvalUserValueReport> valueReports, Set<Long> managerStaffDimReportIds, String code) {
  352 + Double averageRatioDouble = valueReports.stream()
  353 + .filter(user -> managerStaffDimReportIds.contains(user.getEvalUserReportId()) && code.equals(user.getCode()))
  354 + .mapToDouble(userValue -> Optional.ofNullable(userValue.getValue()).orElse(BigDecimal.ZERO).doubleValue())
  355 + .average()
  356 + .orElse(0);
  357 + return new BigDecimal(averageRatioDouble.toString());
  358 + }
  359 +
294 360 public BigDecimal getParamValue(EvalGroupIndicatorTargetHitLog hitLog) {
295 361 if (PublicUtil.isEmpty(hitLog) || PublicUtil.isEmpty(hitLog.getUseTarget())) {
296 362 return BigDecimal.ZERO;
... ... @@ -470,7 +536,7 @@ public class EvalUserReportTask {
470 536 .eq(EvalGroupIndicatorParam::getYn, Boolean.TRUE)
471 537 );
472 538 for (EvalGroupIndicatorParam indicatorParam : params) {
473   - rankCodes.add(this.convertParamToRankCodeDB(indicatorParam, date, reportRankId, order, groupIndicator));
  539 + rankCodes.add(this.convertParamToRankCodeDB(indicatorParam, date, reportRankId, evalUserRankStageReportId, order, groupIndicator));
474 540 }
475 541 }
476 542  
... ... @@ -523,6 +589,62 @@ public class EvalUserReportTask {
523 589 return reportRankStage;
524 590 }
525 591  
  592 + public Long saveManagerDimDB(ManagerDTO manager, EvalUserRankStageReport rankStageReport,
  593 + Map<Long, StaffBaseInfoDTO> managerMap,
  594 + List<Long> manageStaffIds, LocalDate date) {
  595 + EvalUserReport evalUserReport = new EvalUserReport();
  596 + evalUserReport.setEvalUserRankReportId(rankStageReport.getEvalGroupRankId());
  597 + evalUserReport.setEvalUserRankStageReportId(rankStageReport.getEvalGroupRankStageId());
  598 + evalUserReport.setDimension(ReportDimensionEnum.MANAGER);
  599 + evalUserReport.setUserId(manager.getStaffId());
  600 + evalUserReport.setUserName(manager.getStaffName());
  601 + evalUserReport.setDataDate(date);
  602 + if (managerMap.containsKey(manager.getStaffId())) {
  603 + StaffBaseInfoDTO staffInfo = managerMap.get(manager.getStaffId());
  604 + evalUserReport.setShopId(staffInfo.getShopId());
  605 + evalUserReport.setShopName(staffInfo.getShopName());
  606 + evalUserReport.setPostId(staffInfo.getPostId());
  607 + evalUserReport.setPostName(staffInfo.getPostName());
  608 + }
  609 +
  610 + List<String> roleCodes = manager.getScopeList().stream()
  611 + .flatMap(managerStaffVo -> managerStaffVo.getRoleList().stream())
  612 + .map(ManagerStaffRoleDTO::getRoleCode)
  613 + .distinct()
  614 + .collect(Collectors.toList());
  615 + List<String> roleNames = manager.getScopeList().stream()
  616 + .flatMap(managerStaffVo -> managerStaffVo.getRoleList().stream())
  617 + .map(ManagerStaffRoleDTO::getRoleName)
  618 + .distinct()
  619 + .collect(Collectors.toList());
  620 + List<Long> shopIds = manager.getScopeList().stream()
  621 + .flatMap(managerStaffVo -> managerStaffVo.getShopList().stream())
  622 + .map(ManagerStaffShopDTO::getShopId)
  623 + .distinct()
  624 + .collect(Collectors.toList());
  625 +
  626 + evalUserReportService.save(evalUserReport);
  627 + EvalUserExtraReport evalUserExtraReport = EvalUserExtraReport.builder()
  628 + .evalUserReportId(evalUserReport.getId())
  629 + .roleCodes(roleCodes)
  630 + .roleNames(roleNames)
  631 + .shopIds(shopIds)
  632 + .staffIds(manageStaffIds)
  633 + .build();
  634 + evalUserExtraReportService.save(evalUserExtraReport);
  635 + return evalUserReport.getId();
  636 + }
  637 +
  638 + public EvalUserValueReport convertManagerValue(Long managerEvalUserReportId, EvalUserRankCodeReport codeReport, BigDecimal value, LocalDate date) {
  639 + EvalUserValueReport userValue = new EvalUserValueReport();
  640 + userValue.setEvalUserReportId(managerEvalUserReportId);
  641 + userValue.setCode(codeReport.getCode());
  642 + userValue.setCodeType(codeReport.getCodeType());
  643 + userValue.setValue(Optional.ofNullable(value).orElse(BigDecimal.ZERO));
  644 + userValue.setDataDate(date);
  645 + return userValue;
  646 + }
  647 +
526 648 public EvalUserValueReport convertDB(Long evalUserReportId, EvalGroupIndicator groupIndicator, BigDecimal value,
527 649 LocalDate date, List<EvalGroupIndicatorParam> params) {
528 650 EvalUserValueReport userValue = new EvalUserValueReport();
... ... @@ -575,10 +697,18 @@ public class EvalUserReportTask {
575 697 return rankCode;
576 698 }
577 699  
  700 + public Map<Long, StaffBaseInfoDTO> staffInfoMap(List<ManagerDTO> managerDTOS) {
  701 + List<Long> staffIds = managerDTOS.stream().map(ManagerDTO::getStaffId).collect(Collectors.toList());
  702 + List<StaffBaseInfoDTO> staffInfos = ehrRpcService.queryStaffBaseInfo(staffIds);
  703 + return staffInfos.stream().collect(Collectors.toMap(StaffBaseInfoDTO::getId, Function.identity(), (v1, v2) -> v1));
  704 + }
  705 +
578 706 public EvalUserRankCodeReport convertParamToRankCodeDB(EvalGroupIndicatorParam indicatorParam, LocalDate date, Long reportRankId,
  707 + Long evalUserRankStageReportId,
579 708 AtomicInteger order, EvalGroupIndicator groupIndicator) {
580 709 EvalUserRankCodeReport rankCode = new EvalUserRankCodeReport();
581 710 rankCode.setEvalUserRankReportId(reportRankId);
  711 + rankCode.setEvalUserRankStageReportId(evalUserRankStageReportId);
582 712 rankCode.setEvalGroupIndicatorId(indicatorParam.getEvalGroupIndicatorId());
583 713 rankCode.setCode(indicatorParam.getCode());
584 714 rankCode.setCodeType(indicatorParam.getCodeType());
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/EvalUserExtraReportService.java 0 → 100644
  1 +package cn.fw.morax.service.data.eval;
  2 +
  3 +
  4 +import cn.fw.morax.domain.db.eval.EvalUserExtraReport;
  5 +import cn.fw.morax.domain.db.eval.EvalUserReport;
  6 +import com.baomidou.mybatisplus.extension.service.IService;
  7 +
  8 +/**
  9 + * <p>
  10 + * 报表编码数据 服务类
  11 + * </p>
  12 + *
  13 + * @author jiangchao
  14 + * @since 2023-03-31
  15 + */
  16 +public interface EvalUserExtraReportService extends IService<EvalUserExtraReport> {
  17 +
  18 +}
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/impl/EvalGroupIndicatorHitLogServiceImpl.java
1 1 package cn.fw.morax.service.data.eval.impl;
2 2  
3 3  
  4 +import cn.fw.morax.common.utils.PublicUtil;
4 5 import cn.fw.morax.dao.eval.EvalGroupIndicatorHitLogDao;
5 6 import cn.fw.morax.domain.db.eval.EvalGroupIndicatorHitLog;
6 7 import cn.fw.morax.domain.enums.EvalScopeEnum;
... ... @@ -10,6 +11,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
10 11 import org.springframework.stereotype.Service;
11 12  
12 13 import java.time.LocalDate;
  14 +import java.util.ArrayList;
13 15 import java.util.List;
14 16 import java.util.Objects;
15 17 import java.util.Optional;
... ... @@ -58,6 +60,9 @@ public class EvalGroupIndicatorHitLogServiceImpl extends ServiceImpl&lt;EvalGroupIn
58 60  
59 61 @Override
60 62 public List<EvalGroupIndicatorHitLog> getHitLogs(List<Long> evalGroupIndicatorIds, List<Long> poolIds, EvalScopeEnum scopeType, LocalDate dataDate) {
  63 + if (PublicUtil.isEmpty(evalGroupIndicatorIds) || PublicUtil.isEmpty(poolIds)) {
  64 + return new ArrayList<>();
  65 + }
61 66 List<EvalGroupIndicatorHitLog> indicatorHitLogs = this.list(Wrappers.<EvalGroupIndicatorHitLog>lambdaQuery()
62 67 .in(EvalGroupIndicatorHitLog::getEvalGroupIndicatorId, evalGroupIndicatorIds)
63 68 .eq(EvalGroupIndicatorHitLog::getDataDate, dataDate)
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/impl/EvalUserExtraReportServiceImpl.java 0 → 100644
  1 +package cn.fw.morax.service.data.eval.impl;
  2 +
  3 +
  4 +import cn.fw.morax.dao.eval.EvalUserExtraReportDao;
  5 +import cn.fw.morax.dao.eval.EvalUserReportDao;
  6 +import cn.fw.morax.domain.db.eval.EvalUserExtraReport;
  7 +import cn.fw.morax.domain.db.eval.EvalUserReport;
  8 +import cn.fw.morax.service.data.eval.EvalUserExtraReportService;
  9 +import cn.fw.morax.service.data.eval.EvalUserReportService;
  10 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  11 +import org.springframework.stereotype.Service;
  12 +
  13 +/**
  14 + * <p>
  15 + * 报表编码数据 服务实现类
  16 + * </p>
  17 + *
  18 + * @author jiangchao
  19 + * @since 2023-03-31
  20 + */
  21 +@Service
  22 +public class EvalUserExtraReportServiceImpl extends ServiceImpl<EvalUserExtraReportDao, EvalUserExtraReport> implements EvalUserExtraReportService {
  23 +
  24 +}
... ...