Commit 74153fdac57dea5e2f7a09b285f3adea583371f1

Authored by 姜超
1 parent c9c33bf1

feature(*): 修改门店指标展示

修改门店指标展示
fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalIndicatorValueDao.java
... ... @@ -46,8 +46,21 @@ public interface EvalIndicatorValueDao extends BaseMapper<EvalIndicatorValue> {
46 46 * @param userIds
47 47 * @return
48 48 */
49   - List<EvalIndicatorValue> getIndicatorReportData(@Param("indicatorCode") String indicatorCode,
50   - @Param("monthly") YearMonth monthly,
51   - @Param("userIds") Set<Long> userIds,
52   - @Param("dimensionType") Integer dimensionType);
  49 + List<EvalIndicatorValue> getStaffIndicatorReportData(@Param("indicatorCode") String indicatorCode,
  50 + @Param("monthly") YearMonth monthly,
  51 + @Param("userIds") Set<Long> userIds,
  52 + @Param("dimensionType") Integer dimensionType);
  53 +
  54 + /**
  55 + * 获取指标原始上报记录
  56 + *
  57 + * @param indicatorCode
  58 + * @param monthly
  59 + * @param shopIds
  60 + * @return
  61 + */
  62 + List<EvalIndicatorValue> getShopIndicatorReportData(@Param("indicatorCode") String indicatorCode,
  63 + @Param("monthly") YearMonth monthly,
  64 + @Param("shopIds") Set<Long> shopIds,
  65 + @Param("dimensionType") Integer dimensionType);
53 66 }
... ...
fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorPreconditionMapper.xml
... ... @@ -25,6 +25,7 @@
25 25 t1.`eval_group_indicator_id`,
26 26 t1.`code` ,
27 27 t1.`name` ,
  28 + t1.`code_type`,
28 29 t1.`target_calc_type`,
29 30 t1.`target_type` ,
30 31 t1.`target_value`,
... ...
fw-morax-dao/src/main/resources/mapper/eval/EvalIndicatorValueMapper.xml
... ... @@ -21,6 +21,10 @@
21 21 <result column="update_time" property="updateTime"/>
22 22 </resultMap>
23 23  
  24 + <sql id="all_columns">
  25 + id,dimension_type,indicator_code,user_id,user_name,shop_id,shop_name,indicator_value,data_type,data_date,group_id
  26 + </sql>
  27 +
24 28 <select id="queryLastValue" resultMap="BaseResultMap">
25 29 select
26 30 t2.`id`,
... ... @@ -47,11 +51,15 @@
47 51 order by id desc limit 1
48 52 </select>
49 53  
50   - <select id="getIndicatorReportData" resultType="cn.fw.morax.domain.db.eval.EvalIndicatorValue">
  54 + <select id="getStaffIndicatorReportData" resultType="cn.fw.morax.domain.db.eval.EvalIndicatorValue">
51 55 SELECT
52 56 t1.id,
53   - t1.user_id,
  57 + t1.dimension_type,
54 58 t1.indicator_code,
  59 + t1.user_id,
  60 + t1.user_name,
  61 + t1.shop_id,
  62 + t1.shop_name,
55 63 t1.indicator_value,
56 64 t1.data_type,
57 65 t1.data_date,
... ... @@ -79,4 +87,40 @@
79 87 t1.id = t2.pk
80 88 </select>
81 89  
  90 + <select id="getShopIndicatorReportData" resultType="cn.fw.morax.domain.db.eval.EvalIndicatorValue">
  91 + SELECT
  92 + t1.id,
  93 + t1.dimension_type,
  94 + t1.indicator_code,
  95 + t1.user_id,
  96 + t1.user_name,
  97 + t1.shop_id,
  98 + t1.shop_name,
  99 + t1.indicator_value,
  100 + t1.data_type,
  101 + t1.data_date,
  102 + t1.group_id
  103 + FROM
  104 + eval_indicator_value t1,
  105 + (
  106 + SELECT CONVERT
  107 + ( SUBSTRING_INDEX( group_concat( id ORDER BY `data_date` DESC ), ',', 1 ), SIGNED ) pk
  108 + FROM
  109 + eval_indicator_value
  110 + WHERE
  111 + DATE_FORMAT( data_date, '%Y-%m' ) >= #{monthly}
  112 + AND shop_id IN
  113 + <foreach collection="shopIds" item="shopId" separator=" , " open="(" close=")">
  114 + #{shopId}
  115 + </foreach>
  116 + AND dimension_type = #{dimensionType}
  117 + AND indicator_code = #{indicatorCode}
  118 + AND yn = 1
  119 + GROUP BY
  120 + shop_id
  121 + ) t2
  122 + WHERE
  123 + t1.id = t2.pk
  124 + </select>
  125 +
