Commit d22abbcbc9e92ad79c86968d1e7feb505e6d37ea

Authored by 姜超
2 parents 1066e8f4 9f48755c

Merge branch 'test' into 'main'

个人考评查看

个人考评查看

See merge request !133
doc/2023-05-18_update.sql
@@ -9,3 +9,26 @@ ALTER TABLE `fw_morax`.`eval_group_user` @@ -9,3 +9,26 @@ ALTER TABLE `fw_morax`.`eval_group_user`
9 ALTER TABLE `fw_morax`.`eval_group_indicator_target_hit_log` 9 ALTER TABLE `fw_morax`.`eval_group_indicator_target_hit_log`
10 ADD COLUMN `extra_reach_value` decimal(18, 4) NULL COMMENT '额外达成目标' AFTER `reach_value`, 10 ADD COLUMN `extra_reach_value` decimal(18, 4) NULL COMMENT '额外达成目标' AFTER `reach_value`,
11 ADD COLUMN `use_target` tinyint(4) NULL DEFAULT 1 COMMENT '考评使用目标; 1:无目标 2:第一目标 3:额外目标值' AFTER `extra_reach_value`; 11 ADD COLUMN `use_target` tinyint(4) NULL DEFAULT 1 COMMENT '考评使用目标; 1:无目标 2:第一目标 3:额外目标值' AFTER `extra_reach_value`;
  12 +
  13 +
  14 +CREATE TABLE `eval_reward_dist` (
  15 +`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  16 +`user_id` bigint(20) NOT NULL COMMENT '用户id',
  17 +`eval_group_rank_id` bigint(20) NOT NULL COMMENT '考评排名组id',
  18 +`eval_group_rank_stage_id` bigint(20) NOT NULL COMMENT '考评排名组阶段id',
  19 +`eval_group_id` bigint(20) NOT NULL COMMENT '考评组id',
  20 +`eval_group_rank_name` varchar(255) DEFAULT NULL COMMENT '考评排名组名称',
  21 +`eval_group_rank_stage_name` varchar(255) DEFAULT NULL COMMENT '考评排名组阶段名称',
  22 +`begin_time` date DEFAULT NULL COMMENT '阶段开始时间',
  23 +`over_time` date DEFAULT NULL COMMENT '阶段结束时间',
  24 +`eval_shop_pool_ids` varchar(512) NOT NULL COMMENT '门店考评池id',
  25 +`shop_ids` varchar(512) NOT NULL COMMENT '门店id',
  26 +`reward` decimal(18,2) NOT NULL COMMENT '考评奖惩',
  27 +`status` tinyint(4) DEFAULT NULL COMMENT '状态',
  28 +`group_id` bigint(20) NOT NULL COMMENT '集团id',
  29 +`yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
  30 +`create_time` datetime DEFAULT NULL COMMENT '创建时间',
  31 +`update_time` datetime DEFAULT NULL COMMENT '更新时间',
  32 +PRIMARY KEY (`id`),
  33 +KEY `eval_pool_salary_group_id_index` (`eval_shop_pool_ids`)
  34 +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='考评门店奖惩分配';
12 \ No newline at end of file 35 \ No newline at end of file
fw-morax-common/src/main/java/cn/fw/morax/common/constant/Constant.java
@@ -52,6 +52,11 @@ public class Constant { @@ -52,6 +52,11 @@ public class Constant {
52 public final static String SEPARATOR = "_"; 52 public final static String SEPARATOR = "_";
53 53
54 /** 54 /**
  55 + * 时间分隔符
  56 + */
  57 + public final static String TIME_SEPARATOR = "—";
  58 +
  59 + /**
55 * 薪酬报表车系名称 60 * 薪酬报表车系名称
56 */ 61 */
57 public final static String REPORT_CAR_SERIES_NAME = "carSeriesName"; 62 public final static String REPORT_CAR_SERIES_NAME = "carSeriesName";
fw-morax-dao/src/main/resources/mapper/eval/EvalShopPoolDao.xml
@@ -4,23 +4,31 @@ @@ -4,23 +4,31 @@
4 4
5 <!-- 通用查询映射结果 --> 5 <!-- 通用查询映射结果 -->
6 <resultMap id="BaseResultMap" type="cn.fw.morax.domain.db.eval.EvalShopPool"> 6 <resultMap id="BaseResultMap" type="cn.fw.morax.domain.db.eval.EvalShopPool">
7 - <result column="id" property="id"/>  
8 - <result column="egc" property="egc"/>  
9 - <result column="eval_group_id" property="evalGroupId"/>  
10 - <result column="shop_id" property="shopId"/>  
11 - <result column="shop_name" property="shopName"/>  
12 - <result column="reward" property="reward"/>  
13 - <result column="score" property="score"/>  
14 - <result column="score_ratio" property="scoreRatio"/>  
15 - <result column="monthly" property="monthly"/>  
16 - <result column="group_id" property="groupId"/>  
17 - <result column="yn" property="yn"/>  
18 - <result column="create_time" property="createTime"/>  
19 - <result column="update_time" property="updateTime"/> 7 + <result column="id" property="id"/>
  8 + <result column="eval_group_rank_id" property="evalGroupRankId"/>
  9 + <result column="eval_group_rank_stage_id" property="evalGroupRankStageId"/>
  10 + <result column="egc" property="egc"/>
  11 + <result column="eval_group_id" property="evalGroupId"/>
  12 + <result column="shop_id" property="shopId"/>
  13 + <result column="shop_name" property="shopName"/>
  14 + <result column="reward" property="reward"/>
  15 + <result column="status" property="status"/>
  16 + <result column="score" property="score"/>
  17 + <result column="score_ratio" property="scoreRatio"/>
  18 + <result column="rank" property="rank"/>
  19 + <result column="data_date" property="dataDate"/>
  20 + <result column="monthly" property="monthly"/>
  21 + <result column="group_id" property="groupId"/>
  22 + <result column="yn" property="yn"/>
  23 + <result column="create_time" property="createTime"/>
  24 + <result column="update_time" property="updateTime"/>
20 </resultMap> 25 </resultMap>
21 26
22 <sql id="all_columns"> 27 <sql id="all_columns">
23 - id,eval_id,egc,eval_group_id,shop_id,shop_name,reward,status,score,score_ratio,monthly,group_id 28 + id,eval_group_rank_id,eval_group_rank_stage_id
  29 + ,egc,eval_group_id,shop_id,shop_name,reward
  30 + ,status,score,score_ratio,rank,data_date
  31 + ,monthly,group_id,yn,create_time,update_time
24 </sql> 32 </sql>
25 33
26 <select id="getLastPool" resultType="cn.fw.morax.domain.db.eval.EvalShopPool"> 34 <select id="getLastPool" resultType="cn.fw.morax.domain.db.eval.EvalShopPool">
@@ -45,18 +53,24 @@ @@ -45,18 +53,24 @@
45 53
46 <select id="queryPagePool" resultType="cn.fw.morax.domain.vo.eval.EvalShopPoolVO"> 54 <select id="queryPagePool" resultType="cn.fw.morax.domain.vo.eval.EvalShopPoolVO">
47 SELECT 55 SELECT
48 - id,  
49 - eval_id,  
50 - egc,  
51 - eval_group_id,  
52 - shop_id,  
53 - shop_name,  
54 - reward,  
55 - status,  
56 - score,  
57 - score_ratio,  
58 - monthly,  
59 - group_id 56 + id
  57 + ,eval_group_rank_id
  58 + ,eval_group_rank_stage_id
  59 + ,egc
  60 + ,eval_group_id
  61 + ,shop_id
  62 + ,shop_name
  63 + ,reward
  64 + ,status
  65 + ,score
  66 + ,score_ratio
  67 + ,rank
  68 + ,data_date
  69 + ,monthly
  70 + ,group_id
  71 + ,yn
  72 + ,create_time
  73 + ,update_time
60 from eval_shop_pool 74 from eval_shop_pool
61 where yn = 1 75 where yn = 1
62 and group_id = #{condition.groupId} 76 and group_id = #{condition.groupId}
fw-morax-dao/src/main/resources/mapper/eval/EvalUserPoolDao.xml
@@ -4,43 +4,63 @@ @@ -4,43 +4,63 @@
4 4
5 <!-- 通用查询映射结果 --> 5 <!-- 通用查询映射结果 -->
6 <resultMap id="BaseResultMap" type="cn.fw.morax.domain.db.eval.EvalUserPool"> 6 <resultMap id="BaseResultMap" type="cn.fw.morax.domain.db.eval.EvalUserPool">
7 - <result column="id" property="id"/>  
8 - <result column="egc" property="egc"/>  
9 - <result column="eval_group_id" property="evalGroupId"/>  
10 - <result column="user_id" property="userId"/>  
11 - <result column="user_name" property="userName"/>  
12 - <result column="post_id" property="postId"/>  
13 - <result column="post_name" property="postName"/>  
14 - <result column="shop_id" property="shopId"/>  
15 - <result column="shop_name" property="shopName"/>  
16 - <result column="fund_shop_id" property="fundShopId"/>  
17 - <result column="fund_shop_name" property="fundShopName"/>  
18 - <result column="reward" property="reward"/>  
19 - <result column="score" property="score"/>  
20 - <result column="monthly" property="monthly"/>  
21 - <result column="group_id" property="groupId"/>  
22 - <result column="yn" property="yn"/>  
23 - <result column="create_time" property="createTime"/>  
24 - <result column="update_time" property="updateTime"/> 7 + <result column="id" property="id"/>
  8 + <result column="eval_group_rank_id" property="evalGroupRankId"/>
  9 + <result column="eval_group_rank_stage_id" property="evalGroupRankStageId"/>
  10 + <result column="egc" property="egc"/>
  11 + <result column="eval_group_id" property="evalGroupId"/>
  12 + <result column="user_id" property="userId"/>
  13 + <result column="user_name" property="userName"/>
  14 + <result column="post_id" property="postId"/>
  15 + <result column="post_name" property="postName"/>
  16 + <result column="shop_id" property="shopId"/>
  17 + <result column="shop_name" property="shopName"/>
  18 + <result column="fund_shop_id" property="fundShopId"/>
  19 + <result column="fund_shop_name" property="fundShopName"/>
  20 + <result column="reward" property="reward"/>
  21 + <result column="score" property="score"/>
  22 + <result column="score_ratio" property="scoreRatio"/>
  23 + <result column="rank" property="rank"/>
  24 + <result column="inclusion" property="inclusion"/>
  25 + <result column="data_date" property="dataDate"/>
  26 + <result column="monthly" property="monthly"/>
  27 + <result column="group_id" property="groupId"/>
  28 + <result column="yn" property="yn"/>
  29 + <result column="create_time" property="createTime"/>
  30 + <result column="update_time" property="updateTime"/>
25 </resultMap> 31 </resultMap>
26 32
  33 + <sql id="all_columns">
  34 + id,eval_group_rank_id,eval_group_rank_stage_id,egc,eval_group_id,user_id,user_name,post_id
  35 + ,post_name,shop_id,shop_name,fund_shop_id,fund_shop_name
  36 + ,reward,score,score_ratio,rank,inclusion,data_date
  37 + ,monthly,group_id,yn,create_time,update_time
  38 +
  39 + </sql>
  40 +
27 <select id="getLastPool" resultType="cn.fw.morax.domain.db.eval.EvalUserPool"> 41 <select id="getLastPool" resultType="cn.fw.morax.domain.db.eval.EvalUserPool">
28 SELECT 42 SELECT
29 - t1.id,  
30 - t1.egc,  
31 - t1.eval_group_id,  
32 - t1.user_id,  
33 - t1.user_name,  
34 - t1.post_id,  
35 - t1.post_name,  
36 - t1.shop_id,  
37 - t1.shop_name,  
38 - t1.fund_shop_id,  
39 - t1.fund_shop_name,  
40 - t1.reward,  
41 - t1.score,  
42 - t1.monthly,  
43 - t1.group_id 43 + t1.id
  44 + ,t1.eval_group_rank_id
  45 + ,t1.eval_group_rank_stage_id
  46 + ,t1.egc
  47 + ,t1.eval_group_id
  48 + ,t1.user_id
  49 + ,t1.user_name
  50 + ,t1.post_id
  51 + ,t1.post_name
  52 + ,t1.shop_id
  53 + ,t1.shop_name
  54 + ,t1.fund_shop_id
  55 + ,t1.fund_shop_name
  56 + ,t1.reward
  57 + ,t1.score
  58 + ,t1.score_ratio
  59 + ,t1.rank
  60 + ,t1.inclusion
  61 + ,t1.data_date
  62 + ,t1.monthly
  63 + ,t1.group_id
44 FROM 64 FROM
45 eval_user_pool t1, 65 eval_user_pool t1,
46 ( 66 (
@@ -61,7 +81,7 @@ @@ -61,7 +81,7 @@
61 81
62 <select id="queryPagePool" resultType="cn.fw.morax.domain.vo.eval.EvalUserPoolVO"> 82 <select id="queryPagePool" resultType="cn.fw.morax.domain.vo.eval.EvalUserPoolVO">
63 SELECT 83 SELECT
64 - * 84 + <include refid="all_columns"/>
65 from eval_user_pool 85 from eval_user_pool
66 where yn = 1 86 where yn = 1
67 and group_id = #{condition.groupId} 87 and group_id = #{condition.groupId}
fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/eval/EvalGroupUserShop.java
@@ -65,10 +65,10 @@ public class EvalGroupUserShop { @@ -65,10 +65,10 @@ public class EvalGroupUserShop {
65 */ 65 */
66 private Long referId; 66 private Long referId;
67 67
68 -// /**  
69 -// * 多阶段  
70 -// */  
71 -// private Boolean multiStage; 68 + /**
  69 + * 多阶段
  70 + */
  71 + private Boolean multiStage;
72 72
73 /** 73 /**
74 * 数据开始日期 74 * 数据开始日期
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalRewardDist.java
@@ -13,6 +13,7 @@ import lombok.experimental.Accessors; @@ -13,6 +13,7 @@ import lombok.experimental.Accessors;
13 13
14 import java.io.Serializable; 14 import java.io.Serializable;
15 import java.math.BigDecimal; 15 import java.math.BigDecimal;
  16 +import java.time.LocalDate;
16 import java.time.LocalDateTime; 17 import java.time.LocalDateTime;
17 import java.util.List; 18 import java.util.List;
18 19
@@ -36,31 +37,37 @@ public class EvalRewardDist extends BaseAuditableTimeEntity&lt;EvalRewardDist, Long @@ -36,31 +37,37 @@ public class EvalRewardDist extends BaseAuditableTimeEntity&lt;EvalRewardDist, Long
36 * 用户id 37 * 用户id
37 */ 38 */
38 private Long userId; 39 private Long userId;
39 -  
40 /** 40 /**
41 - * 考评id 41 + * 考评id
42 */ 42 */
43 - private Long evalId;  
44 - 43 + private Long evalGroupId;
45 /** 44 /**
46 - * 考评组编码 45 + * 考评排名组id
47 */ 46 */
48 - private Long evalGroupId; 47 + private Long evalGroupRankId;
  48 + /**
  49 + * 考评排名组阶段id
  50 + */
  51 + private Long evalGroupRankStageId;
  52 + /**
  53 + * 考评排名组名称
  54 + */
  55 + private String evalGroupRankName;
49 56
50 /** 57 /**
51 - * 考评类型; 1:活动考评 2:其他考评 58 + * 考评排名组阶段名称
52 */ 59 */
53 - private EvalTypeEnum evalType; 60 + private String evalGroupRankStageName;
54 61
55 /** 62 /**
56 - * 考评 63 + * 生效时间
57 */ 64 */
58 - private String evalName; 65 + private LocalDate beginTime;
59 66
60 /** 67 /**
61 - * 考评组 68 + * 结束时间
62 */ 69 */
63 - private String evalGroupName; 70 + private LocalDate overTime;
64 71
65 /** 72 /**
66 * 考评组id 73 * 考评组id
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalShopPool.java
@@ -30,11 +30,6 @@ public class EvalShopPool extends BaseAuditableTimeEntity&lt;EvalShopPool, Long&gt; { @@ -30,11 +30,6 @@ public class EvalShopPool extends BaseAuditableTimeEntity&lt;EvalShopPool, Long&gt; {
30 * 考评组编码 30 * 考评组编码
31 */ 31 */
32 private String egc; 32 private String egc;
33 -  
34 - /**  
35 - * 考评id  
36 - */  
37 - private Long evalId;  
38 /** 33 /**
39 * 考评组id 34 * 考评组id
40 */ 35 */
@@ -48,26 +43,6 @@ public class EvalShopPool extends BaseAuditableTimeEntity&lt;EvalShopPool, Long&gt; { @@ -48,26 +43,6 @@ public class EvalShopPool extends BaseAuditableTimeEntity&lt;EvalShopPool, Long&gt; {
48 */ 43 */
49 private Long evalGroupRankStageId; 44 private Long evalGroupRankStageId;
50 45
51 -// /**  
52 -// * 用户id  
53 -// */  
54 -// private Long userId;  
55 -//  
56 -// /**  
57 -// * 用户名称  
58 -// */  
59 -// private String userName;  
60 -  
61 -// /**  
62 -// * 岗位id  
63 -// */  
64 -// private Long postId;  
65 -//  
66 -// /**  
67 -// * 岗位名称  
68 -// */  
69 -// private String postName;  
70 -  
71 /** 46 /**
72 * 门店id 47 * 门店id
73 */ 48 */
@@ -78,16 +53,6 @@ public class EvalShopPool extends BaseAuditableTimeEntity&lt;EvalShopPool, Long&gt; { @@ -78,16 +53,6 @@ public class EvalShopPool extends BaseAuditableTimeEntity&lt;EvalShopPool, Long&gt; {
78 */ 53 */
79 private String shopName; 54 private String shopName;
80 55
81 -// /**  
82 -// * 社保公积金门店id  
83 -// */  
84 -// private Long fundShopId;  
85 -//  
86 -// /**  
87 -// * 社保公积金门店名称  
88 -// */  
89 -// private String fundShopName;  
90 -  
91 /** 56 /**
92 * 考评奖惩 57 * 考评奖惩
93 */ 58 */
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalRewardDistVO.java
@@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode; @@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode;
12 import lombok.experimental.Accessors; 12 import lombok.experimental.Accessors;
13 13
14 import java.math.BigDecimal; 14 import java.math.BigDecimal;
  15 +import java.time.LocalDate;
15 import java.util.List; 16 import java.util.List;
16 17
17 /** 18 /**
@@ -37,31 +38,37 @@ public class EvalRewardDistVO { @@ -37,31 +38,37 @@ public class EvalRewardDistVO {
37 * 用户id 38 * 用户id
38 */ 39 */
39 private Long userId; 40 private Long userId;
40 -  
41 /** 41 /**
42 - * 考评id 42 + * 考评id
43 */ 43 */
44 - private Long evalId;  
45 - 44 + private Long evalGroupId;
46 /** 45 /**
47 - * 考评组编码 46 + * 考评排名组id
48 */ 47 */
49 - private Long evalGroupId; 48 + private Long evalGroupRankId;
  49 + /**
  50 + * 考评排名组阶段id
  51 + */
  52 + private Long evalGroupRankStageId;
  53 + /**
  54 + * 考评排名组名称
  55 + */
  56 + private String evalGroupRankName;
50 57
51 /** 58 /**
52 - * 考评类型; 1:活动考评 2:其他考评 59 + * 考评排名组阶段名称
53 */ 60 */
54 - private EvalTypeEnum evalType; 61 + private String evalGroupRankStageName;
55 62
56 /** 63 /**
57 - * 考评 64 + * 生效时间
58 */ 65 */
59 - private String evalName; 66 + private LocalDate beginTime;
60 67
61 /** 68 /**
62 - * 考评组 69 + * 结束时间
63 */ 70 */
64 - private String evalGroupName; 71 + private LocalDate overTime;
65 72
66 /** 73 /**
67 * 考评组id 74 * 考评组id
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalShopPoolVO.java
@@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode; @@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode;
12 12
13 import java.math.BigDecimal; 13 import java.math.BigDecimal;
14 import java.time.LocalDate; 14 import java.time.LocalDate;
  15 +import java.time.YearMonth;
15 import java.util.List; 16 import java.util.List;
16 17
17 /** 18 /**
@@ -27,56 +28,26 @@ import java.util.List; @@ -27,56 +28,26 @@ import java.util.List;
27 public class EvalShopPoolVO { 28 public class EvalShopPoolVO {
28 29
29 private static final long serialVersionUID = 1L; 30 private static final long serialVersionUID = 1L;
30 -  
31 /** 31 /**
32 - * 考评池id 32 + * id
33 */ 33 */
34 private Long id; 34 private Long id;
35 -  
36 /** 35 /**
37 * 考评组编码 36 * 考评组编码
38 */ 37 */
39 private String egc; 38 private String egc;
40 -  
41 - /**  
42 - * 考评组  
43 - */  
44 - private String evalGroupName;  
45 -  
46 - /**  
47 - * 考评id  
48 - */  
49 - private Long evalId;  
50 /** 39 /**
51 * 考评组id 40 * 考评组id
52 */ 41 */
53 private Long evalGroupId; 42 private Long evalGroupId;
54 -  
55 -  
56 /** 43 /**
57 - * 考评类型; 1:活动考评 2:其他考评 44 + * 考评排名组id
58 */ 45 */
59 - private EvalTypeEnum evalType;  
60 -  
61 -// /**  
62 -// * 用户id  
63 -// */  
64 -// private Long userId;  
65 -//  
66 -// /**  
67 -// * 用户名称  
68 -// */  
69 -// private String userName;  
70 -  
71 -// /**  
72 -// * 岗位id  
73 -// */  
74 -// private Long postId;  
75 -//  
76 -// /**  
77 -// * 岗位名称  
78 -// */  
79 -// private String postName; 46 + private Long evalGroupRankId;
  47 + /**
  48 + * 考评排名组阶段id
  49 + */
  50 + private Long evalGroupRankStageId;
80 51
81 /** 52 /**
82 * 门店id 53 * 门店id
@@ -88,16 +59,6 @@ public class EvalShopPoolVO { @@ -88,16 +59,6 @@ public class EvalShopPoolVO {
88 */ 59 */
89 private String shopName; 60 private String shopName;
90 61
91 -// /**  
92 -// * 社保公积金门店id  
93 -// */  
94 -// private Long fundShopId;  
95 -//  
96 -// /**  
97 -// * 社保公积金门店名称  
98 -// */  
99 -// private String fundShopName;  
100 -  
101 /** 62 /**
102 * 考评奖惩 63 * 考评奖惩
103 */ 64 */
@@ -124,10 +85,14 @@ public class EvalShopPoolVO { @@ -124,10 +85,14 @@ public class EvalShopPoolVO {
124 private String scoreRatioFormat; 85 private String scoreRatioFormat;
125 86
126 /** 87 /**
127 - * 月度 88 + * 排名
128 */ 89 */
129 - private String monthly; 90 + private Integer rank;
130 91
  92 + /**
  93 + * 月度
  94 + */
  95 + private YearMonth monthly;
131 96
132 /** 97 /**
133 * 数据日期 98 * 数据日期
fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/EvalPoolController.java
@@ -90,28 +90,19 @@ public class EvalPoolController { @@ -90,28 +90,19 @@ public class EvalPoolController {
90 if (Objects.isNull(userId)) { 90 if (Objects.isNull(userId)) {
91 userId = user.getUserId(); 91 userId = user.getUserId();
92 } 92 }
93 -// return success(evalGroupPoolService.evalPoolSelector(userId, monthly));  
94 - return success(); 93 + return success(evalGroupPoolService.evalPoolSelector(userId, monthly));
95 } 94 }
96 95
97 -// /**  
98 -// * 考评详情查询 (查看自己考评详情)  
99 -// */  
100 -// @GetMapping("/own-detail")  
101 -// @ControllerMethod("考评详情查询")  
102 -// public Message<List<EvalUserRankStageVO>> evalPoolOwnDetail(@CurrentUser Long userId,  
103 -// @Valid EvalUserRankDTO dto) {  
104 -// dto.initMonthly();  
105 -// dto.setUserId(userId);  
106 -// return success(evalGroupPoolService.queryRankStagePools(dto));  
107 -// }  
108 /** 96 /**
109 * 考评详情查询 (查看自己考评详情) 97 * 考评详情查询 (查看自己考评详情)
110 */ 98 */
111 @GetMapping("/own-detail") 99 @GetMapping("/own-detail")
112 @ControllerMethod("考评详情查询") 100 @ControllerMethod("考评详情查询")
113 - public Message<List<EvalUserRankStageVO>> evalPoolOwnDetail(@CurrentUser Long userId) {  
114 - return success(); 101 + public Message<List<EvalUserRankStageVO>> evalPoolOwnDetail(@CurrentUser Long userId,
  102 + @Valid EvalUserRankDTO dto) {
  103 + dto.initMonthly();
  104 + dto.setUserId(userId);
  105 + return success(evalGroupPoolService.queryRankStagePools(dto));
115 } 106 }
116 107
117 /** 108 /**
@@ -120,22 +111,13 @@ public class EvalPoolController { @@ -120,22 +111,13 @@ public class EvalPoolController {
120 */ 111 */
121 @GetMapping("/detail") 112 @GetMapping("/detail")
122 @ControllerMethod("考评详情查询") 113 @ControllerMethod("考评详情查询")
123 - public Message<List<EvalUserRankStageVO>> evalPoolDetail() {  
124 - return success(); 114 + public Message<List<EvalUserRankStageVO>> evalPoolDetail(@Valid EvalUserRankDTO dto) {
  115 + dto.initMonthly();
  116 + if (PublicUtil.isEmpty(dto.getUserId())) {
  117 + throw new BusinessException("人员信息不能为空");
  118 + }
  119 + return success(evalGroupPoolService.queryRankStagePools(dto));
125 } 120 }
126 -// /**  
127 -// * 考评详情查询 (查看他人考评详情)  
128 -// *  
129 -// */  
130 -// @GetMapping("/detail")  
131 -// @ControllerMethod("考评详情查询")  
132 -// public Message<List<EvalUserRankStageVO>> evalPoolDetail(@Valid EvalUserRankDTO dto) {  
133 -// dto.initMonthly();  
134 -// if (PublicUtil.isEmpty(dto.getUserId())) {  
135 -// throw new BusinessException("人员信息不能为空");  
136 -// }  
137 -// return success(evalGroupPoolService.queryRankStagePools(dto));  
138 -// }  
139 121
140 /** 122 /**
141 * 员工考评得分详情 123 * 员工考评得分详情
fw-morax-service/src/main/java/cn/fw/morax/service/biz/ApprovalBizService.java
@@ -517,6 +517,7 @@ public class ApprovalBizService { @@ -517,6 +517,7 @@ public class ApprovalBizService {
517 InitiateApprovalParam.Condition shopCondition = new InitiateApprovalParam.Condition(); 517 InitiateApprovalParam.Condition shopCondition = new InitiateApprovalParam.Condition();
518 shopCondition.setParamName("shopId"); 518 shopCondition.setParamName("shopId");
519 shopCondition.setValue(staffInfo.getShopId().toString()); 519 shopCondition.setValue(staffInfo.getShopId().toString());
  520 + conditions.add(shopCondition);
520 Map extDataMap = new HashMap<String, Object>() {{ 521 Map extDataMap = new HashMap<String, Object>() {{
521 put("id", rewardDist.getId().toString()); 522 put("id", rewardDist.getId().toString());
522 }}; 523 }};
@@ -525,9 +526,8 @@ public class ApprovalBizService { @@ -525,9 +526,8 @@ public class ApprovalBizService {
525 .approvalNo(flowVal.getEvalShopReward()) 526 .approvalNo(flowVal.getEvalShopReward())
526 .briefContent(Lists.newArrayList( 527 .briefContent(Lists.newArrayList(
527 "申请人:" + user.getUserName(), 528 "申请人:" + user.getUserName(),
528 - "考评/活动名称:" + user.getUserName(),  
529 - "考评类型:" + rewardDist.getEvalType().getName(),  
530 - "考评组:" + rewardDist.getEvalGroupName(), 529 + "考评排名组:" + rewardDist.getEvalGroupRankName(),
  530 + "考评排名组阶段:" + rewardDist.getEvalGroupRankStageName(),
531 "门店奖惩金额:" + rewardDist.getReward(), 531 "门店奖惩金额:" + rewardDist.getReward(),
532 "申请时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(LocalDateTime.now()) 532 "申请时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(LocalDateTime.now())
533 )) 533 ))
fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/kpi/EvalKpiBaseCalculator.java
@@ -169,10 +169,11 @@ public abstract class EvalKpiBaseCalculator implements Calculator&lt;EvalGroupUserS @@ -169,10 +169,11 @@ public abstract class EvalKpiBaseCalculator implements Calculator&lt;EvalGroupUserS
169 useTarget = EvalUseTargetEnum.FIRST_TARGET; 169 useTarget = EvalUseTargetEnum.FIRST_TARGET;
170 indicatorValue = reachValue; 170 indicatorValue = reachValue;
171 } 171 }
  172 + //额外计算类型只能为空 或者 时间进度
172 if (PublicUtil.isNotEmpty(extraTargetType) && (!TargetTypeEnum.NO.equals(extraTargetType))) { 173 if (PublicUtil.isNotEmpty(extraTargetType) && (!TargetTypeEnum.NO.equals(extraTargetType))) {
173 extraReachValue = calcTarget(param.getExtraTargetCalcType(), originValue, param.getExtraTargetValue()); 174 extraReachValue = calcTarget(param.getExtraTargetCalcType(), originValue, param.getExtraTargetValue());
174 - //额外计算类型值 原始计算类型值 用大的那个值  
175 - if (PublicUtil.isEmpty(reachValue) || (extraReachValue.compareTo(reachValue) > 0)) { 175 + //只配置了时间进度 时间进度大于阶段目标 并且 时间进度大于1,取时间进度
  176 + if (PublicUtil.isEmpty(reachValue) || ((extraReachValue.compareTo(reachValue) > 0) && (extraReachValue.compareTo(BigDecimal.ONE) >= 0))) {
176 indicatorValue = extraReachValue; 177 indicatorValue = extraReachValue;
177 useTarget = EvalUseTargetEnum.EXTRA_TARGET; 178 useTarget = EvalUseTargetEnum.EXTRA_TARGET;
178 } 179 }
@@ -225,20 +226,37 @@ public abstract class EvalKpiBaseCalculator implements Calculator&lt;EvalGroupUserS @@ -225,20 +226,37 @@ public abstract class EvalKpiBaseCalculator implements Calculator&lt;EvalGroupUserS
225 protected Optional<BigDecimal> queryValue(EvalGroupUserShop obj, IndicatorCodeTypeEnum codeType, String indicatorCode) { 226 protected Optional<BigDecimal> queryValue(EvalGroupUserShop obj, IndicatorCodeTypeEnum codeType, String indicatorCode) {
226 DimensionTypeEnum dimensionType = EvalScopeEnum.STAFF.equals(obj.getScopeType()) ? DimensionTypeEnum.STAFF : DimensionTypeEnum.SHOP; 227 DimensionTypeEnum dimensionType = EvalScopeEnum.STAFF.equals(obj.getScopeType()) ? DimensionTypeEnum.STAFF : DimensionTypeEnum.SHOP;
227 if (IndicatorCodeTypeEnum.INDICATOR.equals(codeType)) { 228 if (IndicatorCodeTypeEnum.INDICATOR.equals(codeType)) {
228 - LambdaQueryWrapper<IndicatorUserStageValue> queryWrapper = Wrappers.<IndicatorUserStageValue>lambdaQuery()  
229 - .eq(IndicatorUserStageValue::getIndicatorCode, indicatorCode)  
230 - .eq(IndicatorUserStageValue::getBeginDate, obj.getBeginDate())  
231 - .eq(IndicatorUserStageValue::getEndDate, obj.getDataDate())  
232 - .eq(IndicatorUserStageValue::getDimensionType, dimensionType)  
233 - .eq(IndicatorUserStageValue::getYn, Boolean.TRUE)  
234 - .eq(IndicatorUserStageValue::getGroupId, obj.getGroupId()); 229 + //多阶段查询
  230 + if (Boolean.TRUE.equals(obj.getMultiStage())) {
  231 + LambdaQueryWrapper<IndicatorUserStageValue> queryWrapper = Wrappers.<IndicatorUserStageValue>lambdaQuery()
  232 + .eq(IndicatorUserStageValue::getIndicatorCode, indicatorCode)
  233 + .eq(IndicatorUserStageValue::getBeginDate, obj.getBeginDate())
  234 + .eq(IndicatorUserStageValue::getEndDate, obj.getDataDate())
  235 + .eq(IndicatorUserStageValue::getDimensionType, dimensionType)
  236 + .eq(IndicatorUserStageValue::getYn, Boolean.TRUE)
  237 + .eq(IndicatorUserStageValue::getGroupId, obj.getGroupId());
  238 + if (EvalScopeEnum.STAFF.equals(obj.getScopeType())) {
  239 + queryWrapper.eq(IndicatorUserStageValue::getUserId, obj.getReferId());
  240 + } else {
  241 + queryWrapper.eq(IndicatorUserStageValue::getShopId, obj.getReferId());
  242 + }
  243 + IndicatorUserStageValue indicatorUserStageValue = indicatorUserStageValueService.getOne(queryWrapper, Boolean.FALSE);
  244 + return queryKpiIndicatorValue(indicatorUserStageValue);
  245 + }
  246 + //单阶段查询
  247 + LambdaQueryWrapper<IndicatorUserValue> queryWrapper = Wrappers.<IndicatorUserValue>lambdaQuery()
  248 + .eq(IndicatorUserValue::getIndicatorCode, indicatorCode)
  249 + .eq(IndicatorUserValue::getDataDate, obj.getDataDate())
  250 + .eq(IndicatorUserValue::getDimensionType, dimensionType)
  251 + .eq(IndicatorUserValue::getYn, Boolean.TRUE)
  252 + .eq(IndicatorUserValue::getGroupId, obj.getGroupId());
235 if (EvalScopeEnum.STAFF.equals(obj.getScopeType())) { 253 if (EvalScopeEnum.STAFF.equals(obj.getScopeType())) {
236 - queryWrapper.eq(IndicatorUserStageValue::getUserId, obj.getReferId()); 254 + queryWrapper.eq(IndicatorUserValue::getUserId, obj.getReferId());
237 } else { 255 } else {
238 - queryWrapper.eq(IndicatorUserStageValue::getShopId, obj.getReferId()); 256 + queryWrapper.eq(IndicatorUserValue::getShopId, obj.getReferId());
239 } 257 }
240 - IndicatorUserStageValue indicatorUserStageValue = indicatorUserStageValueService.getOne(queryWrapper, Boolean.FALSE);  
241 - return queryKpiIndicatorValue(indicatorUserStageValue); 258 + IndicatorUserValue indicatorUserValue = indicatorUserValueService.getOne(queryWrapper, Boolean.FALSE);
  259 + return queryKpiIndicatorValue(indicatorUserValue);
242 } 260 }
243 261
244 EvalIndicatorValue evalIndicatorValue = evalIndicatorValueService.queryLastValue(obj.getReferId(), 262 EvalIndicatorValue evalIndicatorValue = evalIndicatorValueService.queryLastValue(obj.getReferId(),
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalCalculateService.java
@@ -183,7 +183,12 @@ public class EvalCalculateService { @@ -183,7 +183,12 @@ public class EvalCalculateService {
183 log.error("考评排名组阶段[{}]不存在,终止计算!", JSON.toJSONString(evalGroup)); 183 log.error("考评排名组阶段[{}]不存在,终止计算!", JSON.toJSONString(evalGroup));
184 return; 184 return;
185 } 185 }
186 - List<EvalGroupUserShop> userShops = this.buildEvalGroupObj(evalGroup, evalGroupRankStage, localDate, scopeType); 186 + EvalGroupRank evalGroupRank = evalGroupRankService.getById(evalGroup.getEvalGroupRankId());
  187 + if (Objects.isNull(evalGroupRank)) {
  188 + log.error("考评组[{}]排名组不存在,终止计算!", evalGroup.getEvalGroupRankId());
  189 + return;
  190 + }
  191 + List<EvalGroupUserShop> userShops = this.buildEvalGroupObj(evalGroup, evalGroupRank, evalGroupRankStage, localDate, scopeType);
187 if (CollectionUtils.isEmpty(userShops)) { 192 if (CollectionUtils.isEmpty(userShops)) {
188 log.error("考评组[{}]人员为空,终止计算!", evalGroupId); 193 log.error("考评组[{}]人员为空,终止计算!", evalGroupId);
189 return; 194 return;
@@ -269,8 +274,7 @@ public class EvalCalculateService { @@ -269,8 +274,7 @@ public class EvalCalculateService {
269 } 274 }
270 275
271 276
272 - public List<EvalGroupUserShop> buildEvalGroupObj(EvalGroup evalGroup, EvalGroupRankStage evalGroupRankStage, LocalDate localDate, EvalScopeEnum scopeType) {  
273 - LocalDate beginDate = evalGroupRankStage.getBeginTime(); 277 + public List<EvalGroupUserShop> buildEvalGroupObj(EvalGroup evalGroup, EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage, LocalDate localDate, EvalScopeEnum scopeType) {
274 List<EvalGroupUserShop> userShops = new ArrayList<>(); 278 List<EvalGroupUserShop> userShops = new ArrayList<>();
275 if (EvalScopeEnum.STAFF.equals(scopeType)) { 279 if (EvalScopeEnum.STAFF.equals(scopeType)) {
276 List<EvalGroupUser> users = evalGroupUserService.list(Wrappers.<EvalGroupUser>lambdaQuery() 280 List<EvalGroupUser> users = evalGroupUserService.list(Wrappers.<EvalGroupUser>lambdaQuery()
@@ -282,7 +286,7 @@ public class EvalCalculateService { @@ -282,7 +286,7 @@ public class EvalCalculateService {
282 Map<Long, EvalUserPool> userPoolMap = evalPoolCommonService.inspectionUserPoolMap(evalGroup, evalGroupRankStage, users, localDate); 286 Map<Long, EvalUserPool> userPoolMap = evalPoolCommonService.inspectionUserPoolMap(evalGroup, evalGroupRankStage, users, localDate);
283 for (EvalGroupUser user : users) { 287 for (EvalGroupUser user : users) {
284 EvalUserPool userPool = userPoolMap.get(user.getUserId()); 288 EvalUserPool userPool = userPoolMap.get(user.getUserId());
285 - userShops.add(convertBO(user, userPool)); 289 + userShops.add(convertBO(user, userPool, evalGroupRank, evalGroupRankStage));
286 } 290 }
287 return userShops; 291 return userShops;
288 } 292 }
@@ -291,7 +295,7 @@ public class EvalCalculateService { @@ -291,7 +295,7 @@ public class EvalCalculateService {
291 for (Long shopId : evalGroup.getShopIds()) { 295 for (Long shopId : evalGroup.getShopIds()) {
292 EvalShopPool shopPool = shopPoolBOMap.get(shopId); 296 EvalShopPool shopPool = shopPoolBOMap.get(shopId);
293 Boolean ignored = ! distShopIds.contains(shopId); 297 Boolean ignored = ! distShopIds.contains(shopId);
294 - userShops.add(convertBO(shopPool, evalGroup, beginDate, localDate, ignored)); 298 + userShops.add(convertBO(shopPool, evalGroup, evalGroupRank, evalGroupRankStage, localDate, ignored));
295 } 299 }
296 return userShops; 300 return userShops;
297 } 301 }
@@ -619,7 +623,7 @@ public class EvalCalculateService { @@ -619,7 +623,7 @@ public class EvalCalculateService {
619 return poolDetail; 623 return poolDetail;
620 } 624 }
621 625
622 - public EvalGroupUserShop convertBO(EvalGroupUser user, EvalUserPool userPool) { 626 + public EvalGroupUserShop convertBO(EvalGroupUser user, EvalUserPool userPool, EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage) {
623 EvalGroupUserShop userShop = new EvalGroupUserShop(); 627 EvalGroupUserShop userShop = new EvalGroupUserShop();
624 userShop.setName(user.getUserName()); 628 userShop.setName(user.getUserName());
625 userShop.setScopeType(EvalScopeEnum.STAFF); 629 userShop.setScopeType(EvalScopeEnum.STAFF);
@@ -628,7 +632,9 @@ public class EvalCalculateService { @@ -628,7 +632,9 @@ public class EvalCalculateService {
628 userShop.setPostId(userPool.getPostId()); 632 userShop.setPostId(userPool.getPostId());
629 userShop.setShopId(userPool.getShopId()); 633 userShop.setShopId(userPool.getShopId());
630 userShop.setReferId(user.getUserId()); 634 userShop.setReferId(user.getUserId());
  635 + userShop.setBeginDate(evalGroupRankStage.getBeginTime());
631 userShop.setDataDate(user.getDataDate()); 636 userShop.setDataDate(user.getDataDate());
  637 + userShop.setMultiStage(evalGroupRank.getMultiStage());
632 userShop.setGroupId(user.getGroupId()); 638 userShop.setGroupId(user.getGroupId());
633 userShop.setScore(BigDecimal.ZERO); 639 userShop.setScore(BigDecimal.ZERO);
634 userShop.setReward(BigDecimal.ZERO); 640 userShop.setReward(BigDecimal.ZERO);
@@ -636,7 +642,7 @@ public class EvalCalculateService { @@ -636,7 +642,7 @@ public class EvalCalculateService {
636 return userShop; 642 return userShop;
637 } 643 }
638 644
639 - public EvalGroupUserShop convertBO(EvalShopPool shopPool, EvalGroup evalGroup, LocalDate beginDate, LocalDate dataDate, Boolean ignored) { 645 + public EvalGroupUserShop convertBO(EvalShopPool shopPool, EvalGroup evalGroup, EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage, LocalDate dataDate, Boolean ignored) {
640 EvalGroupUserShop userShop = new EvalGroupUserShop(); 646 EvalGroupUserShop userShop = new EvalGroupUserShop();
641 userShop.setName(shopPool.getShopName()); 647 userShop.setName(shopPool.getShopName());
642 userShop.setReferId(shopPool.getShopId()); 648 userShop.setReferId(shopPool.getShopId());
@@ -645,8 +651,9 @@ public class EvalCalculateService { @@ -645,8 +651,9 @@ public class EvalCalculateService {
645 userShop.setScopeType(EvalScopeEnum.SHOP); 651 userShop.setScopeType(EvalScopeEnum.SHOP);
646 userShop.setEvalId(userShop.getEvalId()); 652 userShop.setEvalId(userShop.getEvalId());
647 userShop.setEvalGroupId(evalGroup.getId()); 653 userShop.setEvalGroupId(evalGroup.getId());
648 - userShop.setBeginDate(beginDate); 654 + userShop.setBeginDate(evalGroupRankStage.getBeginTime());
649 userShop.setDataDate(dataDate); 655 userShop.setDataDate(dataDate);
  656 + userShop.setMultiStage(evalGroupRank.getMultiStage());
650 userShop.setGroupId(evalGroup.getGroupId()); 657 userShop.setGroupId(evalGroup.getGroupId());
651 userShop.setIgnored(ignored); 658 userShop.setIgnored(ignored);
652 userShop.setScore(BigDecimal.ZERO); 659 userShop.setScore(BigDecimal.ZERO);
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupPoolService.java
@@ -94,10 +94,6 @@ public class EvalGroupPoolService { @@ -94,10 +94,6 @@ public class EvalGroupPoolService {
94 this.setShopRewardDetails(evalShopPoolVO, dataDate); 94 this.setShopRewardDetails(evalShopPoolVO, dataDate);
95 evalShopPoolVO.setDataDate(dataDate); 95 evalShopPoolVO.setDataDate(dataDate);
96 96
97 - Eval eval = evalService.getById(pool.getEvalId());  
98 - BV.notNull(pool, "考评池不存在");  
99 - evalShopPoolVO.setEvalType(eval.getType());  
100 -  
101 return evalShopPoolVO; 97 return evalShopPoolVO;
102 } 98 }
103 99
@@ -289,14 +285,14 @@ public class EvalGroupPoolService { @@ -289,14 +285,14 @@ public class EvalGroupPoolService {
289 //排名维度 285 //排名维度
290 for (Map.Entry<Long, List<EvalUserPool>> rankEntry : rankPools.entrySet()) { 286 for (Map.Entry<Long, List<EvalUserPool>> rankEntry : rankPools.entrySet()) {
291 List<EvalUserPool> userRankPools = rankEntry.getValue(); 287 List<EvalUserPool> userRankPools = rankEntry.getValue();
292 - double averageKpiScoreRatio = userRankPools.stream() 288 + Double averageKpiScoreRatio = userRankPools.stream()
293 .mapToDouble(r -> Optional.ofNullable(r.getScoreRatio()).orElse(BigDecimal.ZERO).doubleValue()) 289 .mapToDouble(r -> Optional.ofNullable(r.getScoreRatio()).orElse(BigDecimal.ZERO).doubleValue())
294 .average() 290 .average()
295 .orElse(0); 291 .orElse(0);
296 BigDecimal reward = userRankPools.stream().map(EvalUserPool::getReward).reduce(BigDecimal.ZERO, BigDecimal::add); 292 BigDecimal reward = userRankPools.stream().map(EvalUserPool::getReward).reduce(BigDecimal.ZERO, BigDecimal::add);
297 EvalUserGroupRankVO rank = new EvalUserGroupRankVO(); 293 EvalUserGroupRankVO rank = new EvalUserGroupRankVO();
298 rank.setEvalGroupRankName(rankNameMap.getOrDefault(rankEntry.getKey(), "")); 294 rank.setEvalGroupRankName(rankNameMap.getOrDefault(rankEntry.getKey(), ""));
299 - rank.setScoreRatio(new BigDecimal(averageKpiScoreRatio).multiply(Constant.ONE_HUNDRED)); 295 + rank.setScoreRatio(new BigDecimal(averageKpiScoreRatio.toString()).multiply(Constant.ONE_HUNDRED));
300 rank.setReward(reward); 296 rank.setReward(reward);
301 rank.setEvalGroupRankId(rankEntry.getKey()); 297 rank.setEvalGroupRankId(rankEntry.getKey());
302 ranks.add(rank); 298 ranks.add(rank);
@@ -500,6 +496,10 @@ public class EvalGroupPoolService { @@ -500,6 +496,10 @@ public class EvalGroupPoolService {
500 if (! TargetTypeEnum.NO.equals(paramVO.getTargetType())) { 496 if (! TargetTypeEnum.NO.equals(paramVO.getTargetType())) {
501 paramVO.setReachValue(Optional.ofNullable(paramVO.getReachValue()).orElse(BigDecimal.ZERO).multiply(Constant.ONE_HUNDRED)); 497 paramVO.setReachValue(Optional.ofNullable(paramVO.getReachValue()).orElse(BigDecimal.ZERO).multiply(Constant.ONE_HUNDRED));
502 } 498 }
  499 + //有目标
  500 + if (PublicUtil.isNotEmpty(paramVO.getExtraTargetType()) && (! TargetTypeEnum.NO.equals(paramVO.getExtraTargetType()))) {
  501 + paramVO.setExtraReachValue(Optional.ofNullable(paramVO.getExtraReachValue()).orElse(BigDecimal.ZERO).multiply(Constant.ONE_HUNDRED));
  502 + }
503 } 503 }
504 504
505 for (EvalGroupIndicatorParamVO paramVO : Optional.ofNullable(detail.getLadderParams()).orElse(new ArrayList<>())) { 505 for (EvalGroupIndicatorParamVO paramVO : Optional.ofNullable(detail.getLadderParams()).orElse(new ArrayList<>())) {
@@ -511,6 +511,10 @@ public class EvalGroupPoolService { @@ -511,6 +511,10 @@ public class EvalGroupPoolService {
511 if (! TargetTypeEnum.NO.equals(paramVO.getTargetType())) { 511 if (! TargetTypeEnum.NO.equals(paramVO.getTargetType())) {
512 paramVO.setReachValue(Optional.ofNullable(paramVO.getReachValue()).orElse(BigDecimal.ZERO).multiply(Constant.ONE_HUNDRED)); 512 paramVO.setReachValue(Optional.ofNullable(paramVO.getReachValue()).orElse(BigDecimal.ZERO).multiply(Constant.ONE_HUNDRED));
513 } 513 }
  514 + //有目标
  515 + if (PublicUtil.isNotEmpty(paramVO.getExtraTargetType()) && (! TargetTypeEnum.NO.equals(paramVO.getExtraTargetType()))) {
  516 + paramVO.setExtraReachValue(Optional.ofNullable(paramVO.getExtraReachValue()).orElse(BigDecimal.ZERO).multiply(Constant.ONE_HUNDRED));
  517 + }
514 } 518 }
515 519
516 for (EvalGroupIndicatorPreconditionVO preconditionVO : Optional.ofNullable(detail.getConds()).orElse(new ArrayList<>())) { 520 for (EvalGroupIndicatorPreconditionVO preconditionVO : Optional.ofNullable(detail.getConds()).orElse(new ArrayList<>())) {
@@ -543,7 +547,6 @@ public class EvalGroupPoolService { @@ -543,7 +547,6 @@ public class EvalGroupPoolService {
543 scopeType, dataDate, paramVos); 547 scopeType, dataDate, paramVos);
544 548
545 for (EvalGroupIndicatorParamVO paramVO : paramVos) { 549 for (EvalGroupIndicatorParamVO paramVO : paramVos) {
546 - String code = paramVO.getCode();  
547 Long paramId = paramVO.getId(); 550 Long paramId = paramVO.getId();
548 //无目标 551 //无目标
549 // if (TargetTypeEnum.NO.equals(paramVO.getTargetType())) { 552 // if (TargetTypeEnum.NO.equals(paramVO.getTargetType())) {
@@ -556,8 +559,15 @@ public class EvalGroupPoolService { @@ -556,8 +559,15 @@ public class EvalGroupPoolService {
556 Optional<EvalGroupIndicatorTargetHitLog> hitLogOptional = Optional.ofNullable(paramTargetHitLogMap.get(paramId)); 559 Optional<EvalGroupIndicatorTargetHitLog> hitLogOptional = Optional.ofNullable(paramTargetHitLogMap.get(paramId));
557 paramVO.setIndicatorValue(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getValue).orElse(BigDecimal.ZERO)); 560 paramVO.setIndicatorValue(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getValue).orElse(BigDecimal.ZERO));
558 paramVO.setReachValue(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getReachValue).orElse(BigDecimal.ZERO)); 561 paramVO.setReachValue(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getReachValue).orElse(BigDecimal.ZERO));
559 - paramVO.setExtraReachValue(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getReachValue).orElse(BigDecimal.ZERO)); 562 + paramVO.setExtraReachValue(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getExtraReachValue).orElse(BigDecimal.ZERO));
560 paramVO.setUseTarget(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getUseTarget).orElse(EvalUseTargetEnum.NO)); 563 paramVO.setUseTarget(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getUseTarget).orElse(EvalUseTargetEnum.NO));
  564 +
  565 +// paramVO.setTargetCalcType(paramVO.getTargetCalcType());
  566 +// paramVO.setTargetType(paramVO.getTargetType());
  567 +// paramVO.setTargetValue(paramVO.getTargetValue());
  568 +// paramVO.setExtraTargetCalcType(paramVO.getExtraTargetCalcType());
  569 +// paramVO.setExtraTargetType(paramVO.getExtraTargetType());
  570 +// paramVO.setExtraTargetValue(paramVO.getExtraTargetValue());
561 } 571 }
562 572
563 Map<ParamTypeEnum, List<EvalGroupIndicatorParamVO>> indicatorParamMap = paramVos.stream() 573 Map<ParamTypeEnum, List<EvalGroupIndicatorParamVO>> indicatorParamMap = paramVos.stream()
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalRewardService.java
@@ -5,6 +5,7 @@ import cn.fw.common.cache.locker.DistributedLocker; @@ -5,6 +5,7 @@ import cn.fw.common.cache.locker.DistributedLocker;
5 import cn.fw.common.exception.BusinessException; 5 import cn.fw.common.exception.BusinessException;
6 import cn.fw.common.web.auth.LoginAuthBean; 6 import cn.fw.common.web.auth.LoginAuthBean;
7 import cn.fw.morax.common.config.TodoVal; 7 import cn.fw.morax.common.config.TodoVal;
  8 +import cn.fw.morax.common.constant.Constant;
8 import cn.fw.morax.common.pojo.event.ApprovalResultEvent; 9 import cn.fw.morax.common.pojo.event.ApprovalResultEvent;
9 import cn.fw.morax.common.utils.DateUtil; 10 import cn.fw.morax.common.utils.DateUtil;
10 import cn.fw.morax.common.utils.PublicUtil; 11 import cn.fw.morax.common.utils.PublicUtil;
@@ -44,9 +45,11 @@ import org.springframework.stereotype.Service; @@ -44,9 +45,11 @@ import org.springframework.stereotype.Service;
44 import org.springframework.transaction.annotation.Transactional; 45 import org.springframework.transaction.annotation.Transactional;
45 46
46 import java.math.BigDecimal; 47 import java.math.BigDecimal;
  48 +import java.text.DateFormat;
47 import java.text.DecimalFormat; 49 import java.text.DecimalFormat;
48 import java.time.LocalDate; 50 import java.time.LocalDate;
49 import java.time.LocalDateTime; 51 import java.time.LocalDateTime;
  52 +import java.time.format.DateTimeFormatter;
50 import java.util.*; 53 import java.util.*;
51 import java.util.concurrent.RejectedExecutionException; 54 import java.util.concurrent.RejectedExecutionException;
52 import java.util.concurrent.ThreadPoolExecutor; 55 import java.util.concurrent.ThreadPoolExecutor;
@@ -169,7 +172,7 @@ public class EvalRewardService { @@ -169,7 +172,7 @@ public class EvalRewardService {
169 log.error("考评奖惩没有门店:{}", JSON.toJSONString(evalGroup)); 172 log.error("考评奖惩没有门店:{}", JSON.toJSONString(evalGroup));
170 return; 173 return;
171 } 174 }
172 -// sendDistRewardTodo(shopRewardDims, evalGroup, evalGroupRank, evalGroupRankStage); 175 + sendDistRewardTodo(shopRewardDims, evalGroup, evalGroupRank, evalGroupRankStage);
173 } 176 }
174 177
175 /** 178 /**
@@ -180,13 +183,8 @@ public class EvalRewardService { @@ -180,13 +183,8 @@ public class EvalRewardService {
180 @Transactional(rollbackFor = Exception.class) 183 @Transactional(rollbackFor = Exception.class)
181 public void sendDistRewardTodo(List<EvalGroupRewardDim> shopRewardDims, EvalGroup evalGroup, 184 public void sendDistRewardTodo(List<EvalGroupRewardDim> shopRewardDims, EvalGroup evalGroup,
182 EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage) { 185 EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage) {
183 - String evalGroupRankName = evalGroupRank.getName();  
184 - String evalGroupRankStageName = evalGroupRankStage.getName();  
185 - DecimalFormat decimalFormat = new DecimalFormat("##########.##");  
186 List<BacklogBatchPlanItemReqDTO> itemList = new ArrayList<>(); 186 List<BacklogBatchPlanItemReqDTO> itemList = new ArrayList<>();
187 -  
188 List<Long> distPoolIds = new ArrayList<>(); 187 List<Long> distPoolIds = new ArrayList<>();
189 - final Date expireTime = DateUtil.localDateTime2Date(LocalDateTime.now().plusDays(2L));  
190 for (EvalGroupRewardDim rewardDim : shopRewardDims) { 188 for (EvalGroupRewardDim rewardDim : shopRewardDims) {
191 final String roleCode = rewardDim.getDistRoleCode(); 189 final String roleCode = rewardDim.getDistRoleCode();
192 List<EvalShopPool> pools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery() 190 List<EvalShopPool> pools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery()
@@ -219,33 +217,15 @@ public class EvalRewardService { @@ -219,33 +217,15 @@ public class EvalRewardService {
219 } 217 }
220 //奖惩为0不分配 218 //奖惩为0不分配
221 if (BigDecimal.ZERO.compareTo(reward) == 0) { 219 if (BigDecimal.ZERO.compareTo(reward) == 0) {
222 - return; 220 + continue;
223 } 221 }
224 222
225 - EvalRewardDist rewardDist = transferPo(evalGroup); 223 + EvalRewardDist rewardDist = this.convertRewardDist(evalGroup, evalGroupRank, evalGroupRankStage, poolIds, manageShopIds);
226 rewardDist.setUserId(user.getUserId()); 224 rewardDist.setUserId(user.getUserId());
227 - rewardDist.setEvalShopPoolIds(poolIds);  
228 - rewardDist.setShopIds(manageShopIds);  
229 - rewardDist.setEvalName(evalGroupRankName);  
230 -// rewardDist.setEvalType(evalType);  
231 rewardDist.setReward(reward); 225 rewardDist.setReward(reward);
232 evalRewardDistService.save(rewardDist); 226 evalRewardDistService.save(rewardDist);
233 -  
234 - BacklogBatchPlanItemReqDTO planItemReq = new BacklogBatchPlanItemReqDTO();  
235 - planItemReq.setDataId(rewardDist.getId().toString());  
236 - planItemReq.setUserId(user.getUserId());  
237 - planItemReq.setPlanTime(new Date());  
238 - planItemReq.setExpireTime(expireTime);  
239 -  
240 - Map<String, String> dynamicMap = new HashMap<>(8);  
241 - dynamicMap.put("evalGroupName", evalGroupRankName);  
242 - dynamicMap.put("evalName", evalGroupRankStageName);  
243 -// dynamicMap.put("evalType", evalType.getName());  
244 - dynamicMap.put("amount", decimalFormat.format(rewardDist.getReward()));  
245 - planItemReq.setDynamicMap(dynamicMap);  
246 -  
247 - Map<String, Object> extraData = new HashMap<>();  
248 - planItemReq.setExtraData(extraData); 227 + BacklogBatchPlanItemReqDTO planItemReq = this.createBacklog(rewardDist, user.getUserId());
  228 + planItemReq.setDynamicMap(rewardDistDynamicMap(rewardDist, evalGroupRank, evalGroupRankStage));
249 itemList.add(planItemReq); 229 itemList.add(planItemReq);
250 } 230 }
251 } 231 }
@@ -269,11 +249,49 @@ public class EvalRewardService { @@ -269,11 +249,49 @@ public class EvalRewardService {
269 } 249 }
270 } 250 }
271 251
272 - public EvalRewardDist transferPo(EvalGroup evalGroup) { 252 +
  253 + public BacklogBatchPlanItemReqDTO createBacklog(EvalRewardDist rewardDist, Long userId) {
  254 + Date expireTime = DateUtil.localDateTime2Date(LocalDateTime.now().plusDays(2L));
  255 + BacklogBatchPlanItemReqDTO planItemReq = new BacklogBatchPlanItemReqDTO();
  256 + planItemReq.setDataId(rewardDist.getId().toString());
  257 + planItemReq.setUserId(userId);
  258 + planItemReq.setPlanTime(new Date());
  259 + planItemReq.setExpireTime(expireTime);
  260 + planItemReq.setExtraData(new HashMap<>());
  261 + return planItemReq;
  262 + }
  263 +
  264 + public Map<String, String> rewardDistDynamicMap(EvalRewardDist rewardDist, EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage) {
  265 + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  266 + String beginTimeStr = dtf.format(rewardDist.getBeginTime());
  267 + String endTimeStr = dtf.format(rewardDist.getOverTime());
  268 + String timeStr = beginTimeStr + Constant.TIME_SEPARATOR + endTimeStr;
  269 + String evalGroupRankStageName = (evalGroupRank.getMultiStage()) ? evalGroupRankStage.getName() : "---";
  270 +
  271 + DecimalFormat decimalFormat = new DecimalFormat("##########.##");
  272 + Map<String, String> dynamicMap = new HashMap<>(8);
  273 + dynamicMap.put("evalGroupRankName", evalGroupRank.getName());
  274 + dynamicMap.put("evalGroupRankStageName", evalGroupRankStageName);
  275 + dynamicMap.put("evalGroupRankStageTime", timeStr);
  276 + dynamicMap.put("amount", decimalFormat.format(rewardDist.getReward()));
  277 + return dynamicMap;
  278 + }
  279 +
  280 + public EvalRewardDist convertRewardDist(EvalGroup evalGroup, EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage,
  281 + List<Long> poolIds, List<Long> manageShopIds) {
273 EvalRewardDist rewardDist = new EvalRewardDist(); 282 EvalRewardDist rewardDist = new EvalRewardDist();
274 - rewardDist.setEvalId(evalGroup.getEvalGroupRankId());  
275 rewardDist.setEvalGroupId(evalGroup.getId()); 283 rewardDist.setEvalGroupId(evalGroup.getId());
276 -// rewardDist.setEvalGroupName(evalGroup.getName()); 284 + rewardDist.setEvalGroupRankId(evalGroupRank.getId());
  285 + rewardDist.setEvalGroupRankStageId(evalGroupRankStage.getId());
  286 + rewardDist.setEvalGroupRankName(evalGroupRank.getName());
  287 + String evalGroupRankStageName = (PublicUtil.isNotEmpty(evalGroupRankStage.getName()) ? evalGroupRankStage.getName() : "---");
  288 + rewardDist.setEvalGroupRankStageName(evalGroupRankStageName);
  289 + rewardDist.setBeginTime(evalGroupRankStage.getBeginTime());
  290 + rewardDist.setOverTime(evalGroupRankStage.getOverTime());
  291 + rewardDist.setEvalShopPoolIds(poolIds);
  292 + rewardDist.setShopIds(manageShopIds);
  293 +
  294 + rewardDist.setEvalGroupId(evalGroup.getId());
277 rewardDist.setStatus(EvalRewardDistStatusEnum.NO_DIST); 295 rewardDist.setStatus(EvalRewardDistStatusEnum.NO_DIST);
278 rewardDist.setGroupId(evalGroup.getGroupId()); 296 rewardDist.setGroupId(evalGroup.getGroupId());
279 rewardDist.setYn(Boolean.TRUE); 297 rewardDist.setYn(Boolean.TRUE);