Commit d22abbcbc9e92ad79c86968d1e7feb505e6d37ea
Merge branch 'test' into 'main'
个人考评查看 个人考评查看 See merge request !133
Showing
15 changed files
with
306 additions
and
265 deletions
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<EvalRewardDist, Long | @@ -36,31 +37,37 @@ public class EvalRewardDist extends BaseAuditableTimeEntity<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<EvalShopPool, Long> { | @@ -30,11 +30,6 @@ public class EvalShopPool extends BaseAuditableTimeEntity<EvalShopPool, Long> { | ||
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<EvalShopPool, Long> { | @@ -48,26 +43,6 @@ public class EvalShopPool extends BaseAuditableTimeEntity<EvalShopPool, Long> { | ||
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<EvalShopPool, Long> { | @@ -78,16 +53,6 @@ public class EvalShopPool extends BaseAuditableTimeEntity<EvalShopPool, Long> { | ||
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<EvalGroupUserS | @@ -169,10 +169,11 @@ public abstract class EvalKpiBaseCalculator implements Calculator<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<EvalGroupUserS | @@ -225,20 +226,37 @@ public abstract class EvalKpiBaseCalculator implements Calculator<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); |