82 126 </mapper>
83 127 \ No newline at end of file
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalIndicatorController.java
... ... @@ -10,6 +10,7 @@ import cn.fw.morax.domain.db.eval.EvalIndicatorImportDetail;
10 10 import cn.fw.morax.domain.dto.query.EvalIndicatorImportQueryDTO;
11 11 import cn.fw.morax.domain.vo.eval.*;
12 12 import cn.fw.morax.domain.vo.salary.StaffPersonTaxVO;
  13 +import cn.fw.morax.service.biz.eval.EvalIndicatorBizService;
13 14 import cn.fw.morax.service.biz.eval.EvalIndicatorReportService;
14 15 import cn.fw.security.auth.client.annotation.Authorization;
15 16 import cn.fw.security.auth.client.annotation.IgnoreAuth;
... ... @@ -43,6 +44,19 @@ import static cn.fw.common.web.util.ResultBuilder.success;
43 44 public class EvalIndicatorController {
44 45  
45 46 private final EvalIndicatorReportService evalIndicatorReportService;
  47 + private final EvalIndicatorBizService evalIndicatorBizService;
  48 +
  49 + /**
  50 + * 考评指标
  51 + *
  52 + * @return
  53 + */
  54 + @IgnoreAuth
  55 + @GetMapping("/indicators")
  56 + @ControllerMethod("考评指标")
  57 + public Message<List<EvalIndicatorVO>> getEvalIndicators() {
  58 + return success(evalIndicatorBizService.getEvalIndicators());
  59 + }
46 60  
47 61 /**
48 62 * 导入记录分页查询
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupPoolService.java
... ... @@ -23,6 +23,7 @@ import cn.fw.morax.service.data.SettingDraftService;
23 23 import cn.fw.morax.service.data.eval.*;
24 24 import cn.fw.morax.service.data.kpi.IndicatorUserValueService;
25 25 import com.alibaba.fastjson.JSON;
  26 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
26 27 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
27 28 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
28 29 import com.google.common.collect.Lists;
... ... @@ -328,7 +329,7 @@ public class EvalGroupPoolService {
328 329 * @return
329 330 */
330 331 public EvalPoolIndicatorDetailVO getHitIndicatorDetail(Long evalPoolId, EvalScopeEnum scopeType, Long referId, Long evalGroupIndicatorId, LocalDate dataDate) {
331   - EvalPoolIndicatorDetailVO indicatorDetail = evalPoolIndicatorDetailService.getStaffIndicatorValue(evalPoolId, scopeType, evalGroupIndicatorId, dataDate);
  332 + EvalPoolIndicatorDetailVO indicatorDetail = evalPoolIndicatorDetailService.getIndicatorValue(evalPoolId, scopeType, evalGroupIndicatorId, dataDate);
332 333 BV.notNull(indicatorDetail, "考评指标明细不存在");
333 334  
334 335 //命中记录
... ... @@ -365,7 +366,7 @@ public class EvalGroupPoolService {
365 366 Long evalPoolId,
366 367 EvalScopeEnum scopeType,
367 368 LocalDate dataDate) {
368   - List<EvalGroupIndicatorPreconditionVO> preconditionVOS = evalGroupIndicatorPreconditionService.getConds(evalPoolId, evalGroupIndicatorId, dataDate);
  369 + List<EvalGroupIndicatorPreconditionVO> preconditionVOS = evalGroupIndicatorPreconditionService.getConds(evalPoolId, scopeType, evalGroupIndicatorId, dataDate);
369 370 for (EvalGroupIndicatorPreconditionVO preconditionVO : preconditionVOS) {
370 371 //有目标记录
371 372 if (! TargetTypeEnum.NO.equals(preconditionVO.getTargetType())) {
... ... @@ -381,7 +382,7 @@ public class EvalGroupPoolService {
381 382 preconditionVO.setReachValue(targetHitLog.map(EvalGroupIndicatorTargetHitLog::getReachValue).orElse(BigDecimal.ZERO));
382 383 preconditionVO.setIndicatorValue(targetHitLog.map(EvalGroupIndicatorTargetHitLog::getValue).orElse(BigDecimal.ZERO));
383 384 } else {
384   - BigDecimal indicatorOriginValue = queryUserOriginValue(preconditionVO.getCode(), referId, dataDate, preconditionVO.getCodeType());
  385 + BigDecimal indicatorOriginValue = queryUserOriginValue(preconditionVO.getCode(), referId, scopeType, dataDate, preconditionVO.getCodeType());
385 386 preconditionVO.setIndicatorValue(indicatorOriginValue);
386 387 }
387 388  
... ... @@ -473,7 +474,7 @@ public class EvalGroupPoolService {
473 474 Long paramId = paramVO.getId();
474 475 //无目标
475 476 if (TargetTypeEnum.NO.equals(paramVO.getTargetType())) {
476   - BigDecimal indicatorOriginValue = queryUserOriginValue(code, referId, dataDate, paramVO.getCodeType());
  477 + BigDecimal indicatorOriginValue = queryUserOriginValue(code, referId, scopeType,dataDate, paramVO.getCodeType());
477 478 paramVO.setIndicatorValue(indicatorOriginValue);
478 479 continue;
479 480 }
... ... @@ -513,21 +514,29 @@ public class EvalGroupPoolService {
513 514 return paramTargetHitLogMap;
514 515 }
515 516  
516   - public BigDecimal queryUserOriginValue(String code, Long userId, LocalDate dataDate, IndicatorCodeTypeEnum codeType) {
  517 + public BigDecimal queryUserOriginValue(String code, Long referId, EvalScopeEnum scopeType, LocalDate dataDate, IndicatorCodeTypeEnum codeType) {
  518 + DimensionTypeEnum dimensionType = (EvalScopeEnum.STAFF.equals(scopeType)) ? DimensionTypeEnum.STAFF : DimensionTypeEnum.SHOP;
517 519 //无目标
518 520 if (IndicatorCodeTypeEnum.INDICATOR.equals(codeType)) {
519   - IndicatorUserValue indicatorUserValue = indicatorUserValueService.getOne(Wrappers.<IndicatorUserValue>lambdaQuery()
520   - .in(IndicatorUserValue::getIndicatorCode, code)
  521 + LambdaQueryWrapper<IndicatorUserValue> queryWrapper = Wrappers.<IndicatorUserValue>lambdaQuery();
  522 + if (EvalScopeEnum.STAFF.equals(scopeType)) {
  523 + queryWrapper.eq(IndicatorUserValue::getUserId, referId);
  524 + } else {
  525 + queryWrapper.eq(IndicatorUserValue::getShopId, referId);
  526 + }
  527 + IndicatorUserValue indicatorUserValue = indicatorUserValueService.getOne(queryWrapper
  528 + .eq(IndicatorUserValue::getIndicatorCode, code)
521 529 .eq(IndicatorUserValue::getDataDate, dataDate)
522   - .eq(IndicatorUserValue::getUserId, userId)
  530 + .eq(IndicatorUserValue::getDimensionType, dimensionType)
523 531 .eq(IndicatorUserValue::getYn, Boolean.TRUE)
524 532 , Boolean.FALSE
525 533 );
526 534 BigDecimal indicatorOriginValue = commonService.queryIndicatorValue(code, indicatorUserValue);
527 535 return indicatorOriginValue;
528 536 } else {
529   - EvalIndicatorValue evalIndicatorValue = evalIndicatorValueService.queryLastValue(userId,
530   - DimensionTypeEnum.STAFF, code, dataDate);
  537 +
  538 + EvalIndicatorValue evalIndicatorValue = evalIndicatorValueService.queryLastValue(referId,
  539 + dimensionType, code, dataDate);
531 540 BigDecimal indicatorOriginValue = commonService.queryEvalIndicatorValue(code, evalIndicatorValue);
532 541 return indicatorOriginValue;
533 542 }
... ... @@ -681,7 +690,7 @@ public class EvalGroupPoolService {
681 690 Long paramId = paramVO.getId();
682 691 //无目标
683 692 if (TargetTypeEnum.NO.equals(paramVO.getTargetType())) {
684   - BigDecimal indicatorOriginValue = queryUserOriginValue(code, referId, dataDate, paramVO.getCodeType());
  693 + BigDecimal indicatorOriginValue = queryUserOriginValue(code, referId, scopeType,dataDate, paramVO.getCodeType());
685 694 paramVO.setIndicatorValue(indicatorOriginValue);
686 695 continue;
687 696 }
... ... @@ -986,13 +995,14 @@ public class EvalGroupPoolService {
986 995 List<EvalIndicatorValue> indicatorUserValues = evalIndicatorValueService.getShopReportData(indicatorCode, lastMonth, shopIds);
987 996  
988 997 Map<Long, EvalIndicatorValue> indicatorUserValueMap = indicatorUserValues.stream()
989   - .collect(Collectors.toMap(EvalIndicatorValue::getUserId, Function.identity(), (v1, v2) -> v1));
  998 + .collect(Collectors.toMap(EvalIndicatorValue::getShopId, Function.identity(), (v1, v2) -> v1));
990 999  
991 1000 List<EvalIndicatorRankShopVO> staffRanks = Lists.newArrayListWithCapacity(indicatorUserValues.size());
992 1001 for (EvalShopPool pool : pools) {
993 1002 EvalIndicatorRankShopVO shopVO = new EvalIndicatorRankShopVO();
994 1003 shopVO.setShopId(pool.getShopId());
995 1004 shopVO.setShopName(pool.getShopName());
  1005 + shopVO.setOriginValue(BigDecimal.ZERO);
996 1006 if (indicatorUserValueMap.containsKey(pool.getShopId())) {
997 1007 EvalIndicatorValue indicatorUserValueVO = indicatorUserValueMap.get(pool.getShopId());
998 1008 shopVO.setOriginValue(commonService.queryEvalIndicatorValueVO(indicatorCode, indicatorUserValueVO));
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalIndicatorBizService.java
... ... @@ -12,6 +12,7 @@ import cn.fw.morax.common.utils.PublicUtil;
12 12 import cn.fw.morax.domain.db.eval.*;
13 13 import cn.fw.morax.domain.db.kpi.Indicators;
14 14 import cn.fw.morax.domain.dto.EvalIndicatorDTO;
  15 +import cn.fw.morax.domain.dto.query.EvalIndicatorImportQueryDTO;
15 16 import cn.fw.morax.domain.dto.query.EvalIndicatorQueryDTO;
16 17 import cn.fw.morax.domain.dto.query.IndicatorPostQueryDTO;
17 18 import cn.fw.morax.domain.enums.ApplicableTypeEnum;
... ... @@ -421,4 +422,11 @@ public class EvalIndicatorBizService {
421 422 return compositeIndicator;
422 423 }
423 424  
  425 + public List<EvalIndicatorVO> getEvalIndicators() {
  426 + List<EvalIndicator> evalIndicators = evalIndicatorService.list(Wrappers.<EvalIndicator>lambdaQuery()
  427 + .eq(EvalIndicator::getYn, Boolean.TRUE)
  428 + .eq(EvalIndicator::getEnable, Boolean.TRUE)
  429 + );
  430 + return PublicUtil.copyList(evalIndicators, EvalIndicatorVO.class);
  431 + }
424 432 }
425 433 \ No newline at end of file
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/EvalGroupIndicatorPreconditionService.java
... ... @@ -2,6 +2,7 @@ package cn.fw.morax.service.data.eval;
2 2  
3 3  
4 4 import cn.fw.morax.domain.db.eval.EvalGroupIndicatorPrecondition;
  5 +import cn.fw.morax.domain.enums.EvalScopeEnum;
5 6 import cn.fw.morax.domain.vo.eval.EvalGroupIndicatorPreconditionVO;
6 7 import com.baomidou.mybatisplus.extension.service.IService;
7 8  
... ... @@ -24,6 +25,6 @@ public interface EvalGroupIndicatorPreconditionService extends IService&lt;EvalGrou
24 25 * @param evalGroupIndicatorId
25 26 * @return
26 27 */
27   - List<EvalGroupIndicatorPreconditionVO> getConds(Long poolId, Long evalGroupIndicatorId, LocalDate dataDate);
  28 + List<EvalGroupIndicatorPreconditionVO> getConds(Long poolId, EvalScopeEnum scopeType, Long evalGroupIndicatorId, LocalDate dataDate);
28 29  
29 30 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/EvalPoolIndicatorDetailService.java
... ... @@ -45,15 +45,15 @@ public interface EvalPoolIndicatorDetailService extends IService&lt;EvalPoolIndicat
45 45 LocalDate localDate);
46 46  
47 47 /**
48   - * 获取员工某月指标详情记录
  48 + * 获取员工、门店某月指标详情记录
49 49 *
50 50 * @param evalPoolId
51 51 * @param evalGroupIndicatorId
52 52 * @param localDate
53 53 * @return
54 54 */
55   - EvalPoolIndicatorDetailVO getStaffIndicatorValue(Long evalPoolId,
56   - EvalScopeEnum scopeType,
57   - Long evalGroupIndicatorId,
58   - LocalDate localDate);
  55 + EvalPoolIndicatorDetailVO getIndicatorValue(Long evalPoolId,
  56 + EvalScopeEnum scopeType,
  57 + Long evalGroupIndicatorId,
  58 + LocalDate localDate);
59 59 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/impl/EvalGroupIndicatorHitLogServiceImpl.java
... ... @@ -48,7 +48,7 @@ public class EvalGroupIndicatorHitLogServiceImpl extends ServiceImpl&lt;EvalGroupIn
48 48 .eq(EvalGroupIndicatorHitLog::getEvalGroupIndicatorId, evalGroupIndicatorId)
49 49 .eq(EvalGroupIndicatorHitLog::getDataDate, dataDate)
50 50 .eq(EvalGroupIndicatorHitLog::getPoolId, poolId)
51   - .eq(EvalGroupIndicatorHitLog::getScopeType, EvalScopeEnum.STAFF)
  51 + .eq(EvalGroupIndicatorHitLog::getScopeType, scopeType)
52 52 .eq(EvalGroupIndicatorHitLog::getYn, Boolean.TRUE)
53 53 );
54 54  
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/impl/EvalGroupIndicatorPreconditionServiceImpl.java
... ... @@ -28,9 +28,9 @@ public class EvalGroupIndicatorPreconditionServiceImpl
28 28 implements EvalGroupIndicatorPreconditionService {
29 29  
30 30 @Override
31   - public List<EvalGroupIndicatorPreconditionVO> getConds(Long poolId, Long evalGroupIndicatorId, LocalDate dataDate) {
  31 + public List<EvalGroupIndicatorPreconditionVO> getConds(Long poolId, EvalScopeEnum scopeType, Long evalGroupIndicatorId, LocalDate dataDate) {
32 32 List<EvalGroupIndicatorPreconditionVO> indicatorConds = this.baseMapper
33   - .getHitVos(poolId, evalGroupIndicatorId, dataDate, EvalScopeEnum.STAFF.getValue());
  33 + .getHitVos(poolId, evalGroupIndicatorId, dataDate, scopeType.getValue());
34 34 indicatorConds.stream().forEach(EvalGroupIndicatorPreconditionVO::processPercent);
35 35 return indicatorConds;
36 36 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/impl/EvalIndicatorValueServiceImpl.java
... ... @@ -37,11 +37,11 @@ public class EvalIndicatorValueServiceImpl extends ServiceImpl&lt;EvalIndicatorValu
37 37  
38 38 @Override
39 39 public List<EvalIndicatorValue> getStaffReportData(String code, YearMonth monthly, Set<Long> userIds) {
40   - return this.baseMapper.getIndicatorReportData(code, monthly,userIds, DimensionTypeEnum.STAFF.getValue());
  40 + return this.baseMapper.getStaffIndicatorReportData(code, monthly,userIds, DimensionTypeEnum.STAFF.getValue());
41 41 }
42 42  
43 43 @Override
44 44 public List<EvalIndicatorValue> getShopReportData(String code, YearMonth monthly, Set<Long> shopIds) {
45   - return this.baseMapper.getIndicatorReportData(code, monthly,shopIds, DimensionTypeEnum.SHOP.getValue());
  45 + return this.baseMapper.getShopIndicatorReportData(code, monthly,shopIds, DimensionTypeEnum.SHOP.getValue());
46 46 }
47 47 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/impl/EvalPoolIndicatorDetailServiceImpl.java
... ... @@ -35,7 +35,7 @@ public class EvalPoolIndicatorDetailServiceImpl extends ServiceImpl&lt;EvalPoolIndi
35 35 }
36 36  
37 37 @Override
38   - public EvalPoolIndicatorDetailVO getStaffIndicatorValue(Long evalPoolId, EvalScopeEnum scopeType,Long evalGroupIndicatorId, LocalDate localDate) {
  38 + public EvalPoolIndicatorDetailVO getIndicatorValue(Long evalPoolId, EvalScopeEnum scopeType, Long evalGroupIndicatorId, LocalDate localDate) {
39 39 return this.baseMapper.getStaffIndicatorValue(evalPoolId, scopeType.getValue(), evalGroupIndicatorId, localDate);
40 40 }
41 41 }
... ...