diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorDao.java index 8424999..2b11d49 100644 --- a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorDao.java +++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorDao.java @@ -5,6 +5,7 @@ import cn.fw.morax.domain.bo.StageIndicatorBO; import cn.fw.morax.domain.bo.eval.EvalGroupIndicatorBO; import cn.fw.morax.domain.db.eval.EvalGroupIndicator; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.time.LocalDate; import java.util.List; @@ -36,5 +37,6 @@ public interface EvalGroupIndicatorDao extends BaseMapper { * @param codeType * @return */ - List getStageIndicators(LocalDate dataDate, Integer codeType); + List getStageIndicators(@Param("dataDate") LocalDate dataDate, + @Param("codeType") Integer codeType); } diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupUserDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupUserDao.java index 15bc52c..136d95e 100644 --- a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupUserDao.java +++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupUserDao.java @@ -19,21 +19,19 @@ public interface KpiGroupUserDao extends BaseMapper { /** * 获取某月最近的绩效组人员数据 * - * @param kgc * @param yearMonth * @return */ - KpiGroupUser getMonthLastData(@Param("kgc") String kgc, + KpiGroupUser getMonthLastData(@Param("kpiGroupId") Long kpiGroupId, @Param("userId") Long userId, @Param("yearMonth") YearMonth yearMonth); /** * 获取某月第一天的绩效组人员数据 * - * @param kgc * @param yearMonth * @return */ - KpiGroupUser getMonthFirstData(@Param("kgc") String kgc, + KpiGroupUser getMonthFirstData(@Param("kpiGroupId") Long kpiGroupId, @Param("userId") Long userId, @Param("yearMonth") YearMonth yearMonth); } diff --git a/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupUserMapper.xml b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupUserMapper.xml index 17ed41e..bac6376 100644 --- a/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupUserMapper.xml +++ b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupUserMapper.xml @@ -14,7 +14,7 @@ FROM kpi_group_user WHERE - kgc = #{kgc} + kpi_group_id = #{kpiGroupId} AND user_id = #{userId} AND DATE_FORMAT(data_date, '%Y-%m') = #{yearMonth} AND yn = 1 @@ -29,7 +29,7 @@ FROM kpi_group_user WHERE - kgc = #{kgc} + kpi_group_id = #{kpiGroupId} AND user_id = #{userId} AND DATE_FORMAT(data_date, '%Y-%m') = #{yearMonth} AND yn = 1 diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiStageMqLog.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiStageMqLog.java index 1649ac0..d51c992 100644 --- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiStageMqLog.java +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiStageMqLog.java @@ -30,7 +30,7 @@ import java.util.List; public class KpiStageMqLog extends Model { private static final long serialVersionUID = 1L; - @TableId(type = IdType.ASSIGN_ID) + @TableId(type = IdType.AUTO) private Long id; /** diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalTaskController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalTaskController.java index 55d54c7..8a00616 100644 --- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalTaskController.java +++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalTaskController.java @@ -113,12 +113,12 @@ public class EvalTaskController { return success(); } -// @GetMapping("/check-report") -// @ControllerMethod("当天薪酬组人员定时器") -// public Message checkTodoCompletion() { -// evalCalcTask.checkTodoCompletion(); -// return success(); -// } + @GetMapping("/send-notice") + @ControllerMethod("发送业务上报mq通知") + public Message sendNotice() { + evalGroupTask.sendNotice(); + return success(); + } // @GetMapping("/eval-group") // @ControllerMethod("处理考评组") diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiDebugController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiDebugController.java index 7969ae0..e2ea6da 100644 --- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiDebugController.java +++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiDebugController.java @@ -217,4 +217,32 @@ public class KpiDebugController { return success(); } + @GetMapping("/process-kpi-user") + @ControllerMethod("处理绩效用户老数据") + public Message processKpiUserInclusion() { + //纳入绩效考核人员 + List groupUsers = kpiGroupUserService.list(Wrappers.lambdaQuery() + .eq(KpiGroupUser::getDataDate, LocalDate.now().minusDays(1)) + .eq(KpiGroupUser::getIgnored, Boolean.FALSE) + .eq(KpiGroupUser::getYn, Boolean.TRUE) + ); + + for (KpiGroupUser groupUser : groupUsers) { + KpiPool kpiPool = kpiPoolService.getOne(Wrappers.lambdaQuery() + .eq(KpiPool::getKpiGroupId, groupUser.getKpiGroupId()) + .eq(KpiPool::getUserId, groupUser.getUserId()) + .eq(KpiPool::getMonthly, YearMonth.from(groupUser.getDataDate())) + .eq(KpiPool::getYn, Boolean.TRUE) + , Boolean.FALSE); + if (PublicUtil.isNotEmpty(kpiPool)) { + //纳入绩效计算 绩效池不参与 + if (! kpiPool.getInclusion()) { + kpiPool.setInclusion(Boolean.TRUE); + kpiPoolService.updateById(kpiPool); + } + } + } + return success(); + } + } diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupTask.java b/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupTask.java index 07d4ccb..a13b165 100644 --- a/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupTask.java +++ b/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupTask.java @@ -7,6 +7,7 @@ import cn.fw.morax.common.utils.PublicUtil; import cn.fw.morax.domain.bo.StageIndicatorBO; import cn.fw.morax.domain.db.eval.*; import cn.fw.morax.domain.db.kpi.KpiStageMqLog; +import cn.fw.morax.domain.enums.EvalScopeEnum; import cn.fw.morax.domain.enums.SettingStatusEnum; import cn.fw.morax.sdk.dto.kpi.KpiStageReportNoticeMQ; import cn.fw.morax.service.component.KpiStageIndicatorReportProducer; @@ -44,6 +45,7 @@ public class EvalGroupTask { private final EvalGroupIndicatorService evalGroupIndicatorService; private final EvalGroupRankStageService evalGroupRankStageService; private final EvalShopPoolService evalShopPoolService; + private final EvalGroupRewardDimService evalGroupRewardDimService; private final EvalGroupUserService evalGroupUserService; private final KpiStageMqLogService kpiStageMqLogService; private final EvalGroupRankService evalGroupRankService; @@ -102,8 +104,14 @@ public class EvalGroupTask { .eq(EvalGroupUser::getYn, Boolean.TRUE) ); List userIds = users.stream().map(EvalGroupUser::getUserId).distinct().collect(Collectors.toList()); - List shopIds = users.stream().map(EvalGroupUser::getShopId).distinct().collect(Collectors.toList()); - if (PublicUtil.isEmpty(userIds)) { + + List rewardDims = evalGroupRewardDimService.list(Wrappers.lambdaQuery() + .eq(EvalGroupRewardDim::getEvalGroupId, stageIndicator.getEvalGroupId()) + .eq(EvalGroupRewardDim::getType, EvalScopeEnum.SHOP) + .eq(EvalGroupRewardDim::getYn, Boolean.TRUE) + ); + List shopIds = rewardDims.stream().flatMap(dim -> dim.getShopIds().stream()).distinct().collect(Collectors.toList()); + if (PublicUtil.isEmpty(userIds) && PublicUtil.isEmpty(shopIds)) { return; } mqLog.setShopIds(shopIds); diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java b/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java index 35bcc4a..b5ae021 100644 --- a/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java +++ b/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java @@ -76,7 +76,7 @@ public class EvalUserReportTask { @Scheduled(cron = TimeTaskConstant.EVAL_REPORT) @Transactional(rollbackFor = Exception.class) public void evalUserReportTask() { - this.evalUserReport(LocalDate.now().minusDays(1)); +// this.evalUserReport(LocalDate.now().minusDays(1)); } /** diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiReportRatioTask.java b/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiReportRatioTask.java index d5fc239..0f70fb3 100644 --- a/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiReportRatioTask.java +++ b/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiReportRatioTask.java @@ -368,10 +368,10 @@ public class KpiReportRatioTask { List kpiGroups = calDto.getKpiGroups(); for (KpiGroupRank rank : calDto.getKpiGroupRanks()) { - List kgcs = rank.getKgcs(); + List kpiGroupIds = rank.getKpiGroupIds(); //绩效排名组下对应的绩效组集合 List rankKpiGroups = kpiGroups.stream() - .filter(kpiGroup -> kgcs.contains(kpiGroup.getKgc())) + .filter(kpiGroup -> kpiGroupIds.contains(kpiGroup.getId())) .collect(Collectors.toList()); Set createShopIds = rankKpiGroups.stream().flatMap(kpiGroup -> kpiGroup.getShopIds().stream()).collect(Collectors.toSet()); @@ -380,7 +380,7 @@ public class KpiReportRatioTask { Long shopId = shop.getId(); Predicate predicate = pool -> { - return shopId.equals(pool.getShopId()) && kgcs.contains(pool.getKgc()) && Boolean.TRUE.equals(pool.getInclusion()); + return shopId.equals(pool.getShopId()) && kpiGroupIds.contains(pool.getKpiGroupId()) && Boolean.TRUE.equals(pool.getInclusion()); }; kpiRatio.setS5(rank.getName()); kpiRatio.setL5(rank.getId()); @@ -396,7 +396,7 @@ public class KpiReportRatioTask { KpiRatio kpiRatio = new KpiRatio(ReportDimensionEnum.KPI_RANK, calDto.getGroupId());; Predicate predicate = pool -> { - return kgcs.contains(pool.getKgc()) && Boolean.TRUE.equals(pool.getInclusion()); + return kpiGroupIds.contains(pool.getKpiGroupId()) && Boolean.TRUE.equals(pool.getInclusion()); }; kpiRatio.setS5(rank.getName()); kpiRatio.setL5(rank.getId()); @@ -488,10 +488,10 @@ public class KpiReportRatioTask { List kpiGroupRanks = calDto.getKpiGroupRanks(); Map kpiGroupNameMap = kpiGroups.stream().collect(Collectors.toMap(KpiGroup::getId, KpiGroup::getName, (v1, v2) -> v1)); - Map kgcRankMap = new HashMap<>(); + Map kpiGroupRankMap = new HashMap<>(); for (KpiGroupRank rank : kpiGroupRanks) { - for (String kgc : rank.getKgcs()) { - kgcRankMap.put(kgc, rank); + for (Long kpiGroupId : rank.getKpiGroupIds()) { + kpiGroupRankMap.put(kpiGroupId, rank); } } @@ -512,8 +512,8 @@ public class KpiReportRatioTask { kpiRatio.setL4(pool.getKpiGroupId()); kpiRatio.setS4(kpiGroupNameMap.getOrDefault(pool.getKpiGroupId(), " ")); - if (kgcRankMap.containsKey(pool.getKgc())) { - KpiGroupRank rank = kgcRankMap.get(pool.getKgc()); + if (kpiGroupRankMap.containsKey(pool.getKpiGroupId())) { + KpiGroupRank rank = kpiGroupRankMap.get(pool.getKpiGroupId()); kpiRatio.setL5(rank.getId()); kpiRatio.setS5(rank.getName()); } diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiReportTask.java b/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiReportTask.java index 8832b90..396d14c 100644 --- a/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiReportTask.java +++ b/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiReportTask.java @@ -144,7 +144,7 @@ public class KpiReportTask { */ private void createRankReport(KpiGroupRank kpiGroupRank, Long groupId, LocalDate date) { //获取绩效排名组下的所有绩效组信息 - List kpiGroups = this.getKpiGroups(kpiGroupRank.getKgcs(), date); + List kpiGroups = this.getKpiGroups(kpiGroupRank.getKpiGroupIds(), date); if (CollectionUtils.isEmpty(kpiGroups)){ log.error("绩效排名组id [{}] 下不存在有效的绩效组信息",kpiGroupRank.getId()); return; @@ -643,13 +643,16 @@ public class KpiReportTask { - public List getKpiGroups(List egcs, LocalDate date) { + public List getKpiGroups(List kpiGroupIds, LocalDate date) { + if (PublicUtil.isEmpty(kpiGroupIds)) { + return new ArrayList<>(); + } List effectStatus = new ArrayList(){{ add(SettingStatusEnum.EFFECTIVE.getValue()); add(SettingStatusEnum.INEFFECTIVE.getValue()); }}; List kpiGroups = kpiGroupService.list(Wrappers.lambdaQuery() - .in(KpiGroup::getKgc, egcs) + .in(KpiGroup::getId, kpiGroupIds) .eq(KpiGroup::getYn, Boolean.TRUE) .in(KpiGroup::getStatus, effectStatus) .le(KpiGroup::getBeginTime, date) diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/kpi/EvalKpiBaseCalculator.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/kpi/EvalKpiBaseCalculator.java index 47d03e1..743ec76 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/kpi/EvalKpiBaseCalculator.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/kpi/EvalKpiBaseCalculator.java @@ -181,6 +181,9 @@ public abstract class EvalKpiBaseCalculator implements Calculator shopIds = evalGroup.getShopIds(); - Map shopPoolBOMap = evalPoolCommonService.inspectionShopPools(evalGroup, localDate); - for (Long shopId : shopIds) { + List distShopIds = this.getEvalDistShopIds(evalGroup); + if (PublicUtil.isEmpty(distShopIds)) { + return new ArrayList<>(); + } + Map shopPoolBOMap = evalPoolCommonService.inspectionShopPools(evalGroup, localDate, distShopIds); + for (Long shopId : distShopIds) { EvalShopPool shopPool = shopPoolBOMap.get(shopId); userShops.add(convertBO(shopPool, evalGroup, beginDate, localDate)); } @@ -299,7 +302,17 @@ public class EvalCalculateService { } - + public List getEvalDistShopIds(EvalGroup evalGroup) { + List rewardDims = evalGroupRewardDimService.list(Wrappers.lambdaQuery() + .eq(EvalGroupRewardDim::getEvalGroupId, evalGroup.getId()) + .eq(EvalGroupRewardDim::getType, EvalScopeEnum.SHOP) + .eq(EvalGroupRewardDim::getYn, Boolean.TRUE) + ); + if (PublicUtil.isEmpty(rewardDims)) { + return new ArrayList<>(); + } + return rewardDims.stream().flatMap(dim -> dim.getShopIds().stream()).distinct().collect(Collectors.toList()); + } diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupRankBizService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupRankBizService.java index d24adfd..08cf675 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupRankBizService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupRankBizService.java @@ -78,10 +78,14 @@ public class EvalGroupRankBizService { epiGroupRankVO.setShopIds(new ArrayList<>()); epiGroupRankVO.setShopNames(new HashSet<>()); for (EvalGroup evalGroup : egcGroupMap.getOrDefault(epiGroupRankVO.getId(), new ArrayList<>())) { - epiGroupRankVO.getPostIds().addAll(evalGroup.getPostIds()); - epiGroupRankVO.getPostNames().addAll(evalGroup.getPostNames()); - epiGroupRankVO.getShopIds().addAll(evalGroup.getShopIds()); - epiGroupRankVO.getShopNames().addAll(evalGroup.getShopNames()); + if (PublicUtil.isNotEmpty(evalGroup.getPostIds())) { + epiGroupRankVO.getPostIds().addAll(evalGroup.getPostIds()); + epiGroupRankVO.getPostNames().addAll(evalGroup.getPostNames()); + } + if (PublicUtil.isNotEmpty(evalGroup.getShopIds())) { + epiGroupRankVO.getShopIds().addAll(evalGroup.getShopIds()); + epiGroupRankVO.getShopNames().addAll(evalGroup.getShopNames()); + } } } page.setTotal(total); diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalPoolCommonService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalPoolCommonService.java index c05637f..a76f30e 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalPoolCommonService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalPoolCommonService.java @@ -73,7 +73,7 @@ public class EvalPoolCommonService { } - public Map inspectionShopPools(EvalGroup evalGroup, LocalDate localDate) { + public Map inspectionShopPools(EvalGroup evalGroup, LocalDate localDate, List distShopIds) { Set evalGroupShopIds = new HashSet<>(evalGroup.getShopIds()); List pools = evalShopPoolService.list(Wrappers.lambdaQuery() .eq(EvalShopPool::getEvalGroupId, evalGroup.getId()) @@ -87,20 +87,14 @@ public class EvalPoolCommonService { return v1; })); - List rewardDims = evalGroupRewardDimService.list(Wrappers.lambdaQuery() - .eq(EvalGroupRewardDim::getEvalGroupId, evalGroup.getId()) - .eq(EvalGroupRewardDim::getType, EvalScopeEnum.SHOP) - .eq(EvalGroupRewardDim::getYn, Boolean.TRUE) - ); - if (PublicUtil.isEmpty(rewardDims)) { + if (PublicUtil.isEmpty(distShopIds)) { return new HashMap<>(); } - Set distRewardShopIds = rewardDims.stream().flatMap(dim -> dim.getShopIds().stream()).collect(Collectors.toSet()); - for (Long shopId : distRewardShopIds) { + for (Long shopId : distShopIds) { if (! shopPoolMap.containsKey(shopId)) { - EvalShopPoolStatusEnum status = (distRewardShopIds.contains(shopId)) - ? EvalShopPoolStatusEnum.CALC_REWARD : EvalShopPoolStatusEnum.NO_REWARD; - EvalShopPool shopPool = this.inspectionShopPool(shopId, evalGroup, localDate, status); +// EvalShopPoolStatusEnum status = (distShopIds.contains(shopId)) +// ? EvalShopPoolStatusEnum.CALC_REWARD : EvalShopPoolStatusEnum.NO_REWARD; + EvalShopPool shopPool = this.inspectionShopPool(shopId, evalGroup, localDate, EvalShopPoolStatusEnum.CALC_REWARD); shopPoolMap.put(shopId, shopPool); } } diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupBizService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupBizService.java index df8f9f6..4a995b9 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupBizService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupBizService.java @@ -548,7 +548,11 @@ public class KpiGroupBizService { .eq(KpiGroup::getYn, Boolean.TRUE) .eq(KpiGroup::getStatus, SettingStatusEnum.EFFECTIVE) ); - BV.isTrue(count <= 0, "绩效组名称重复,请重新输入"); +// BV.isTrue(count <= 0, "绩效组名称重复,请重新输入"); + if (count > 0) { + log.info("绩效组名称重复,name:{},id:{}: ", name, Optional.ofNullable(id).orElse(0L).toString()); + throw new BusinessException("绩效组名称重复,请重新输入"); + } List drafts = commonService.getEditDraftByName(name, SettingDraftTypeEnum.KPI, draftId); BV.isTrue(drafts.size() <= 0, "绩效组名称在草稿中存在,请重新输入"); @@ -1092,7 +1096,7 @@ public class KpiGroupBizService { kpiPoolService.update(Wrappers.lambdaUpdate() .set(KpiPool::getYn, Boolean.FALSE) .set(KpiPool::getUpdateTime, new Date()) - .eq(KpiPool::getKgc, kpiGroup.getKgc()) + .eq(KpiPool::getKpiGroupId, kpiGroup.getId()) .eq(KpiPool::getYn, Boolean.TRUE) .eq(KpiPool::getMonthly, YearMonth.now()) ); diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupDataService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupDataService.java index 09c08a5..05698c5 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupDataService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupDataService.java @@ -348,7 +348,7 @@ public class KpiGroupDataService { .eq(KpiGroupUser::getKpiGroupId, kpiGroupId) ); kpiPoolService.update(Wrappers.lambdaUpdate() - .set(KpiPool::getKgc, kgc) +// .set(KpiPool::getKgc, kgc) .set(KpiPool::getUpdateTime, new Date()) .eq(KpiPool::getKpiGroupId, kpiGroupId) ); diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupIndicatorBizService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupIndicatorBizService.java index a9c5e64..ac44e77 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupIndicatorBizService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupIndicatorBizService.java @@ -148,7 +148,7 @@ public class KpiGroupIndicatorBizService { * @return */ public LocalDate getPoolLastData(KpiPool kpiPool) { - KpiGroupUser kpiGroupUser = kpiGroupUserService.getMonthLastData(kpiPool.getKgc(), kpiPool.getUserId(), kpiPool.getMonthly()); + KpiGroupUser kpiGroupUser = kpiGroupUserService.getMonthLastData(kpiPool.getKpiGroupId(), kpiPool.getUserId(), kpiPool.getMonthly()); if (PublicUtil.isEmpty(kpiGroupUser)) { log.error("员工绩效池:{},不存在绩效组人员", JSON.toJSONString(kpiPool)); return PublicUtil.getYesterdayOrEndOfMonthDay(kpiPool.getMonthly()); diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolBizService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolBizService.java index 252b3e2..07eb769 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolBizService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolBizService.java @@ -13,10 +13,7 @@ import cn.fw.morax.domain.bo.kpi.KpiRankCalculableBO; import cn.fw.morax.domain.bo.kpi.KpiStarLadderBO; import cn.fw.morax.domain.db.kpi.*; import cn.fw.morax.domain.dto.kpi.KpiGroupRankConfigQueryDTO; -import cn.fw.morax.domain.enums.KpiAssessTypeEnum; -import cn.fw.morax.domain.enums.KpiIgnoreCauseEnum; -import cn.fw.morax.domain.enums.StarEvaluationEnum; -import cn.fw.morax.domain.enums.StarLevelEnum; +import cn.fw.morax.domain.enums.*; import cn.fw.morax.domain.vo.kpi.*; import cn.fw.morax.service.data.kpi.*; import com.alibaba.fastjson.JSON; @@ -640,7 +637,10 @@ public class KpiPoolBizService { } } //奖励分正数、惩罚分负数,减去奖惩分数,得到原始分数 - BigDecimal originKpiScore = kpiPoolDetailVO.getOriginKpiScore().subtract(rewardScore).subtract(punishScore); + BigDecimal originKpiScore = pool.getKpiScore().subtract(rewardScore).subtract(punishScore); + if (BigDecimal.ZERO.compareTo(originKpiScore) > 0) { + originKpiScore = BigDecimal.ZERO; + } kpiPoolDetailVO.setRewardScore(rewardScore); kpiPoolDetailVO.setPunishScore(punishScore.abs()); kpiPoolDetailVO.setRealKpiScore(pool.getKpiScore()); @@ -761,7 +761,7 @@ public class KpiPoolBizService { * @return */ public void buildPoolData(KpiPool kpiPool, KpiPoolDetailVO kpiPoolDetailVo) { - KpiGroupUser kpiGroupUser = kpiGroupUserService.getMonthLastData(kpiPool.getKgc(), kpiPool.getUserId(), kpiPool.getMonthly()); + KpiGroupUser kpiGroupUser = kpiGroupUserService.getMonthLastData(kpiPool.getKpiGroupId(), kpiPool.getUserId(), kpiPool.getMonthly()); if (PublicUtil.isEmpty(kpiGroupUser)) { log.error("员工绩效池:{},不存在绩效组人员", JSON.toJSONString(kpiPool)); kpiPoolDetailVo.setEndTime(PublicUtil.getYesterdayOrEndOfMonthDay(kpiPool.getMonthly()).atTime(23, 59, 59)); @@ -774,7 +774,7 @@ public class KpiPoolBizService { kpiPoolDetailVo.setIgnoreCauseDesc(kpiGroupUser.getIgnoreCauseDesc()); } kpiPoolDetailVo.setEndTime(kpiGroupUser.getDataDate().atTime(23, 59, 59)); - KpiGroupUser firstKpiGroupUser = kpiGroupUserService.getMonthFirstData(kpiPool.getKgc(), kpiPool.getUserId(), kpiPool.getMonthly()); + KpiGroupUser firstKpiGroupUser = kpiGroupUserService.getMonthFirstData(kpiPool.getKpiGroupId(), kpiPool.getUserId(), kpiPool.getMonthly()); kpiPoolDetailVo.setStartTime(firstKpiGroupUser.getDataDate().atTime(00, 00, 00)); } @@ -899,34 +899,21 @@ public class KpiPoolBizService { * @param localDate */ public void cacheCalculableKpiGroupRank(LocalDate localDate) { - List kpiGroups = kpiGroupService.queryKgiGroupsByDay(localDate); - if (CollectionUtils.isEmpty(kpiGroups)) { - log.info("没有需要计算排名的绩效组,日期:{}", localDate); - return; - } - Set calculateSeparatelyIds = kpiGroups.stream().map(KpiGroup::getId).collect(Collectors.toSet()); - Map kgcIdMap = kpiGroups.stream().collect(Collectors.toMap(KpiGroup::getKgc, KpiGroup::getId, (v1, v2) -> v1)); List rankBOS = new ArrayList<>(); - List kpiGroupRanks = kpiGroupRankService.list(Wrappers.lambdaQuery().eq(KpiGroupRank::getYn, Boolean.TRUE)); + List kpiGroupRanks = kpiGroupRankService.list(Wrappers.lambdaQuery() + .eq(KpiGroupRank::getStatus, SettingStatusEnum.EFFECTIVE) + .eq(KpiGroupRank::getYn, Boolean.TRUE) + ); for (KpiGroupRank kpiGroupRank : kpiGroupRanks) { - Set kpiGroupIds = new HashSet<>(); - for (String kgc : kpiGroupRank.getKgcs()) { - Long kpiGroupId = kgcIdMap.getOrDefault(kgc, 0L); - if (kpiGroupId > 0) { - kpiGroupIds.add(kpiGroupId); - calculateSeparatelyIds.remove(kpiGroupId); - } - } - //@todo 缓存绩效排名组 - if (PublicUtil.isNotEmpty(kpiGroupIds)) { - rankBOS.add(JSONObject.toJSONString(cacheCalculableKpiGroupRank(kpiGroupRank, kpiGroupIds, localDate))); + if (PublicUtil.isNotEmpty(kpiGroupRank.getKpiGroupIds())) { + rankBOS.add(JSONObject.toJSONString(cacheCalculableKpiGroupRank(kpiGroupRank, + new HashSet<>(kpiGroupRank.getKpiGroupIds()), localDate))); } } - kpiGroups.stream().filter(kpiGroup -> calculateSeparatelyIds.contains(kpiGroup.getId())).forEach(kpiGroup -> { - rankBOS.add(JSONObject.toJSONString(cacheCalculableKpiGroupRank(kpiGroup, localDate))); - }); - ListOperations listOps = stringRedisTemplate.opsForList(); - listOps.rightPushAll(getCalcuStarKey(), rankBOS); + if (PublicUtil.isNotEmpty(rankBOS)) { + ListOperations listOps = stringRedisTemplate.opsForList(); + listOps.rightPushAll(getCalcuStarKey(), rankBOS); + } } /** diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolCommonService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolCommonService.java index 586e138..83b0886 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolCommonService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolCommonService.java @@ -116,7 +116,7 @@ public class KpiPoolCommonService { */ public KpiPool inspectionPool(KpiGroupUser user) { KpiPool kpiPool = kpiPoolService.getOne(Wrappers.lambdaQuery() - .eq(KpiPool::getKgc, user.getKgc()) + .eq(KpiPool::getKpiGroupId, user.getKpiGroupId()) .eq(KpiPool::getUserId, user.getUserId()) .eq(KpiPool::getMonthly, YearMonth.from(user.getDataDate())) .eq(KpiPool::getYn, Boolean.TRUE) diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryReportService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryReportService.java index 7321e72..7a86e60 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryReportService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryReportService.java @@ -2,6 +2,7 @@ package cn.fw.morax.service.biz.salary; import cn.fw.common.exception.BusinessException; import cn.fw.ehr.sdk.api.enums.StaffShopTypeEnum; +import cn.fw.morax.common.constant.Constant; import cn.fw.morax.common.utils.DateUtil; import cn.fw.morax.common.utils.PublicUtil; import cn.fw.morax.domain.db.PayrollRecord; @@ -37,7 +38,6 @@ import org.springframework.util.CollectionUtils; import java.text.SimpleDateFormat; import java.time.LocalDate; -import java.time.LocalDateTime; import java.time.YearMonth; import java.time.temporal.TemporalAdjusters; import java.util.*; @@ -272,11 +272,15 @@ public class SalaryReportService { if (! ExtraSalaryTypeEnum.SUBSIDY.equals(extraDTO.getSalaryType())) { return; } + LocalDate dataDate = DateUtil.date2LocalDate(extraDTO.getDataDate()); LocalDate firstDay = DateUtil.date2LocalDate(extraDTO.getDataDate()).with(TemporalAdjusters.firstDayOfMonth()); + //如果是第一天 清除结束日期也是第一天, 否则是前一天 + LocalDate cleanEndDay = (firstDay.compareTo(dataDate) == 0) ? firstDay : dataDate.minusDays(1); salaryExtraProjectService.remove(Wrappers.lambdaQuery() .eq(SalaryExtraProject::getUserId, extraDTO.getUserId()) .eq(SalaryExtraProject::getSalaryType, ExtraSalaryTypeEnum.SUBSIDY) .ge(SalaryExtraProject::getDataDate, firstDay) + .le(SalaryExtraProject::getDataDate, cleanEndDay) ); } @@ -351,6 +355,12 @@ public class SalaryReportService { if (PublicUtil.isNotEmpty(dto.getTypeId())) { dto.setTypeId(dto.getTypeId()); } + if (PublicUtil.isEmpty(dto.getDataId())) { + salaryExtraProject.setDataId(""); + } + if (PublicUtil.isEmpty(dto.getDataName())) { + salaryExtraProject.setDataName(""); + } if (PublicUtil.isNotEmpty(dto.getTypeName())) { dto.setTypeName(dto.getTypeName()); } diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/data/kpi/KpiGroupUserService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/data/kpi/KpiGroupUserService.java index f081d49..66dc341 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/data/kpi/KpiGroupUserService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/data/kpi/KpiGroupUserService.java @@ -11,18 +11,16 @@ public interface KpiGroupUserService extends IService { /** * 获取某月最近的绩效组人员数据 * - * @param kgc * @param yearMonth * @return */ - KpiGroupUser getMonthLastData(String kgc, Long userId, YearMonth yearMonth); + KpiGroupUser getMonthLastData(Long kpiGroupId, Long userId, YearMonth yearMonth); /** * 获取某月第一天的绩效组人员数据 * - * @param kgc * @param yearMonth * @return */ - KpiGroupUser getMonthFirstData(String kgc, Long userId, YearMonth yearMonth); + KpiGroupUser getMonthFirstData(Long kpiGroupId, Long userId, YearMonth yearMonth); } diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/data/kpi/impl/KpiGroupUserServiceImpl.java b/fw-morax-service/src/main/java/cn/fw/morax/service/data/kpi/impl/KpiGroupUserServiceImpl.java index 3c944b4..1a4e924 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/data/kpi/impl/KpiGroupUserServiceImpl.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/data/kpi/impl/KpiGroupUserServiceImpl.java @@ -16,11 +16,11 @@ import java.time.YearMonth; public class KpiGroupUserServiceImpl extends ServiceImpl implements KpiGroupUserService { @Override - public KpiGroupUser getMonthLastData(String kgc, Long userId, YearMonth yearMonth) { - return this.baseMapper.getMonthLastData(kgc, userId, yearMonth); + public KpiGroupUser getMonthLastData(Long kpiGroupId, Long userId, YearMonth yearMonth) { + return this.baseMapper.getMonthLastData(kpiGroupId, userId, yearMonth); } @Override - public KpiGroupUser getMonthFirstData(String kgc, Long userId, YearMonth yearMonth) { - return this.baseMapper.getMonthFirstData(kgc, userId, yearMonth); + public KpiGroupUser getMonthFirstData(Long kpiGroupId, Long userId, YearMonth yearMonth) { + return this.baseMapper.getMonthFirstData(kpiGroupId, userId, yearMonth); } }