Commit 8945afe54d3395f7846d8c53c8d067f30c920125
1 parent
914847ef
feature(*): 考评保存修改
考评保存修改
Showing
33 changed files
with
866 additions
and
799 deletions
doc/2023_update.sql
... | ... | @@ -540,11 +540,20 @@ ALTER TABLE `fw_morax`.`eval_group` |
540 | 540 | ALTER TABLE `fw_morax`.`eval` |
541 | 541 | ADD COLUMN `multi_stage` tinyint(1) NULL COMMENT '多阶段' AFTER `over_time`; |
542 | 542 | |
543 | +ALTER TABLE `fw_morax`.`eval_group` | |
544 | + MODIFY COLUMN `eval_id` bigint(20) NULL COMMENT '考评' AFTER `id`, | |
545 | + ADD COLUMN `eval_group_rank_id` bigint(20) NULL COMMENT '考评排名组id' AFTER `eval_id`; | |
546 | + | |
543 | 547 | ALTER TABLE `fw_morax`.`eval_group_reward` |
544 | 548 | ADD COLUMN `eval_stage_id` bigint(20) NULL COMMENT '考评阶段id' AFTER `id`, |
545 | 549 | ADD COLUMN `post_ids` varchar(512) NULL COMMENT '岗位id' AFTER `eval_stage_id`, |
546 | 550 | ADD COLUMN `post_names` varchar(512) NOT NULL COMMENT '岗位' AFTER `post_ids`, |
547 | 551 | MODIFY COLUMN `cal_method` int(11) NULL COMMENT '计算方式; 1: 排名正负激励 2:阶梯奖励(翻倍) 3:总金额X达成率占比 4:固定值X达成率 5: 固定值+超额部分追加奖励' AFTER `ladders_type`; |
548 | 552 | |
553 | +ALTER TABLE `fw_morax`.`eval_group_user` | |
554 | + CHANGE COLUMN `eval_id` `eval_group_rank_id` bigint(20) NOT NULL COMMENT '考评排名组id' AFTER `id`; | |
555 | + | |
549 | 556 | -- eval_stage |
550 | --- salary_closure | |
551 | 557 | \ No newline at end of file |
558 | +-- salary_closure | |
559 | +-- eval_group_rank | |
560 | +-- eval_group | |
552 | 561 | \ No newline at end of file | ... | ... |
fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupDao.java
... | ... | @@ -44,4 +44,11 @@ public interface EvalGroupDao extends BaseMapper<EvalGroup> { |
44 | 44 | Set<Long> queryCalculableEvalGroupIds(@Param("day") LocalDate localDate); |
45 | 45 | |
46 | 46 | Set<Long> queryDistributionShopReward(@Param("day") LocalDate localDate, @Param("scopeType") Integer scopeType); |
47 | + | |
48 | + /** | |
49 | + * 查询生效中的考评组 | |
50 | + * @param evalGroupRankId | |
51 | + * @return | |
52 | + */ | |
53 | + List<EvalGroup> getEffectsByRankId(@Param("evalGroupRankId") Long evalGroupRankId, @Param("day") LocalDate day); | |
47 | 54 | } | ... | ... |
fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalStageDao.java renamed to fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRankStageDao.java
1 | 1 | package cn.fw.morax.dao.eval; |
2 | 2 | |
3 | 3 | |
4 | -import cn.fw.morax.domain.db.eval.EvalStage; | |
4 | +import cn.fw.morax.domain.db.eval.EvalGroupRankStage; | |
5 | 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
6 | 6 | |
7 | 7 | /** |
... | ... | @@ -12,6 +12,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
12 | 12 | * @author jiangchao |
13 | 13 | * @since 2022-12-09 |
14 | 14 | */ |
15 | -public interface EvalStageDao extends BaseMapper<EvalStage> { | |
15 | +public interface EvalGroupRankStageDao extends BaseMapper<EvalGroupRankStage> { | |
16 | 16 | |
17 | 17 | } | ... | ... |
fw-morax-dao/src/main/resources/mapper/eval/EvalGroupMapper.xml
... | ... | @@ -3,30 +3,20 @@ |
3 | 3 | <mapper namespace="cn.fw.morax.dao.eval.EvalGroupDao"> |
4 | 4 | |
5 | 5 | <sql id="all_columns"> |
6 | - id, eval_id, egc, name, post_id, post_name, shop_ids, shop_names, scope_type, | |
7 | - role_codes, role_names, reason, attachment, indicator_num, begin_time, over_time, | |
8 | - group_id, yn, create_time, update_time | |
6 | + id,eval_group_rank_id,eval_group_rank_stage_id,egc,post_id,post_name,shop_ids, | |
7 | + shop_names,indicator_num,group_id,yn,create_time,update_time | |
9 | 8 | </sql> |
10 | 9 | |
11 | - | |
12 | - | |
13 | - | |
14 | 10 | <!-- 通用查询映射结果 --> |
15 | 11 | <resultMap id="BaseResultMap" type="cn.fw.morax.domain.db.eval.EvalGroup"> |
16 | 12 | <result column="id" property="id"/> |
17 | 13 | <result column="egc" property="egc"/> |
18 | - <result column="eval_id" property="evalId"/> | |
19 | - <result column="name" property="name"/> | |
20 | - <result column="scope_type" property="scopeType"/> | |
14 | + <result column="eval_group_rank_id" property="evalGroupRankId"/> | |
15 | + <result column="eval_group_rank_stage_id" property="evalGroupRankStageId"/> | |
21 | 16 | <result column="post_id" property="postId"/> |
22 | 17 | <result column="post_name" property="postName"/> |
23 | 18 | <result column="shop_ids" property="shopIds" typeHandler="cn.fw.common.data.mybatis.handler.LongListTypeHandler"/> |
24 | 19 | <result column="shop_names" property="shopNames" typeHandler="cn.fw.common.data.mybatis.handler.StringListTypeHandler"/> |
25 | - <result column="role_codes" property="roleCodes" typeHandler="cn.fw.common.data.mybatis.handler.StringListTypeHandler"/> | |
26 | - <result column="role_names" property="roleNames" typeHandler="cn.fw.common.data.mybatis.handler.StringListTypeHandler"/> | |
27 | -<!-- <result column="reason" property="reason"/>--> | |
28 | -<!-- <result column="attachment" property="attachment"/>--> | |
29 | -<!-- <result column="status" property="status"/>--> | |
30 | 20 | <result column="indicator_num" property="indicatorNum"/> |
31 | 21 | <result column="yn" property="yn"/> |
32 | 22 | <result column="create_time" property="createTime"/> |
... | ... | @@ -88,4 +78,26 @@ |
88 | 78 | and eval_id in (select id from eval where `status` IN (3, 4) and yn = 1) |
89 | 79 | </select> |
90 | 80 | |
81 | + <select id="getEffectsByRankId" resultMap="BaseResultMap"> | |
82 | + select | |
83 | + t1.id, | |
84 | + t1.eval_group_rank_id, | |
85 | + t1.eval_group_rank_stage_id, | |
86 | + t1.egc, | |
87 | + t1.name, | |
88 | + t1.post_id, | |
89 | + t1.post_name, | |
90 | + t1.shop_ids, | |
91 | + t1.shop_names, | |
92 | + t1.scope_type, | |
93 | + t1.indicator_num, | |
94 | + t1.group_id | |
95 | + from eval_group t1 | |
96 | + left join eval_group_rank_stage t2 on t1.eval_group_rank_stage_id = t2.id and t2.yn = 1 | |
97 | + where t1.yn = 1 | |
98 | + and DATE_FORMAT(t2.begin_time, '%Y-%m-%d') <= DATE_FORMAT(#{day}, '%Y-%m-%d') | |
99 | + and DATE_FORMAT(t2.over_time, '%Y-%m-%d') >= DATE_FORMAT(#{day}, '%Y-%m-%d') | |
100 | + and t1.eval_group_rank_id = #{evalGroupRankId} | |
101 | + </select> | |
102 | + | |
91 | 103 | </mapper> |
92 | 104 | \ No newline at end of file | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/kpi/EvalGroupCalculableRankBO.java
... | ... | @@ -26,7 +26,7 @@ public class EvalGroupCalculableRankBO { |
26 | 26 | /** |
27 | 27 | * 考评范围; 1:人员考评 2:门店考评 |
28 | 28 | */ |
29 | - private EvalScopeEnum scopeType; | |
29 | +// private EvalScopeEnum scopeType; | |
30 | 30 | /** |
31 | 31 | * 集团id |
32 | 32 | */ |
... | ... | @@ -34,7 +34,11 @@ public class EvalGroupCalculableRankBO { |
34 | 34 | /** |
35 | 35 | * 考评组id |
36 | 36 | */ |
37 | - private List<String> egcs; | |
37 | + private List<Long> evalGroupIds; | |
38 | + /** | |
39 | + * 考评组id | |
40 | + */ | |
41 | +// private List<String> egcs; | |
38 | 42 | /** |
39 | 43 | * 日期 |
40 | 44 | */ | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroup.java
... | ... | @@ -37,14 +37,14 @@ public class EvalGroup extends BaseAuditableTimeEntity<EvalGroup, Long> { |
37 | 37 | private static final long serialVersionUID = 1L; |
38 | 38 | |
39 | 39 | /** |
40 | - * 考评id | |
40 | + * 考评排名组id | |
41 | 41 | */ |
42 | - private Long evalId; | |
42 | + private Long evalGroupRankId; | |
43 | 43 | |
44 | 44 | /** |
45 | 45 | * 考评阶段id |
46 | 46 | */ |
47 | - private Long evalStageId; | |
47 | + private Long evalGroupRankStageId; | |
48 | 48 | |
49 | 49 | /** |
50 | 50 | * 考评组编码 | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRank.java
... | ... | @@ -5,6 +5,7 @@ import cn.fw.common.data.entity.BaseAuditableTimeEntity; |
5 | 5 | import cn.fw.common.data.entity.BaseAuditableUserEntity; |
6 | 6 | import cn.fw.common.data.mybatis.handler.StringListTypeHandler; |
7 | 7 | import cn.fw.morax.domain.enums.EvalScopeEnum; |
8 | +import cn.fw.morax.domain.enums.EvalTypeEnum; | |
8 | 9 | import cn.fw.morax.domain.enums.SettingStatusEnum; |
9 | 10 | import com.baomidou.mybatisplus.annotation.TableField; |
10 | 11 | import com.baomidou.mybatisplus.annotation.TableLogic; |
... | ... | @@ -33,24 +34,19 @@ import java.util.List; |
33 | 34 | public class EvalGroupRank extends BaseAuditableEntity<EvalGroupRank, Long> { |
34 | 35 | |
35 | 36 | /** |
36 | - * 考评范围; 1:人员考评 2:门店考评 | |
37 | - */ | |
38 | - private EvalScopeEnum scopeType; | |
39 | - /** | |
40 | - * 组合名称 | |
37 | + * 考评排名组名称 | |
41 | 38 | */ |
42 | 39 | private String name; |
43 | 40 | |
44 | 41 | /** |
45 | - * 考评组编码 | |
42 | + * 状态;1:审批中 2:待生效 3:生效中 4:已失效 5:草稿 | |
46 | 43 | */ |
47 | - @TableField(typeHandler = StringListTypeHandler.class) | |
48 | - private List<String> egcs; | |
44 | + private SettingStatusEnum status; | |
49 | 45 | |
50 | 46 | /** |
51 | - * 结束时间 | |
47 | + * 多阶段 | |
52 | 48 | */ |
53 | - private LocalDate overTime; | |
49 | + private Boolean multiStage; | |
54 | 50 | |
55 | 51 | /** |
56 | 52 | * 集团id |
... | ... | @@ -58,9 +54,25 @@ public class EvalGroupRank extends BaseAuditableEntity<EvalGroupRank, Long> { |
58 | 54 | private Long groupId; |
59 | 55 | |
60 | 56 | /** |
61 | - * 状态;1:审批中 2:待生效 3:生效中 4:已失效 5:草稿 | |
57 | + * 调整原因 | |
62 | 58 | */ |
63 | - private SettingStatusEnum status; | |
59 | + private String reason; | |
60 | + | |
61 | + /** | |
62 | + * 附件;fid逗号隔开 | |
63 | + */ | |
64 | + @TableField(typeHandler = StringListTypeHandler.class) | |
65 | + private List<String> attachment; | |
66 | + | |
67 | + /** | |
68 | + * 生效时间 | |
69 | + */ | |
70 | + private LocalDate beginTime; | |
71 | + | |
72 | + /** | |
73 | + * 结束时间 | |
74 | + */ | |
75 | + private LocalDate overTime; | |
64 | 76 | |
65 | 77 | /** |
66 | 78 | * 逻辑删除 | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalStage.java renamed to fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRankStage.java
1 | 1 | package cn.fw.morax.domain.db.eval; |
2 | 2 | |
3 | 3 | import cn.fw.common.data.entity.BaseAuditableTimeEntity; |
4 | -import cn.fw.common.data.mybatis.handler.StringListTypeHandler; | |
5 | -import cn.fw.morax.domain.enums.EvalTypeEnum; | |
6 | -import cn.fw.morax.domain.enums.SettingStatusEnum; | |
7 | -import com.baomidou.mybatisplus.annotation.TableField; | |
8 | 4 | import com.baomidou.mybatisplus.annotation.TableLogic; |
9 | 5 | import com.baomidou.mybatisplus.annotation.TableName; |
10 | 6 | import lombok.Data; |
11 | 7 | import lombok.EqualsAndHashCode; |
12 | 8 | |
13 | 9 | import java.time.LocalDate; |
14 | -import java.util.List; | |
15 | 10 | |
16 | 11 | /** |
17 | 12 | * <p> |
... | ... | @@ -24,7 +19,7 @@ import java.util.List; |
24 | 19 | @Data |
25 | 20 | @EqualsAndHashCode(callSuper = false) |
26 | 21 | @TableName(autoResultMap = true) |
27 | -public class EvalStage extends BaseAuditableTimeEntity<EvalStage, Long> { | |
22 | +public class EvalGroupRankStage extends BaseAuditableTimeEntity<EvalGroupRankStage, Long> { | |
28 | 23 | |
29 | 24 | private static final long serialVersionUID = 1L; |
30 | 25 | |
... | ... | @@ -34,9 +29,9 @@ public class EvalStage extends BaseAuditableTimeEntity<EvalStage, Long> { |
34 | 29 | private String name; |
35 | 30 | |
36 | 31 | /** |
37 | - * 考评id | |
32 | + * 考评排名组id | |
38 | 33 | */ |
39 | - private Long evalId; | |
34 | + private Long evalGroupRankId; | |
40 | 35 | |
41 | 36 | /** |
42 | 37 | * 生效时间 | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupUser.java
... | ... | @@ -20,9 +20,9 @@ import java.time.LocalDate; |
20 | 20 | @TableName(autoResultMap = true) |
21 | 21 | public class EvalGroupUser extends BaseAuditableTimeEntity<EvalGroupUser, Long> { |
22 | 22 | /** |
23 | - * 考评id | |
23 | + * 考评排名组id | |
24 | 24 | */ |
25 | - private Long evalId; | |
25 | + private Long evalGroupRankId; | |
26 | 26 | /** |
27 | 27 | * 考评组编码 |
28 | 28 | */ | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalDTO.java
1 | 1 | package cn.fw.morax.domain.dto.eval; |
2 | 2 | |
3 | 3 | import cn.fw.common.web.annotation.LoginContextField; |
4 | -import cn.fw.morax.domain.db.eval.EvalGroup; | |
5 | -import cn.fw.morax.domain.db.eval.EvalStage; | |
6 | 4 | import cn.fw.morax.domain.enums.EvalTypeEnum; |
7 | 5 | import cn.fw.morax.domain.enums.SettingDraftStatusEnum; |
8 | 6 | import lombok.Data; | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupDTO.java
... | ... | @@ -46,8 +46,8 @@ public class EvalGroupDTO { |
46 | 46 | /** |
47 | 47 | * 考评,活动名称 |
48 | 48 | */ |
49 | - @NotBlank(message = "名称不能为空") | |
50 | - @Length(max = 255, message = "名称超出最大限制") | |
49 | +// @NotBlank(message = "名称不能为空") | |
50 | +// @Length(max = 255, message = "名称超出最大限制") | |
51 | 51 | private String name; |
52 | 52 | |
53 | 53 | /** | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupRankDto.java renamed to fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupRankDTO.java
... | ... | @@ -3,6 +3,7 @@ package cn.fw.morax.domain.dto.eval; |
3 | 3 | import cn.fw.common.web.annotation.LoginContextField; |
4 | 4 | import cn.fw.morax.domain.dto.kpi.KpiGroupRankStarLaddersDTO; |
5 | 5 | import cn.fw.morax.domain.enums.EvalScopeEnum; |
6 | +import cn.fw.morax.domain.enums.SettingDraftStatusEnum; | |
6 | 7 | import cn.fw.morax.domain.enums.StarEvaluationEnum; |
7 | 8 | import lombok.AllArgsConstructor; |
8 | 9 | import lombok.Builder; |
... | ... | @@ -11,10 +12,12 @@ import lombok.NoArgsConstructor; |
11 | 12 | import org.hibernate.validator.constraints.Length; |
12 | 13 | |
13 | 14 | import javax.validation.Valid; |
15 | +import javax.validation.constraints.Future; | |
14 | 16 | import javax.validation.constraints.NotBlank; |
15 | 17 | import javax.validation.constraints.NotNull; |
16 | 18 | import javax.validation.constraints.Size; |
17 | 19 | import java.math.BigDecimal; |
20 | +import java.time.LocalDate; | |
18 | 21 | import java.util.List; |
19 | 22 | |
20 | 23 | /** |
... | ... | @@ -29,7 +32,7 @@ import java.util.List; |
29 | 32 | @Builder |
30 | 33 | @NoArgsConstructor |
31 | 34 | @AllArgsConstructor |
32 | -public class EvalGroupRankDto { | |
35 | +public class EvalGroupRankDTO { | |
33 | 36 | |
34 | 37 | /** |
35 | 38 | * id |
... | ... | @@ -37,12 +40,66 @@ public class EvalGroupRankDto { |
37 | 40 | private Long id; |
38 | 41 | |
39 | 42 | /** |
40 | - * 组合名称 | |
43 | + * 草稿id | |
41 | 44 | */ |
42 | - @NotBlank(message = "组合名称不能为空") | |
43 | - @Length(max = 255, message = "组合名称超出最大限制") | |
45 | + private Long draftId; | |
46 | + | |
47 | + /** | |
48 | + * 考评排名组名称 | |
49 | + */ | |
50 | + @NotBlank(message = "考评排名组名称不能为空") | |
51 | + @Length(max = 255, message = "考评排名组名称超出最大限制") | |
44 | 52 | private String name; |
45 | 53 | |
54 | + /** | |
55 | + * 多阶段 | |
56 | + */ | |
57 | + @NotNull(message = "多阶段不能为空") | |
58 | + private Boolean multiStage; | |
59 | + | |
60 | + /** | |
61 | + * 生效时间 | |
62 | + */ | |
63 | +// @Future(message = "生效时间不能在当前时间之前") | |
64 | + @NotNull(message = "生效时间不能为空") | |
65 | + private LocalDate beginTime; | |
66 | + | |
67 | + /** | |
68 | + * 结束时间 | |
69 | + */ | |
70 | + @NotNull(message = "结束时间不能为空") | |
71 | + @Future(message = "结束时间不能在当前时间之前") | |
72 | + private LocalDate overTime; | |
73 | + | |
74 | + /** | |
75 | + * 考评阶段 | |
76 | + */ | |
77 | + @NotNull(message = "考评阶段不能为空") | |
78 | + @Size(min = 1, message = "考评阶段不能为空") | |
79 | + @Valid | |
80 | + private List<EvalStageDTO> stages; | |
81 | + | |
82 | + /** | |
83 | + * 审批单号 | |
84 | + */ | |
85 | + private String approvalNo; | |
86 | + | |
87 | + /** | |
88 | + * 草稿状态 1:未发布 2:发布待审批 3:审批拒绝 4:审批同意 5:撤销审批 | |
89 | + */ | |
90 | + private SettingDraftStatusEnum draftStatus; | |
91 | + | |
92 | + /** | |
93 | + * 调整原因 | |
94 | + */ | |
95 | + @NotBlank(message = "调整原因不能为空") | |
96 | + @Length(max = 512, message = "调整原因超出最大限制") | |
97 | + private String reason; | |
98 | + | |
99 | + /** | |
100 | + * 附件;fid逗号隔开 | |
101 | + */ | |
102 | + private List<String> attachment; | |
46 | 103 | |
47 | 104 | /** |
48 | 105 | * 集团id |
... | ... | @@ -62,17 +119,17 @@ public class EvalGroupRankDto { |
62 | 119 | @LoginContextField(LoginContextField.Name.USER_ID) |
63 | 120 | private Long userId; |
64 | 121 | |
65 | - /** | |
66 | - * 考评组编码 | |
67 | - */ | |
68 | - @NotNull(message = "考评组编码不能为空") | |
69 | - @Size(min = 1, message = "考评组编码不能为空") | |
70 | - private List<String> egcs; | |
71 | - | |
72 | - /** | |
73 | - * 考评范围; 1:门店考评 2:人员考评 | |
74 | - */ | |
75 | - @NotNull(message = "考评范围不能为空") | |
76 | - private EvalScopeEnum scopeType; | |
122 | +// /** | |
123 | +// * 考评组编码 | |
124 | +// */ | |
125 | +// @NotNull(message = "考评组编码不能为空") | |
126 | +// @Size(min = 1, message = "考评组编码不能为空") | |
127 | +// private List<String> egcs; | |
128 | +// | |
129 | +// /** | |
130 | +// * 考评范围; 1:门店考评 2:人员考评 | |
131 | +// */ | |
132 | +// @NotNull(message = "考评范围不能为空") | |
133 | +// private EvalScopeEnum scopeType; | |
77 | 134 | |
78 | 135 | } | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ApprovalTypeEnum.java
fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/TargetTypeEnum.java
fw-morax-server/src/main/java/cn/fw/morax/server/consumer/FlowConsumer.java
... | ... | @@ -84,7 +84,7 @@ public class FlowConsumer implements RocketMQListener<ApprovalResult> { |
84 | 84 | incomeCompensationBizService.approvalCompensationConfig(approvalRecord, result); |
85 | 85 | break; |
86 | 86 | } |
87 | - case EVAL: { | |
87 | + case EVAL_GROUP_RANK: { | |
88 | 88 | SettingDraft settingDraft = settingDraftBizService.approvalDraft(approvalRecord, result); |
89 | 89 | if (result.getAgree()) { |
90 | 90 | evalGroupBizService.approvalEvalConfig(approvalRecord, settingDraft); | ... | ... |
fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalConfigController.java
... | ... | @@ -8,7 +8,7 @@ import cn.fw.common.web.auth.annotation.CurrentUser; |
8 | 8 | import cn.fw.data.base.domain.common.Message; |
9 | 9 | import cn.fw.morax.domain.dto.EvalIndicatorDTO; |
10 | 10 | import cn.fw.morax.domain.dto.eval.EvalConfigPostIndicatorsDTO; |
11 | -import cn.fw.morax.domain.dto.eval.EvalDTO; | |
11 | +import cn.fw.morax.domain.dto.eval.EvalGroupRankDTO; | |
12 | 12 | import cn.fw.morax.domain.dto.eval.EvalShopIndicatorsDTO; |
13 | 13 | import cn.fw.morax.domain.dto.kpi.IndicatorAbleDTO; |
14 | 14 | import cn.fw.morax.domain.dto.query.EvalGroupQueryDTO; |
... | ... | @@ -20,7 +20,6 @@ import cn.fw.morax.domain.vo.eval.EvalIndicatorVO; |
20 | 20 | import cn.fw.morax.domain.vo.eval.EvalVO; |
21 | 21 | import cn.fw.morax.domain.vo.eval.QueryConditionEvalIndicatorsListVO; |
22 | 22 | import cn.fw.morax.service.biz.eval.EvalGroupBizService; |
23 | -import cn.fw.morax.service.biz.eval.EvalGroupDataService; | |
24 | 23 | import cn.fw.morax.service.biz.eval.EvalIndicatorBizService; |
25 | 24 | import cn.fw.security.auth.client.annotation.Authorization; |
26 | 25 | import cn.fw.security.auth.client.annotation.IgnoreAuth; |
... | ... | @@ -104,18 +103,18 @@ public class EvalConfigController { |
104 | 103 | } |
105 | 104 | |
106 | 105 | /** |
107 | - * 保存考评 | |
106 | + * 保存考评排名组 | |
108 | 107 | * |
109 | 108 | * @param dto 考评 |
110 | 109 | * @return |
111 | 110 | */ |
112 | - @PostMapping("/group/{submit}") | |
113 | - @ControllerMethod("保存考评") | |
114 | - public Message<Void> saveEvalGroup(@Validated @RequestBody EvalDTO dto, | |
111 | + @PostMapping("/group-rank/{submit}") | |
112 | + @ControllerMethod("保存考评排名组") | |
113 | + public Message<Void> saveEvalGroup(@Validated @RequestBody EvalGroupRankDTO dto, | |
115 | 114 | @PathVariable("submit") Integer submit, |
116 | 115 | @CurrentUser LoginAuthBean user) { |
117 | 116 | Boolean isSubmit = (submit == 1); |
118 | - evalGroupBizService.saveEvalGroup(dto, user, isSubmit); | |
117 | + evalGroupBizService.saveEvalGroupRank(dto, user, isSubmit); | |
119 | 118 | return success(); |
120 | 119 | } |
121 | 120 | ... | ... |
fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalGroupRankController.java
... | ... | @@ -7,8 +7,7 @@ import cn.fw.common.web.auth.LoginAuthBean; |
7 | 7 | import cn.fw.common.web.auth.annotation.CurrentUser; |
8 | 8 | import cn.fw.data.base.domain.common.Message; |
9 | 9 | import cn.fw.morax.common.utils.PublicUtil; |
10 | -import cn.fw.morax.domain.db.eval.Eval; | |
11 | -import cn.fw.morax.domain.dto.eval.EvalGroupRankDto; | |
10 | +import cn.fw.morax.domain.dto.eval.EvalGroupRankDTO; | |
12 | 11 | import cn.fw.morax.domain.dto.query.EvalGroupRankQueryDTO; |
13 | 12 | import cn.fw.morax.domain.dto.query.KpiGroupRankStaffQueryDTO; |
14 | 13 | import cn.fw.morax.domain.vo.eval.EvalGroupRankVO; |
... | ... | @@ -16,7 +15,6 @@ import cn.fw.morax.domain.vo.eval.EvalGroupUserVO; |
16 | 15 | import cn.fw.morax.domain.vo.eval.EvalGroupVO; |
17 | 16 | import cn.fw.morax.service.biz.eval.EvalGroupRankBizService; |
18 | 17 | import cn.fw.morax.service.biz.eval.EvalGroupUserBizService; |
19 | -import cn.fw.morax.service.biz.kpi.KpiGroupUserBizService; | |
20 | 18 | import cn.fw.security.auth.client.annotation.Authorization; |
21 | 19 | import cn.fw.security.auth.client.annotation.IgnoreAuth; |
22 | 20 | import cn.fw.security.auth.client.enums.AuthType; |
... | ... | @@ -82,7 +80,7 @@ public class EvalGroupRankController { |
82 | 80 | */ |
83 | 81 | @PostMapping("/config") |
84 | 82 | @ControllerMethod("考评组排名配置保存") |
85 | - public Message<Void> saveEvalGroupRank(@RequestBody @Validated EvalGroupRankDto dto, @CurrentUser LoginAuthBean currentUser) { | |
83 | + public Message<Void> saveEvalGroupRank(@RequestBody @Validated EvalGroupRankDTO dto, @CurrentUser LoginAuthBean currentUser) { | |
86 | 84 | evalGroupRankBizService.saveEvalGroupRank(dto); |
87 | 85 | return success(); |
88 | 86 | } | ... | ... |
fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiTaskController.java
... | ... | @@ -52,7 +52,6 @@ public class KpiTaskController { |
52 | 52 | private final FlowConsumer flowConsumer; |
53 | 53 | private final KpiCalcTask kpiCalcTask; |
54 | 54 | private final EvalUserReportTask evalUserReportTask; |
55 | - private final EvalShopReportTask evalShopReportTask; | |
56 | 55 | private final KpiReportTask kpiReportTask; |
57 | 56 | |
58 | 57 | |
... | ... | @@ -308,17 +307,17 @@ public class KpiTaskController { |
308 | 307 | evalUserReportTask.evalUserReportTask(); |
309 | 308 | return success(); |
310 | 309 | } |
311 | - /** | |
312 | - * 考评门店报表定时任务 | |
313 | - * | |
314 | - * @return | |
315 | - */ | |
316 | - @GetMapping("/eval-shop-report") | |
317 | - @ControllerMethod("考评门店报表定时任务") | |
318 | - public Message<Void> evalShopReportTask() { | |
319 | - evalShopReportTask.evalShopReportTask(); | |
320 | - return success(); | |
321 | - } | |
310 | +// /** | |
311 | +// * 考评门店报表定时任务 | |
312 | +// * | |
313 | +// * @return | |
314 | +// */ | |
315 | +// @GetMapping("/eval-shop-report") | |
316 | +// @ControllerMethod("考评门店报表定时任务") | |
317 | +// public Message<Void> evalShopReportTask() { | |
318 | +// evalShopReportTask.evalShopReportTask(); | |
319 | +// return success(); | |
320 | +// } | |
322 | 321 | |
323 | 322 | /** |
324 | 323 | * KpiReportTask 绩效报表定时任务 debug | ... | ... |
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupTask.java
... | ... | @@ -3,17 +3,11 @@ package cn.fw.morax.server.task; |
3 | 3 | import cn.fw.common.cache.locker.DistributedLocker; |
4 | 4 | import cn.fw.morax.common.constant.TimeTaskConstant; |
5 | 5 | import cn.fw.morax.common.utils.PublicUtil; |
6 | -import cn.fw.morax.domain.db.eval.Eval; | |
7 | -import cn.fw.morax.domain.db.eval.EvalGroup; | |
8 | -import cn.fw.morax.domain.db.eval.EvalGroupRank; | |
9 | -import cn.fw.morax.domain.db.eval.EvalShopPool; | |
6 | +import cn.fw.morax.domain.db.eval.*; | |
10 | 7 | import cn.fw.morax.domain.enums.EvalScopeEnum; |
11 | 8 | import cn.fw.morax.domain.enums.EvalShopPoolStatusEnum; |
12 | 9 | import cn.fw.morax.domain.enums.SettingStatusEnum; |
13 | -import cn.fw.morax.service.data.eval.EvalGroupRankService; | |
14 | -import cn.fw.morax.service.data.eval.EvalGroupService; | |
15 | -import cn.fw.morax.service.data.eval.EvalService; | |
16 | -import cn.fw.morax.service.data.eval.EvalShopPoolService; | |
10 | +import cn.fw.morax.service.data.eval.*; | |
17 | 11 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
18 | 12 | import lombok.Getter; |
19 | 13 | import lombok.RequiredArgsConstructor; |
... | ... | @@ -42,11 +36,11 @@ import java.util.stream.Collectors; |
42 | 36 | @ConditionalOnProperty(prefix = "task", name = "switch", havingValue = "on") |
43 | 37 | public class EvalGroupTask { |
44 | 38 | |
39 | + private final EvalGroupRankStageService evalGroupRankStageService; | |
45 | 40 | private final EvalShopPoolService evalShopPoolService; |
46 | - private final EvalGroupService evalGroupService; | |
47 | 41 | private final EvalGroupRankService evalGroupRankService; |
48 | - private final EvalService evalService; | |
49 | 42 | private final DistributedLocker distributedLocker; |
43 | + private final EvalGroupService evalGroupService; | |
50 | 44 | |
51 | 45 | @Value("${spring.cache.custom.global-prefix}:eval:group") |
52 | 46 | @Getter |
... | ... | @@ -71,50 +65,26 @@ public class EvalGroupTask { |
71 | 65 | try { |
72 | 66 | log.info("定时任务【每月考评组配置状态改变】开始执行"); |
73 | 67 | LocalDate currentTime = LocalDate.now(); |
74 | - List<Eval> evals = evalService.list(Wrappers.<Eval>lambdaQuery() | |
75 | - .eq(Eval::getStatus, SettingStatusEnum.EFFECTIVE) | |
76 | - .eq(Eval::getId, Boolean.TRUE) | |
68 | + List<EvalGroupRank> evalGroupRanks = evalGroupRankService.list(Wrappers.<EvalGroupRank>lambdaQuery() | |
69 | + .eq(EvalGroupRank::getStatus, SettingStatusEnum.EFFECTIVE) | |
70 | + .eq(EvalGroupRank::getYn, Boolean.TRUE) | |
77 | 71 | ); |
78 | - if (PublicUtil.isEmpty(evals)) { | |
72 | + if (PublicUtil.isEmpty(evalGroupRanks)) { | |
79 | 73 | return; |
80 | 74 | } |
81 | - List<Long> evalIds = evals.stream().map(Eval::getId).collect(Collectors.toList()); | |
82 | - List<EvalGroup> evalGroups = evalGroupService.list(Wrappers.<EvalGroup>lambdaQuery() | |
83 | - .in(EvalGroup::getEvalId, evalIds) | |
84 | - .eq(EvalGroup::getYn, Boolean.TRUE) | |
85 | - ); | |
86 | - | |
87 | - //修改对应门店考评池的状态 | |
88 | - LocalDate yesterday = currentTime.minusDays(1); | |
89 | - List<Long> inEffectiveShopEvalGroupIds = evalGroups.stream() | |
90 | - .filter(evalGroup -> EvalScopeEnum.SHOP.equals(evalGroup.getScopeType()) && evalGroup.getOverTime().equals(yesterday)) | |
91 | - .map(EvalGroup::getId).collect(Collectors.toList()); | |
92 | - if (PublicUtil.isNotEmpty(inEffectiveShopEvalGroupIds)) { | |
93 | - evalShopPoolService.update(Wrappers.<EvalShopPool>lambdaUpdate() | |
94 | - .eq(EvalShopPool::getEvalGroupId, inEffectiveShopEvalGroupIds) | |
95 | - .eq(EvalShopPool::getYn, Boolean.TRUE) | |
96 | - .set(EvalShopPool::getStatus, EvalShopPoolStatusEnum.WAIT_DIST_REWARD) | |
97 | - .set(EvalShopPool::getUpdateTime, new Date()) | |
75 | + List<EvalGroupRank> ineffectiveRanks = new ArrayList<>(); | |
76 | + for (EvalGroupRank evalGroupRank : evalGroupRanks) { | |
77 | + List<EvalGroupRankStage> stages = evalGroupRankStageService.list(Wrappers.<EvalGroupRankStage>lambdaQuery() | |
78 | + .eq(EvalGroupRankStage::getEvalGroupRankId, evalGroupRank.getId()) | |
79 | + .eq(EvalGroupRankStage::getYn, Boolean.TRUE) | |
98 | 80 | ); |
99 | - } | |
100 | - | |
101 | - List<Long> ineffectiveIds = new ArrayList<>(); | |
102 | - Map<Long, List<EvalGroup>> evalMap = evalGroups.stream().collect(Collectors.groupingBy(EvalGroup::getEvalId)); | |
103 | - for (Map.Entry<Long, List<EvalGroup>> evalEntry : evalMap.entrySet()) { | |
104 | - Boolean existNotEndGroup = evalEntry.getValue().stream() | |
81 | + Boolean ineffective = stages.stream() | |
105 | 82 | .filter(evalGroup -> evalGroup.getOverTime().isAfter(currentTime)).findFirst().isPresent(); |
106 | - if (! existNotEndGroup) { | |
107 | - ineffectiveIds.add(evalEntry.getKey()); | |
83 | + if (ineffective) { | |
84 | + evalGroupRank.setStatus(SettingStatusEnum.INEFFECTIVE); | |
85 | + ineffectiveRanks.add(evalGroupRank); | |
108 | 86 | } |
109 | 87 | } |
110 | - if (PublicUtil.isNotEmpty(ineffectiveIds)) { | |
111 | - evalService.update(Wrappers.<Eval>lambdaUpdate() | |
112 | - .in(Eval::getId, ineffectiveIds) | |
113 | - .set(Eval::getStatus, SettingStatusEnum.INEFFECTIVE) | |
114 | - .set(Eval::getUpdateTime, new Date()) | |
115 | - ); | |
116 | - } | |
117 | - | |
118 | 88 | } catch (Exception e){ |
119 | 89 | log.error(e.getMessage(), e); |
120 | 90 | } finally { |
... | ... | @@ -133,21 +103,27 @@ public class EvalGroupTask { |
133 | 103 | return; |
134 | 104 | } |
135 | 105 | try { |
136 | - log.info("定时任务【每月考评排名组配置状态改变】开始执行"); | |
137 | 106 | LocalDate currentTime = LocalDate.now(); |
138 | 107 | List<EvalGroupRank> evalGroupRanks = evalGroupRankService.list(Wrappers.<EvalGroupRank>lambdaQuery() |
139 | - .le(EvalGroupRank::getOverTime, currentTime) | |
140 | 108 | .eq(EvalGroupRank::getStatus, SettingStatusEnum.EFFECTIVE) |
141 | 109 | .eq(EvalGroupRank::getYn, Boolean.TRUE) |
142 | 110 | ); |
143 | 111 | if (PublicUtil.isEmpty(evalGroupRanks)) { |
144 | 112 | return; |
145 | 113 | } |
146 | - for (EvalGroupRank evalGroupRank : evalGroupRanks) { | |
147 | - evalGroupRank.setStatus(SettingStatusEnum.INEFFECTIVE); | |
148 | - evalGroupRank.setUpdateTime(new Date()); | |
114 | + List<EvalGroupRank> ineffectiveRanks = new ArrayList<>(); | |
115 | + for (EvalGroupRank evalGroupRank : evalGroupRanks) { | |
116 | + List<EvalGroupRankStage> stages = evalGroupRankStageService.list(Wrappers.<EvalGroupRankStage>lambdaQuery() | |
117 | + .eq(EvalGroupRankStage::getEvalGroupRankId, evalGroupRank.getId()) | |
118 | + .eq(EvalGroupRankStage::getYn, Boolean.TRUE) | |
119 | + ); | |
120 | + Boolean effective = stages.stream() | |
121 | + .filter(evalGroup -> evalGroup.getOverTime().isBefore(currentTime)).findFirst().isPresent(); | |
122 | + if (! effective) { | |
123 | + evalGroupRank.setStatus(SettingStatusEnum.INEFFECTIVE); | |
124 | + ineffectiveRanks.add(evalGroupRank); | |
125 | + } | |
149 | 126 | } |
150 | - evalGroupRankService.updateBatchById(evalGroupRanks); | |
151 | 127 | } catch (Exception e){ |
152 | 128 | log.error(e.getMessage(), e); |
153 | 129 | } finally { | ... | ... |
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalShopReportTask.java
1 | -package cn.fw.morax.server.task; | |
2 | - | |
3 | -import cn.fw.common.cache.locker.DistributedLocker; | |
4 | -import cn.fw.morax.common.constant.Constant; | |
5 | -import cn.fw.morax.common.constant.TimeTaskConstant; | |
6 | -import cn.fw.morax.common.utils.PublicUtil; | |
7 | -import cn.fw.morax.domain.db.eval.*; | |
8 | -import cn.fw.morax.domain.db.kpi.IndicatorUserValue; | |
9 | -import cn.fw.morax.domain.enums.*; | |
10 | -import cn.fw.morax.service.biz.CommonService; | |
11 | -import cn.fw.morax.service.data.eval.*; | |
12 | -import cn.fw.morax.service.data.kpi.IndicatorUserValueService; | |
13 | -import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |
14 | -import com.google.common.collect.Maps; | |
15 | -import lombok.Getter; | |
16 | -import lombok.RequiredArgsConstructor; | |
17 | -import lombok.extern.slf4j.Slf4j; | |
18 | -import org.redisson.api.RLock; | |
19 | -import org.springframework.beans.factory.annotation.Value; | |
20 | -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; | |
21 | -import org.springframework.scheduling.annotation.Scheduled; | |
22 | -import org.springframework.stereotype.Component; | |
23 | -import org.springframework.transaction.PlatformTransactionManager; | |
24 | -import org.springframework.transaction.TransactionDefinition; | |
25 | -import org.springframework.transaction.TransactionStatus; | |
26 | -import org.springframework.transaction.annotation.Transactional; | |
27 | - | |
28 | -import java.math.BigDecimal; | |
29 | -import java.time.LocalDate; | |
30 | -import java.time.YearMonth; | |
31 | -import java.time.temporal.TemporalAdjusters; | |
32 | -import java.util.*; | |
33 | -import java.util.concurrent.atomic.AtomicInteger; | |
34 | -import java.util.concurrent.locks.Lock; | |
35 | -import java.util.function.Function; | |
36 | -import java.util.stream.Collectors; | |
37 | - | |
38 | -/** | |
39 | - * @author : jiangchao | |
40 | - * @className : KpiReportRatioTask | |
41 | - * @description : 绩效报表定时器 | |
42 | - * @date : 2022-04-07 15:29 | |
43 | - */ | |
44 | -@Component | |
45 | -@Slf4j | |
46 | -@RequiredArgsConstructor | |
47 | -@ConditionalOnProperty(prefix = "task", name = "switch", havingValue = "on") | |
48 | -public class EvalShopReportTask { | |
49 | - | |
50 | - private final EvalGroupIndicatorTargetHitLogService evalGroupIndicatorTargetHitLogService; | |
51 | - private final EvalGroupIndicatorHitLogService evalGroupIndicatorHitLogService; | |
52 | - private final EvalGroupIndicatorParamService evalGroupIndicatorParamService; | |
53 | - private final EvalShopRankCodeReportService evalShopRankCodeReportService; | |
54 | - private final EvalShopValueReportService evalShopValueReportService; | |
55 | - private final EvalGroupIndicatorService evalGroupIndicatorService; | |
56 | - private final IndicatorUserValueService indicatorUserValueService; | |
57 | - private final EvalIndicatorValueService evalIndicatorValueService; | |
58 | - private final PlatformTransactionManager platformTransactionManager; | |
59 | - private final EvalShopRankReportService evalShopRankReportService; | |
60 | - private final EvalShopReportService evalShopReportService; | |
61 | - private final TransactionDefinition transactionDefinition; | |
62 | - private final EvalShopPoolService evalShopPoolService; | |
63 | - private final EvalGroupRankService evalGroupRankService; | |
64 | - private final EvalGroupService evalGroupService; | |
65 | - private final DistributedLocker distributedLocker; | |
66 | - private final CommonService commonService; | |
67 | - | |
68 | - @Value("${spring.cache.custom.global-prefix}:eval:shop:report") | |
69 | - @Getter | |
70 | - private String evalShopReportDistKey; | |
71 | - | |
72 | - /** | |
73 | - * 考评报表定时任务 | |
74 | - * | |
75 | - */ | |
76 | - @Scheduled(cron = TimeTaskConstant.EVAL_REPORT) | |
77 | - @Transactional(rollbackFor = Exception.class) | |
78 | - public void evalShopReportTask() { | |
79 | - this.evalShopReport(LocalDate.now().minusDays(1)); | |
80 | - } | |
81 | - | |
82 | - /** | |
83 | - * 绩效报表定时任务 | |
84 | - * 1. 遍历考评排名组 | |
85 | - * 2. 创建考评排名组报表 | |
86 | - * 3. 创建考评排名组编码 | |
87 | - * 4. 统计数据 | |
88 | - * | |
89 | - * @param date | |
90 | - */ | |
91 | - public void evalShopReport(LocalDate date) { | |
92 | - Lock lock = distributedLocker.lock(getEvalShopReportDistKey()); | |
93 | - if (! ((RLock) lock).isLocked()) { | |
94 | - return; | |
95 | - } | |
96 | - TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition); | |
97 | - try { | |
98 | - log.info("定时任务【考评人员报表数据抽取】开始执行"); | |
99 | - Map<Long, List<EvalGroupRank>> groupKpiGroupMap = queryShopEffectRank(date); | |
100 | - for (Map.Entry<Long, List<EvalGroupRank>> entry : groupKpiGroupMap.entrySet()) { | |
101 | - for (EvalGroupRank rank : entry.getValue()) { | |
102 | - //清除当月数据(当月只有一条数据) | |
103 | - cleanRankCurMonthData(rank.getId(), date); | |
104 | - //抽取排名组数据 | |
105 | - createRankReport(rank, entry.getKey(), date); | |
106 | - } | |
107 | - } | |
108 | - platformTransactionManager.commit(transactionStatus); | |
109 | - } catch (Exception e){ | |
110 | - platformTransactionManager.rollback(transactionStatus); | |
111 | - log.error("考评人员报表数据抽取失败, " + e.getMessage(), e); | |
112 | - } finally { | |
113 | - lock.unlock(); | |
114 | - } | |
115 | - } | |
116 | - | |
117 | - /** | |
118 | - * 计算排名组报表数据 | |
119 | - * @param rank | |
120 | - * @param groupId | |
121 | - * @param date | |
122 | - */ | |
123 | - public void createRankReport(EvalGroupRank rank, Long groupId, LocalDate date) { | |
124 | - List<EvalGroup> evalGroups = evalGroupService.getAllEffectGroupByEgcs(rank.getEgcs(), date); | |
125 | - List<Long> evalGroupIds = evalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList()); | |
126 | - if (PublicUtil.isEmpty(evalGroupIds)) { | |
127 | - return; | |
128 | - } | |
129 | - List<EvalShopPool> pools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery() | |
130 | - .in(EvalShopPool::getEvalGroupId, evalGroupIds) | |
131 | - .eq(EvalShopPool::getMonthly, YearMonth.from(date)) | |
132 | - .eq(EvalShopPool::getYn, Boolean.TRUE) | |
133 | - ); | |
134 | - if (PublicUtil.isEmpty(pools)) { | |
135 | - return; | |
136 | - } | |
137 | - List<EvalGroupIndicator> evalGroupIndicators = evalGroupIndicatorService.list(Wrappers.<EvalGroupIndicator>lambdaQuery() | |
138 | - .in(EvalGroupIndicator::getEvalGroupId, evalGroupIds) | |
139 | - .eq(EvalGroupIndicator::getYn, Boolean.TRUE) | |
140 | - .orderByAsc(EvalGroupIndicator::getId) | |
141 | - ); | |
142 | - | |
143 | - //排名组 | |
144 | - EvalShopRankReport reportRank = this.saveRankReport(rank, evalGroupIds, evalGroups, date, groupId); | |
145 | - final Long evalShopRankReportId = reportRank.getId(); | |
146 | - //排名组指标编码、人员、门店 | |
147 | - this.saveRankCodeReports(evalGroupIndicators, evalShopRankReportId, date); | |
148 | - //门店维度 | |
149 | - calcShop(pools, evalGroupIndicators, evalShopRankReportId, date); | |
150 | - | |
151 | - } | |
152 | - | |
153 | - public List<EvalShopValueReport> calcShop( | |
154 | - List<EvalShopPool> pools, | |
155 | - List<EvalGroupIndicator> evalGroupIndicators, | |
156 | - Long evalShopRankReportId, | |
157 | - LocalDate date) { | |
158 | - List<EvalShopValueReport> reportShopValues = new ArrayList<>(); | |
159 | - List<Long> shopIds = pools.stream().map(EvalShopPool::getShopId).distinct().collect(Collectors.toList()); | |
160 | - List<Long> shopPoolIds = pools.stream().map(EvalShopPool::getId).collect(Collectors.toList()); | |
161 | - List<Long> evalGroupIndicatorIds = evalGroupIndicators.stream().map(EvalGroupIndicator::getId).collect(Collectors.toList()); | |
162 | - List<EvalGroupIndicatorHitLog> hitLogs = evalGroupIndicatorHitLogService.getHitLogs(evalGroupIndicatorIds, shopPoolIds, EvalScopeEnum.SHOP, date); | |
163 | - Map<Long, List<EvalGroupIndicatorHitLog>> indicatorHitLogMap = hitLogs.stream().collect(Collectors.groupingBy(EvalGroupIndicatorHitLog::getEvalGroupIndicatorId)); | |
164 | - | |
165 | - for (EvalShopPool pool : pools) { | |
166 | - EvalShopReport shopReport = this.convertDim(pool, date, evalShopRankReportId); | |
167 | - evalShopReportService.save(shopReport); | |
168 | - | |
169 | - for (EvalGroupIndicator groupIndicator : evalGroupIndicators) { | |
170 | - if (! pool.getEvalGroupId().equals(groupIndicator.getEvalGroupId())) { | |
171 | - continue; | |
172 | - } | |
173 | - final IndicatorCodeTypeEnum codeType = groupIndicator.getCodeType(); | |
174 | - final Long evalGroupIndicatorId = groupIndicator.getId(); | |
175 | - List<EvalGroupIndicatorParam> params = evalGroupIndicatorParamService.list(Wrappers.<EvalGroupIndicatorParam>lambdaQuery() | |
176 | - .eq(EvalGroupIndicatorParam::getEvalGroupIndicatorId, evalGroupIndicatorId) | |
177 | - .eq(EvalGroupIndicatorParam::getYn, Boolean.TRUE) | |
178 | - ); | |
179 | - | |
180 | - List<EvalGroupIndicatorHitLog> userHitLogs = indicatorHitLogMap.getOrDefault(evalGroupIndicatorId, new ArrayList<>()); | |
181 | - Map<Long, EvalGroupIndicatorHitLog> poolHitLogMap = userHitLogs.stream() | |
182 | - .collect(Collectors.toMap(EvalGroupIndicatorHitLog::getPoolId, Function.identity(), (v1, v2) -> v1)); | |
183 | - BigDecimal hitValue = this.getHitValue(poolHitLogMap, shopReport.getEvalShopPoolId(), groupIndicator.getScoreWay()); | |
184 | - reportShopValues.add(convertDB(shopReport.getId(), groupIndicator, hitValue, date, params)); | |
185 | - //是否有子指标 | |
186 | - if (IndicatorCodeTypeEnum.COMBINE_INDICATOR.equals(codeType)) { | |
187 | - for (EvalGroupIndicatorParam param : params) { | |
188 | - if (TargetTypeEnum.NO.equals(param.getTargetType())) { | |
189 | - Map<Long, BigDecimal> userValueMap = queryShopOriginValue(param, shopIds, date); | |
190 | - BigDecimal value = userValueMap.getOrDefault(shopReport.getShopId(), BigDecimal.ZERO); | |
191 | - reportShopValues.add(convertParamDB(shopReport.getId(), param, value, date)); | |
192 | - } else { | |
193 | - Map<Long, EvalGroupIndicatorTargetHitLog> hitLogMap = queryShopTargetValue(param.getId(), shopPoolIds, date); | |
194 | - BigDecimal value = Optional.ofNullable(hitLogMap.get(shopReport.getEvalShopPoolId())) | |
195 | - .map(EvalGroupIndicatorTargetHitLog::getReachValue).orElse(BigDecimal.ZERO).multiply(Constant.ONE_HUNDRED); | |
196 | - reportShopValues.add(convertParamDB(shopReport.getId(), param, value, date)); | |
197 | - } | |
198 | - } | |
199 | - } | |
200 | - } | |
201 | - } | |
202 | - | |
203 | - | |
204 | - if (PublicUtil.isNotEmpty(reportShopValues)) { | |
205 | - evalShopValueReportService.saveBatch(reportShopValues); | |
206 | - } | |
207 | - return reportShopValues; | |
208 | - } | |
209 | - | |
210 | - public BigDecimal getHitValue(Map<Long, EvalGroupIndicatorHitLog> poolHitLogMap, Long evalShopPoolId, ScoreWayEnum scoreWay) { | |
211 | - Optional<EvalGroupIndicatorHitLog> hitLog = Optional.ofNullable(poolHitLogMap.get(evalShopPoolId)); | |
212 | - BigDecimal value = (ScoreWayEnum.LADDER.equals(scoreWay)) ? | |
213 | - hitLog.map(EvalGroupIndicatorHitLog::getHitLadderValue).orElse(BigDecimal.ZERO) : | |
214 | - hitLog.map(EvalGroupIndicatorHitLog::getHitCommissionValue).orElse(BigDecimal.ZERO); | |
215 | - return value; | |
216 | - } | |
217 | - | |
218 | - public List<EvalShopReport> saveShopReports(List<EvalShopPool> pools, LocalDate date, Long evalShopRankReportId) { | |
219 | - List<EvalShopReport> evalShopReports = new ArrayList<>(); | |
220 | - for (EvalShopPool pool : pools) { | |
221 | - EvalShopReport report = new EvalShopReport(); | |
222 | - report.setDimension(ReportDimensionEnum.SHOP); | |
223 | - report.setEvalShopRankReportId(evalShopRankReportId); | |
224 | - report.setShopId(pool.getShopId()); | |
225 | - report.setShopName(pool.getShopName()); | |
226 | - report.setDataDate(date); | |
227 | - report.setEvalShopPoolId(pool.getId()); | |
228 | - evalShopReports.add(report); | |
229 | - } | |
230 | - evalShopReportService.saveBatch(evalShopReports); | |
231 | - return evalShopReports; | |
232 | - } | |
233 | - | |
234 | - public EvalShopReport convertDim(EvalShopPool pool, LocalDate date, Long evalShopRankReportId) { | |
235 | - EvalShopReport report = new EvalShopReport(); | |
236 | - report.setDimension(ReportDimensionEnum.SHOP); | |
237 | - report.setEvalShopRankReportId(evalShopRankReportId); | |
238 | - report.setShopId(pool.getShopId()); | |
239 | - report.setShopName(pool.getShopName()); | |
240 | - report.setDataDate(date); | |
241 | - report.setEvalShopPoolId(pool.getId()); | |
242 | - return report; | |
243 | - } | |
244 | - | |
245 | - public Map<Long, BigDecimal> queryShopOriginValue(EvalGroupIndicatorParam param, List<Long> shopIds, LocalDate dataDate) { | |
246 | - final String code = param.getCode(); | |
247 | - final IndicatorCodeTypeEnum codeType = param.getCodeType(); | |
248 | - Map<Long, BigDecimal> referValueMap = Maps.newHashMapWithExpectedSize(shopIds.size()); | |
249 | - //无目标 | |
250 | - if (IndicatorCodeTypeEnum.INDICATOR.equals(codeType)) { | |
251 | - List<IndicatorUserValue> indicatorShopValues = indicatorUserValueService.list(Wrappers.<IndicatorUserValue>lambdaQuery() | |
252 | - .eq(IndicatorUserValue::getIndicatorCode, code) | |
253 | - .eq(IndicatorUserValue::getDataDate, dataDate) | |
254 | - .in(IndicatorUserValue::getShopId, shopIds) | |
255 | - .eq(IndicatorUserValue::getDimensionType, DimensionTypeEnum.SHOP) | |
256 | - .eq(IndicatorUserValue::getYn, Boolean.TRUE) | |
257 | - ); | |
258 | - for (IndicatorUserValue userValue : indicatorShopValues) { | |
259 | - referValueMap.put(userValue.getShopId(), commonService.queryIndicatorValueVO(code, userValue, | |
260 | - param.getTargetType(), param.getDataType())); | |
261 | - } | |
262 | - return referValueMap; | |
263 | - } | |
264 | - for (Long shopId : shopIds) { | |
265 | - EvalIndicatorValue evalIndicatorValue = evalIndicatorValueService.queryLastValue(shopId, | |
266 | - DimensionTypeEnum.SHOP, code, dataDate); | |
267 | - referValueMap.put(shopId, commonService.queryEvalIndicatorValueVO(code, evalIndicatorValue, | |
268 | - param.getTargetType(), param.getDataType())); | |
269 | - } | |
270 | - return referValueMap; | |
271 | - } | |
272 | - | |
273 | - public Map<Long, EvalGroupIndicatorTargetHitLog> queryShopTargetValue(Long referId, List<Long> poolIds, LocalDate dataDate) { | |
274 | - List<EvalGroupIndicatorTargetHitLog> targetHitLogs = evalGroupIndicatorTargetHitLogService.list(Wrappers.<EvalGroupIndicatorTargetHitLog>lambdaQuery() | |
275 | - .eq(EvalGroupIndicatorTargetHitLog::getReferId, referId) | |
276 | - .eq(EvalGroupIndicatorTargetHitLog::getTargetType, IndicatorTypeEnum.EXAMINE) | |
277 | - .eq(EvalGroupIndicatorTargetHitLog::getDataDate, dataDate) | |
278 | - .in(EvalGroupIndicatorTargetHitLog::getPoolId, poolIds) | |
279 | - .eq(EvalGroupIndicatorTargetHitLog::getScopeType, EvalScopeEnum.SHOP) | |
280 | - .eq(EvalGroupIndicatorTargetHitLog::getYn, Boolean.TRUE) | |
281 | - ); | |
282 | - return targetHitLogs.stream() | |
283 | - .collect(Collectors.toMap(EvalGroupIndicatorTargetHitLog::getPoolId, Function.identity(), (v1, v2) -> v1)); | |
284 | - } | |
285 | - | |
286 | - public void cleanTodayData(LocalDate date) { | |
287 | - evalShopRankReportService.remove(Wrappers.<EvalShopRankReport>lambdaUpdate() | |
288 | - .eq(EvalShopRankReport::getDataDate, date) | |
289 | - ); | |
290 | - evalShopRankCodeReportService.remove(Wrappers.<EvalShopRankCodeReport>lambdaUpdate() | |
291 | - .eq(EvalShopRankCodeReport::getDataDate, date) | |
292 | - ); | |
293 | - evalShopValueReportService.remove(Wrappers.<EvalShopValueReport>lambdaUpdate() | |
294 | - .eq(EvalShopValueReport::getDataDate, date) | |
295 | - ); | |
296 | - evalShopReportService.remove(Wrappers.<EvalShopReport>lambdaUpdate() | |
297 | - .eq(EvalShopReport::getDataDate, date) | |
298 | - ); | |
299 | - } | |
300 | - | |
301 | - public void cleanRankCurMonthData(Long rankId, LocalDate endDate) { | |
302 | - LocalDate startDate = endDate.with(TemporalAdjusters.firstDayOfMonth()); | |
303 | - List<EvalShopRankReport> rankReports = evalShopRankReportService.list(Wrappers.<EvalShopRankReport>lambdaQuery() | |
304 | - .eq(EvalShopRankReport::getRankId, rankId) | |
305 | - .ge(EvalShopRankReport::getDataDate, startDate) | |
306 | - .le(EvalShopRankReport::getDataDate, endDate) | |
307 | - ); | |
308 | - if (PublicUtil.isEmpty(rankReports)) { | |
309 | - return; | |
310 | - } | |
311 | - List<Long> rankReportIds = rankReports.stream().map(EvalShopRankReport::getId).collect(Collectors.toList()); | |
312 | - evalShopRankReportService.removeByIds(rankReportIds); | |
313 | - evalShopRankCodeReportService.remove(Wrappers.<EvalShopRankCodeReport>lambdaUpdate() | |
314 | - .in(EvalShopRankCodeReport::getEvalShopRankReportId, rankReportIds) | |
315 | - ); | |
316 | - | |
317 | - List<EvalShopReport> userReports = evalShopReportService.list(Wrappers.<EvalShopReport>lambdaQuery() | |
318 | - .in(EvalShopReport::getEvalShopRankReportId, rankReportIds) | |
319 | - ); | |
320 | - List<Long> userReportIds = userReports.stream().map(EvalShopReport::getId).collect(Collectors.toList()); | |
321 | - if (PublicUtil.isEmpty(userReportIds)) { | |
322 | - return; | |
323 | - } | |
324 | - evalShopReportService.removeByIds(userReportIds); | |
325 | - evalShopValueReportService.remove(Wrappers.<EvalShopValueReport>lambdaUpdate() | |
326 | - .in(EvalShopValueReport::getEvalShopReportId, userReportIds) | |
327 | - ); | |
328 | - } | |
329 | - | |
330 | - public List<EvalShopRankCodeReport> saveRankCodeReports(List<EvalGroupIndicator> evalGroupIndicators, Long reportRankId, LocalDate date) { | |
331 | - Set<String> codes = new HashSet<>(); | |
332 | - List<EvalShopRankCodeReport> rankCodes = new ArrayList<>(); | |
333 | - AtomicInteger order = new AtomicInteger(); | |
334 | - for (EvalGroupIndicator groupIndicator : evalGroupIndicators) { | |
335 | - //一个编码只能展示一次 | |
336 | - if (! codes.add(groupIndicator.getCode())) { | |
337 | - continue; | |
338 | - } | |
339 | - rankCodes.add(this.convertRankCodeDB(groupIndicator, date, reportRankId, order)); | |
340 | - | |
341 | - //组合指标 | |
342 | - if (PublicUtil.isNotEmpty(groupIndicator.getCodeType()) && IndicatorCodeTypeEnum.COMBINE_INDICATOR.equals(groupIndicator.getCodeType())) { | |
343 | - //子指标 | |
344 | - List<EvalGroupIndicatorParam> params = evalGroupIndicatorParamService.list(Wrappers.<EvalGroupIndicatorParam>lambdaQuery() | |
345 | - .eq(EvalGroupIndicatorParam::getEvalGroupIndicatorId, groupIndicator.getId()) | |
346 | - .eq(EvalGroupIndicatorParam::getYn, Boolean.TRUE) | |
347 | - ); | |
348 | - for (EvalGroupIndicatorParam indicatorParam : params) { | |
349 | - rankCodes.add(this.convertParamToRankCodeDB(indicatorParam, date, reportRankId, order, groupIndicator)); | |
350 | - } | |
351 | - } | |
352 | - } | |
353 | - evalShopRankCodeReportService.saveBatch(rankCodes); | |
354 | - return rankCodes; | |
355 | - } | |
356 | - | |
357 | - public Map<Long, List<EvalGroupRank>> queryShopEffectRank(LocalDate date) { | |
358 | - List<EvalGroupRank> evalGroupRanks = evalGroupRankService.list(Wrappers.<EvalGroupRank>lambdaQuery() | |
359 | - .ge(EvalGroupRank::getOverTime, date) | |
360 | - .eq(EvalGroupRank::getScopeType, EvalScopeEnum.SHOP) | |
361 | - .eq(EvalGroupRank::getYn, Boolean.TRUE) | |
362 | - ); | |
363 | - return evalGroupRanks.stream().collect(Collectors.groupingBy(EvalGroupRank::getGroupId)); | |
364 | - } | |
365 | - | |
366 | - public EvalShopRankReport saveRankReport(EvalGroupRank rank, List<Long> evalGroupIds, List<EvalGroup> evalGroups, LocalDate date, Long groupId) { | |
367 | - List<Long> shopIds = evalGroups.stream().map(EvalGroup::getShopIds).distinct().collect(ArrayList::new, List::addAll, List::addAll); | |
368 | - EvalShopRankReport reportRank = new EvalShopRankReport(); | |
369 | - reportRank.setRankId(rank.getId()); | |
370 | - reportRank.setRankName(rank.getName()); | |
371 | - reportRank.setEvalGroupIds(evalGroupIds); | |
372 | - reportRank.setShopIds(shopIds); | |
373 | - reportRank.setDataDate(date); | |
374 | - reportRank.setMonthly(YearMonth.from(date)); | |
375 | - reportRank.setGroupId(groupId); | |
376 | - evalShopRankReportService.save(reportRank); | |
377 | - return reportRank; | |
378 | - } | |
379 | - | |
380 | - public EvalShopValueReport convertDB(Long evalShopReportId, EvalGroupIndicator groupIndicator, BigDecimal value, | |
381 | - LocalDate date, List<EvalGroupIndicatorParam> params) { | |
382 | - EvalShopValueReport userValue = new EvalShopValueReport(); | |
383 | - userValue.setEvalShopReportId(evalShopReportId); | |
384 | - userValue.setCode(groupIndicator.getCode()); | |
385 | - userValue.setCodeType(groupIndicator.getCodeType()); | |
386 | - userValue.setValue(Optional.ofNullable(value).orElse(BigDecimal.ZERO)); | |
387 | - userValue.setDataDate(date); | |
388 | - if (IndicatorCodeTypeEnum.COMBINE_INDICATOR.equals(groupIndicator.getCodeType())) { | |
389 | - userValue.setValue(userValue.getValue().multiply(Constant.ONE_HUNDRED)); | |
390 | - } else { | |
391 | - Optional<EvalGroupIndicatorParam> paramOptional = params.stream().findFirst(); | |
392 | - if (paramOptional.isPresent()) { | |
393 | - DataTypeEnum dataType = paramOptional.get().getDataType(); | |
394 | - if (DataTypeEnum.RATIO.equals(dataType)) { | |
395 | - userValue.setValue(userValue.getValue().multiply(Constant.ONE_HUNDRED)); | |
396 | - } | |
397 | - } | |
398 | - } | |
399 | - return userValue; | |
400 | - } | |
401 | - | |
402 | - public EvalShopValueReport convertParamDB(Long evalShopReportId, EvalGroupIndicatorParam param, BigDecimal value, | |
403 | - LocalDate date) { | |
404 | - EvalShopValueReport userValue = new EvalShopValueReport(); | |
405 | - userValue.setEvalShopReportId(evalShopReportId); | |
406 | - userValue.setCode(param.getCode()); | |
407 | - userValue.setCodeType(param.getCodeType()); | |
408 | - userValue.setValue(Optional.ofNullable(value).orElse(BigDecimal.ZERO)); | |
409 | - userValue.setDataDate(date); | |
410 | - return userValue; | |
411 | - } | |
412 | - | |
413 | - public EvalShopRankCodeReport convertRankCodeDB(EvalGroupIndicator groupIndicator, LocalDate date, Long reportRankId, | |
414 | - AtomicInteger order) { | |
415 | - EvalShopRankCodeReport rankCode = new EvalShopRankCodeReport(); | |
416 | - rankCode.setEvalShopRankReportId(reportRankId); | |
417 | - rankCode.setEvalGroupIndicatorId(groupIndicator.getId()); | |
418 | - rankCode.setCode(groupIndicator.getCode()); | |
419 | - rankCode.setCodeType(groupIndicator.getCodeType()); | |
420 | -// String indicatorName = (ScoreWayEnum.LADDER.equals(groupIndicator.getScoreWay())) ? | |
421 | -// groupIndicator.getLadderParamAlias() : groupIndicator.getCommissionParamAlias(); | |
422 | -// if (PublicUtil.isEmpty(indicatorName)) { | |
423 | -// indicatorName = groupIndicator.getName(); | |
1 | +//package cn.fw.morax.server.task; | |
2 | +// | |
3 | +//import cn.fw.common.cache.locker.DistributedLocker; | |
4 | +//import cn.fw.morax.common.constant.Constant; | |
5 | +//import cn.fw.morax.common.constant.TimeTaskConstant; | |
6 | +//import cn.fw.morax.common.utils.PublicUtil; | |
7 | +//import cn.fw.morax.domain.db.eval.*; | |
8 | +//import cn.fw.morax.domain.db.kpi.IndicatorUserValue; | |
9 | +//import cn.fw.morax.domain.enums.*; | |
10 | +//import cn.fw.morax.service.biz.CommonService; | |
11 | +//import cn.fw.morax.service.data.eval.*; | |
12 | +//import cn.fw.morax.service.data.kpi.IndicatorUserValueService; | |
13 | +//import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |
14 | +//import com.google.common.collect.Maps; | |
15 | +//import lombok.Getter; | |
16 | +//import lombok.RequiredArgsConstructor; | |
17 | +//import lombok.extern.slf4j.Slf4j; | |
18 | +//import org.redisson.api.RLock; | |
19 | +//import org.springframework.beans.factory.annotation.Value; | |
20 | +//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; | |
21 | +//import org.springframework.scheduling.annotation.Scheduled; | |
22 | +//import org.springframework.stereotype.Component; | |
23 | +//import org.springframework.transaction.PlatformTransactionManager; | |
24 | +//import org.springframework.transaction.TransactionDefinition; | |
25 | +//import org.springframework.transaction.TransactionStatus; | |
26 | +//import org.springframework.transaction.annotation.Transactional; | |
27 | +// | |
28 | +//import java.math.BigDecimal; | |
29 | +//import java.time.LocalDate; | |
30 | +//import java.time.YearMonth; | |
31 | +//import java.time.temporal.TemporalAdjusters; | |
32 | +//import java.util.*; | |
33 | +//import java.util.concurrent.atomic.AtomicInteger; | |
34 | +//import java.util.concurrent.locks.Lock; | |
35 | +//import java.util.function.Function; | |
36 | +//import java.util.stream.Collectors; | |
37 | +// | |
38 | +///** | |
39 | +// * @author : jiangchao | |
40 | +// * @className : KpiReportRatioTask | |
41 | +// * @description : 绩效报表定时器 | |
42 | +// * @date : 2022-04-07 15:29 | |
43 | +// */ | |
44 | +//@Component | |
45 | +//@Slf4j | |
46 | +//@RequiredArgsConstructor | |
47 | +//@ConditionalOnProperty(prefix = "task", name = "switch", havingValue = "on") | |
48 | +//public class EvalShopReportTask { | |
49 | +// | |
50 | +// private final EvalGroupIndicatorTargetHitLogService evalGroupIndicatorTargetHitLogService; | |
51 | +// private final EvalGroupIndicatorHitLogService evalGroupIndicatorHitLogService; | |
52 | +// private final EvalGroupIndicatorParamService evalGroupIndicatorParamService; | |
53 | +// private final EvalShopRankCodeReportService evalShopRankCodeReportService; | |
54 | +// private final EvalShopValueReportService evalShopValueReportService; | |
55 | +// private final EvalGroupIndicatorService evalGroupIndicatorService; | |
56 | +// private final IndicatorUserValueService indicatorUserValueService; | |
57 | +// private final EvalIndicatorValueService evalIndicatorValueService; | |
58 | +// private final PlatformTransactionManager platformTransactionManager; | |
59 | +// private final EvalShopRankReportService evalShopRankReportService; | |
60 | +// private final EvalShopReportService evalShopReportService; | |
61 | +// private final TransactionDefinition transactionDefinition; | |
62 | +// private final EvalShopPoolService evalShopPoolService; | |
63 | +// private final EvalGroupRankService evalGroupRankService; | |
64 | +// private final EvalGroupService evalGroupService; | |
65 | +// private final DistributedLocker distributedLocker; | |
66 | +// private final CommonService commonService; | |
67 | +// | |
68 | +// @Value("${spring.cache.custom.global-prefix}:eval:shop:report") | |
69 | +// @Getter | |
70 | +// private String evalShopReportDistKey; | |
71 | +// | |
72 | +// /** | |
73 | +// * 考评报表定时任务 | |
74 | +// * | |
75 | +// */ | |
76 | +// @Scheduled(cron = TimeTaskConstant.EVAL_REPORT) | |
77 | +// @Transactional(rollbackFor = Exception.class) | |
78 | +// public void evalShopReportTask() { | |
79 | +// this.evalShopReport(LocalDate.now().minusDays(1)); | |
80 | +// } | |
81 | +// | |
82 | +// /** | |
83 | +// * 绩效报表定时任务 | |
84 | +// * 1. 遍历考评排名组 | |
85 | +// * 2. 创建考评排名组报表 | |
86 | +// * 3. 创建考评排名组编码 | |
87 | +// * 4. 统计数据 | |
88 | +// * | |
89 | +// * @param date | |
90 | +// */ | |
91 | +// public void evalShopReport(LocalDate date) { | |
92 | +// Lock lock = distributedLocker.lock(getEvalShopReportDistKey()); | |
93 | +// if (! ((RLock) lock).isLocked()) { | |
94 | +// return; | |
424 | 95 | // } |
425 | -// rankCode.setIndicatorName(indicatorName); | |
426 | - rankCode.setIndicatorName(groupIndicator.getName()); | |
427 | - rankCode.setDataDate(date); | |
428 | - rankCode.setOrderNum(order.incrementAndGet()); | |
429 | - return rankCode; | |
430 | - } | |
431 | - | |
432 | - public EvalShopRankCodeReport convertParamToRankCodeDB(EvalGroupIndicatorParam indicatorParam, LocalDate date, Long reportRankId, | |
433 | - AtomicInteger order, EvalGroupIndicator groupIndicator) { | |
434 | - EvalShopRankCodeReport rankCode = new EvalShopRankCodeReport(); | |
435 | - rankCode.setEvalShopRankReportId(reportRankId); | |
436 | - rankCode.setEvalGroupIndicatorId(indicatorParam.getEvalGroupIndicatorId()); | |
437 | - rankCode.setCode(indicatorParam.getCode()); | |
438 | - rankCode.setCodeType(indicatorParam.getCodeType()); | |
439 | - rankCode.setIndicatorName(indicatorParam.getName()); | |
440 | - if (PublicUtil.isNotEmpty(groupIndicator.getCode())) { | |
441 | - rankCode.setParentCode(groupIndicator.getCode()); | |
442 | - } | |
443 | - rankCode.setDataDate(date); | |
444 | - rankCode.setOrderNum(order.incrementAndGet()); | |
445 | - return rankCode; | |
446 | - } | |
447 | - | |
448 | - | |
449 | -} | |
96 | +// TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition); | |
97 | +// try { | |
98 | +// log.info("定时任务【考评人员报表数据抽取】开始执行"); | |
99 | +// Map<Long, List<EvalGroupRank>> groupKpiGroupMap = queryShopEffectRank(date); | |
100 | +// for (Map.Entry<Long, List<EvalGroupRank>> entry : groupKpiGroupMap.entrySet()) { | |
101 | +// for (EvalGroupRank rank : entry.getValue()) { | |
102 | +// //清除当月数据(当月只有一条数据) | |
103 | +// cleanRankCurMonthData(rank.getId(), date); | |
104 | +// //抽取排名组数据 | |
105 | +// createRankReport(rank, entry.getKey(), date); | |
106 | +// } | |
107 | +// } | |
108 | +// platformTransactionManager.commit(transactionStatus); | |
109 | +// } catch (Exception e){ | |
110 | +// platformTransactionManager.rollback(transactionStatus); | |
111 | +// log.error("考评人员报表数据抽取失败, " + e.getMessage(), e); | |
112 | +// } finally { | |
113 | +// lock.unlock(); | |
114 | +// } | |
115 | +// } | |
116 | +// | |
117 | +// /** | |
118 | +// * 计算排名组报表数据 | |
119 | +// * @param rank | |
120 | +// * @param groupId | |
121 | +// * @param date | |
122 | +// */ | |
123 | +// public void createRankReport(EvalGroupRank rank, Long groupId, LocalDate date) { | |
124 | +// List<EvalGroup> evalGroups = evalGroupService.getByRankId(rank.getId()); | |
125 | +// List<Long> evalGroupIds = evalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList()); | |
126 | +// if (PublicUtil.isEmpty(evalGroupIds)) { | |
127 | +// return; | |
128 | +// } | |
129 | +// List<EvalShopPool> pools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery() | |
130 | +// .in(EvalShopPool::getEvalGroupId, evalGroupIds) | |
131 | +// .eq(EvalShopPool::getMonthly, YearMonth.from(date)) | |
132 | +// .eq(EvalShopPool::getYn, Boolean.TRUE) | |
133 | +// ); | |
134 | +// if (PublicUtil.isEmpty(pools)) { | |
135 | +// return; | |
136 | +// } | |
137 | +// List<EvalGroupIndicator> evalGroupIndicators = evalGroupIndicatorService.list(Wrappers.<EvalGroupIndicator>lambdaQuery() | |
138 | +// .in(EvalGroupIndicator::getEvalGroupId, evalGroupIds) | |
139 | +// .eq(EvalGroupIndicator::getYn, Boolean.TRUE) | |
140 | +// .orderByAsc(EvalGroupIndicator::getId) | |
141 | +// ); | |
142 | +// | |
143 | +// //排名组 | |
144 | +// EvalShopRankReport reportRank = this.saveRankReport(rank, evalGroupIds, evalGroups, date, groupId); | |
145 | +// final Long evalShopRankReportId = reportRank.getId(); | |
146 | +// //排名组指标编码、人员、门店 | |
147 | +// this.saveRankCodeReports(evalGroupIndicators, evalShopRankReportId, date); | |
148 | +// //门店维度 | |
149 | +// calcShop(pools, evalGroupIndicators, evalShopRankReportId, date); | |
150 | +// | |
151 | +// } | |
152 | +// | |
153 | +// public List<EvalShopValueReport> calcShop( | |
154 | +// List<EvalShopPool> pools, | |
155 | +// List<EvalGroupIndicator> evalGroupIndicators, | |
156 | +// Long evalShopRankReportId, | |
157 | +// LocalDate date) { | |
158 | +// List<EvalShopValueReport> reportShopValues = new ArrayList<>(); | |
159 | +// List<Long> shopIds = pools.stream().map(EvalShopPool::getShopId).distinct().collect(Collectors.toList()); | |
160 | +// List<Long> shopPoolIds = pools.stream().map(EvalShopPool::getId).collect(Collectors.toList()); | |
161 | +// List<Long> evalGroupIndicatorIds = evalGroupIndicators.stream().map(EvalGroupIndicator::getId).collect(Collectors.toList()); | |
162 | +// List<EvalGroupIndicatorHitLog> hitLogs = evalGroupIndicatorHitLogService.getHitLogs(evalGroupIndicatorIds, shopPoolIds, EvalScopeEnum.SHOP, date); | |
163 | +// Map<Long, List<EvalGroupIndicatorHitLog>> indicatorHitLogMap = hitLogs.stream().collect(Collectors.groupingBy(EvalGroupIndicatorHitLog::getEvalGroupIndicatorId)); | |
164 | +// | |
165 | +// for (EvalShopPool pool : pools) { | |
166 | +// EvalShopReport shopReport = this.convertDim(pool, date, evalShopRankReportId); | |
167 | +// evalShopReportService.save(shopReport); | |
168 | +// | |
169 | +// for (EvalGroupIndicator groupIndicator : evalGroupIndicators) { | |
170 | +// if (! pool.getEvalGroupId().equals(groupIndicator.getEvalGroupId())) { | |
171 | +// continue; | |
172 | +// } | |
173 | +// final IndicatorCodeTypeEnum codeType = groupIndicator.getCodeType(); | |
174 | +// final Long evalGroupIndicatorId = groupIndicator.getId(); | |
175 | +// List<EvalGroupIndicatorParam> params = evalGroupIndicatorParamService.list(Wrappers.<EvalGroupIndicatorParam>lambdaQuery() | |
176 | +// .eq(EvalGroupIndicatorParam::getEvalGroupIndicatorId, evalGroupIndicatorId) | |
177 | +// .eq(EvalGroupIndicatorParam::getYn, Boolean.TRUE) | |
178 | +// ); | |
179 | +// | |
180 | +// List<EvalGroupIndicatorHitLog> userHitLogs = indicatorHitLogMap.getOrDefault(evalGroupIndicatorId, new ArrayList<>()); | |
181 | +// Map<Long, EvalGroupIndicatorHitLog> poolHitLogMap = userHitLogs.stream() | |
182 | +// .collect(Collectors.toMap(EvalGroupIndicatorHitLog::getPoolId, Function.identity(), (v1, v2) -> v1)); | |
183 | +// BigDecimal hitValue = this.getHitValue(poolHitLogMap, shopReport.getEvalShopPoolId(), groupIndicator.getScoreWay()); | |
184 | +// reportShopValues.add(convertDB(shopReport.getId(), groupIndicator, hitValue, date, params)); | |
185 | +// //是否有子指标 | |
186 | +// if (IndicatorCodeTypeEnum.COMBINE_INDICATOR.equals(codeType)) { | |
187 | +// for (EvalGroupIndicatorParam param : params) { | |
188 | +// if (TargetTypeEnum.NO.equals(param.getTargetType())) { | |
189 | +// Map<Long, BigDecimal> userValueMap = queryShopOriginValue(param, shopIds, date); | |
190 | +// BigDecimal value = userValueMap.getOrDefault(shopReport.getShopId(), BigDecimal.ZERO); | |
191 | +// reportShopValues.add(convertParamDB(shopReport.getId(), param, value, date)); | |
192 | +// } else { | |
193 | +// Map<Long, EvalGroupIndicatorTargetHitLog> hitLogMap = queryShopTargetValue(param.getId(), shopPoolIds, date); | |
194 | +// BigDecimal value = Optional.ofNullable(hitLogMap.get(shopReport.getEvalShopPoolId())) | |
195 | +// .map(EvalGroupIndicatorTargetHitLog::getReachValue).orElse(BigDecimal.ZERO).multiply(Constant.ONE_HUNDRED); | |
196 | +// reportShopValues.add(convertParamDB(shopReport.getId(), param, value, date)); | |
197 | +// } | |
198 | +// } | |
199 | +// } | |
200 | +// } | |
201 | +// } | |
202 | +// | |
203 | +// | |
204 | +// if (PublicUtil.isNotEmpty(reportShopValues)) { | |
205 | +// evalShopValueReportService.saveBatch(reportShopValues); | |
206 | +// } | |
207 | +// return reportShopValues; | |
208 | +// } | |
209 | +// | |
210 | +// public BigDecimal getHitValue(Map<Long, EvalGroupIndicatorHitLog> poolHitLogMap, Long evalShopPoolId, ScoreWayEnum scoreWay) { | |
211 | +// Optional<EvalGroupIndicatorHitLog> hitLog = Optional.ofNullable(poolHitLogMap.get(evalShopPoolId)); | |
212 | +// BigDecimal value = (ScoreWayEnum.LADDER.equals(scoreWay)) ? | |
213 | +// hitLog.map(EvalGroupIndicatorHitLog::getHitLadderValue).orElse(BigDecimal.ZERO) : | |
214 | +// hitLog.map(EvalGroupIndicatorHitLog::getHitCommissionValue).orElse(BigDecimal.ZERO); | |
215 | +// return value; | |
216 | +// } | |
217 | +// | |
218 | +// public List<EvalShopReport> saveShopReports(List<EvalShopPool> pools, LocalDate date, Long evalShopRankReportId) { | |
219 | +// List<EvalShopReport> evalShopReports = new ArrayList<>(); | |
220 | +// for (EvalShopPool pool : pools) { | |
221 | +// EvalShopReport report = new EvalShopReport(); | |
222 | +// report.setDimension(ReportDimensionEnum.SHOP); | |
223 | +// report.setEvalShopRankReportId(evalShopRankReportId); | |
224 | +// report.setShopId(pool.getShopId()); | |
225 | +// report.setShopName(pool.getShopName()); | |
226 | +// report.setDataDate(date); | |
227 | +// report.setEvalShopPoolId(pool.getId()); | |
228 | +// evalShopReports.add(report); | |
229 | +// } | |
230 | +// evalShopReportService.saveBatch(evalShopReports); | |
231 | +// return evalShopReports; | |
232 | +// } | |
233 | +// | |
234 | +// public EvalShopReport convertDim(EvalShopPool pool, LocalDate date, Long evalShopRankReportId) { | |
235 | +// EvalShopReport report = new EvalShopReport(); | |
236 | +// report.setDimension(ReportDimensionEnum.SHOP); | |
237 | +// report.setEvalShopRankReportId(evalShopRankReportId); | |
238 | +// report.setShopId(pool.getShopId()); | |
239 | +// report.setShopName(pool.getShopName()); | |
240 | +// report.setDataDate(date); | |
241 | +// report.setEvalShopPoolId(pool.getId()); | |
242 | +// return report; | |
243 | +// } | |
244 | +// | |
245 | +// public Map<Long, BigDecimal> queryShopOriginValue(EvalGroupIndicatorParam param, List<Long> shopIds, LocalDate dataDate) { | |
246 | +// final String code = param.getCode(); | |
247 | +// final IndicatorCodeTypeEnum codeType = param.getCodeType(); | |
248 | +// Map<Long, BigDecimal> referValueMap = Maps.newHashMapWithExpectedSize(shopIds.size()); | |
249 | +// //无目标 | |
250 | +// if (IndicatorCodeTypeEnum.INDICATOR.equals(codeType)) { | |
251 | +// List<IndicatorUserValue> indicatorShopValues = indicatorUserValueService.list(Wrappers.<IndicatorUserValue>lambdaQuery() | |
252 | +// .eq(IndicatorUserValue::getIndicatorCode, code) | |
253 | +// .eq(IndicatorUserValue::getDataDate, dataDate) | |
254 | +// .in(IndicatorUserValue::getShopId, shopIds) | |
255 | +// .eq(IndicatorUserValue::getDimensionType, DimensionTypeEnum.SHOP) | |
256 | +// .eq(IndicatorUserValue::getYn, Boolean.TRUE) | |
257 | +// ); | |
258 | +// for (IndicatorUserValue userValue : indicatorShopValues) { | |
259 | +// referValueMap.put(userValue.getShopId(), commonService.queryIndicatorValueVO(code, userValue, | |
260 | +// param.getTargetType(), param.getDataType())); | |
261 | +// } | |
262 | +// return referValueMap; | |
263 | +// } | |
264 | +// for (Long shopId : shopIds) { | |
265 | +// EvalIndicatorValue evalIndicatorValue = evalIndicatorValueService.queryLastValue(shopId, | |
266 | +// DimensionTypeEnum.SHOP, code, dataDate); | |
267 | +// referValueMap.put(shopId, commonService.queryEvalIndicatorValueVO(code, evalIndicatorValue, | |
268 | +// param.getTargetType(), param.getDataType())); | |
269 | +// } | |
270 | +// return referValueMap; | |
271 | +// } | |
272 | +// | |
273 | +// public Map<Long, EvalGroupIndicatorTargetHitLog> queryShopTargetValue(Long referId, List<Long> poolIds, LocalDate dataDate) { | |
274 | +// List<EvalGroupIndicatorTargetHitLog> targetHitLogs = evalGroupIndicatorTargetHitLogService.list(Wrappers.<EvalGroupIndicatorTargetHitLog>lambdaQuery() | |
275 | +// .eq(EvalGroupIndicatorTargetHitLog::getReferId, referId) | |
276 | +// .eq(EvalGroupIndicatorTargetHitLog::getTargetType, IndicatorTypeEnum.EXAMINE) | |
277 | +// .eq(EvalGroupIndicatorTargetHitLog::getDataDate, dataDate) | |
278 | +// .in(EvalGroupIndicatorTargetHitLog::getPoolId, poolIds) | |
279 | +// .eq(EvalGroupIndicatorTargetHitLog::getScopeType, EvalScopeEnum.SHOP) | |
280 | +// .eq(EvalGroupIndicatorTargetHitLog::getYn, Boolean.TRUE) | |
281 | +// ); | |
282 | +// return targetHitLogs.stream() | |
283 | +// .collect(Collectors.toMap(EvalGroupIndicatorTargetHitLog::getPoolId, Function.identity(), (v1, v2) -> v1)); | |
284 | +// } | |
285 | +// | |
286 | +// public void cleanTodayData(LocalDate date) { | |
287 | +// evalShopRankReportService.remove(Wrappers.<EvalShopRankReport>lambdaUpdate() | |
288 | +// .eq(EvalShopRankReport::getDataDate, date) | |
289 | +// ); | |
290 | +// evalShopRankCodeReportService.remove(Wrappers.<EvalShopRankCodeReport>lambdaUpdate() | |
291 | +// .eq(EvalShopRankCodeReport::getDataDate, date) | |
292 | +// ); | |
293 | +// evalShopValueReportService.remove(Wrappers.<EvalShopValueReport>lambdaUpdate() | |
294 | +// .eq(EvalShopValueReport::getDataDate, date) | |
295 | +// ); | |
296 | +// evalShopReportService.remove(Wrappers.<EvalShopReport>lambdaUpdate() | |
297 | +// .eq(EvalShopReport::getDataDate, date) | |
298 | +// ); | |
299 | +// } | |
300 | +// | |
301 | +// public void cleanRankCurMonthData(Long rankId, LocalDate endDate) { | |
302 | +// LocalDate startDate = endDate.with(TemporalAdjusters.firstDayOfMonth()); | |
303 | +// List<EvalShopRankReport> rankReports = evalShopRankReportService.list(Wrappers.<EvalShopRankReport>lambdaQuery() | |
304 | +// .eq(EvalShopRankReport::getRankId, rankId) | |
305 | +// .ge(EvalShopRankReport::getDataDate, startDate) | |
306 | +// .le(EvalShopRankReport::getDataDate, endDate) | |
307 | +// ); | |
308 | +// if (PublicUtil.isEmpty(rankReports)) { | |
309 | +// return; | |
310 | +// } | |
311 | +// List<Long> rankReportIds = rankReports.stream().map(EvalShopRankReport::getId).collect(Collectors.toList()); | |
312 | +// evalShopRankReportService.removeByIds(rankReportIds); | |
313 | +// evalShopRankCodeReportService.remove(Wrappers.<EvalShopRankCodeReport>lambdaUpdate() | |
314 | +// .in(EvalShopRankCodeReport::getEvalShopRankReportId, rankReportIds) | |
315 | +// ); | |
316 | +// | |
317 | +// List<EvalShopReport> userReports = evalShopReportService.list(Wrappers.<EvalShopReport>lambdaQuery() | |
318 | +// .in(EvalShopReport::getEvalShopRankReportId, rankReportIds) | |
319 | +// ); | |
320 | +// List<Long> userReportIds = userReports.stream().map(EvalShopReport::getId).collect(Collectors.toList()); | |
321 | +// if (PublicUtil.isEmpty(userReportIds)) { | |
322 | +// return; | |
323 | +// } | |
324 | +// evalShopReportService.removeByIds(userReportIds); | |
325 | +// evalShopValueReportService.remove(Wrappers.<EvalShopValueReport>lambdaUpdate() | |
326 | +// .in(EvalShopValueReport::getEvalShopReportId, userReportIds) | |
327 | +// ); | |
328 | +// } | |
329 | +// | |
330 | +// public List<EvalShopRankCodeReport> saveRankCodeReports(List<EvalGroupIndicator> evalGroupIndicators, Long reportRankId, LocalDate date) { | |
331 | +// Set<String> codes = new HashSet<>(); | |
332 | +// List<EvalShopRankCodeReport> rankCodes = new ArrayList<>(); | |
333 | +// AtomicInteger order = new AtomicInteger(); | |
334 | +// for (EvalGroupIndicator groupIndicator : evalGroupIndicators) { | |
335 | +// //一个编码只能展示一次 | |
336 | +// if (! codes.add(groupIndicator.getCode())) { | |
337 | +// continue; | |
338 | +// } | |
339 | +// rankCodes.add(this.convertRankCodeDB(groupIndicator, date, reportRankId, order)); | |
340 | +// | |
341 | +// //组合指标 | |
342 | +// if (PublicUtil.isNotEmpty(groupIndicator.getCodeType()) && IndicatorCodeTypeEnum.COMBINE_INDICATOR.equals(groupIndicator.getCodeType())) { | |
343 | +// //子指标 | |
344 | +// List<EvalGroupIndicatorParam> params = evalGroupIndicatorParamService.list(Wrappers.<EvalGroupIndicatorParam>lambdaQuery() | |
345 | +// .eq(EvalGroupIndicatorParam::getEvalGroupIndicatorId, groupIndicator.getId()) | |
346 | +// .eq(EvalGroupIndicatorParam::getYn, Boolean.TRUE) | |
347 | +// ); | |
348 | +// for (EvalGroupIndicatorParam indicatorParam : params) { | |
349 | +// rankCodes.add(this.convertParamToRankCodeDB(indicatorParam, date, reportRankId, order, groupIndicator)); | |
350 | +// } | |
351 | +// } | |
352 | +// } | |
353 | +// evalShopRankCodeReportService.saveBatch(rankCodes); | |
354 | +// return rankCodes; | |
355 | +// } | |
356 | +// | |
357 | +// public Map<Long, List<EvalGroupRank>> queryShopEffectRank(LocalDate date) { | |
358 | +// List<EvalGroupRank> evalGroupRanks = evalGroupRankService.list(Wrappers.<EvalGroupRank>lambdaQuery() | |
359 | +// .ge(EvalGroupRank::getOverTime, date) | |
360 | +// .eq(EvalGroupRank::getScopeType, EvalScopeEnum.SHOP) | |
361 | +// .eq(EvalGroupRank::getYn, Boolean.TRUE) | |
362 | +// ); | |
363 | +// return evalGroupRanks.stream().collect(Collectors.groupingBy(EvalGroupRank::getGroupId)); | |
364 | +// } | |
365 | +// | |
366 | +// public EvalShopRankReport saveRankReport(EvalGroupRank rank, List<Long> evalGroupIds, List<EvalGroup> evalGroups, LocalDate date, Long groupId) { | |
367 | +// List<Long> shopIds = evalGroups.stream().map(EvalGroup::getShopIds).distinct().collect(ArrayList::new, List::addAll, List::addAll); | |
368 | +// EvalShopRankReport reportRank = new EvalShopRankReport(); | |
369 | +// reportRank.setRankId(rank.getId()); | |
370 | +// reportRank.setRankName(rank.getName()); | |
371 | +// reportRank.setEvalGroupIds(evalGroupIds); | |
372 | +// reportRank.setShopIds(shopIds); | |
373 | +// reportRank.setDataDate(date); | |
374 | +// reportRank.setMonthly(YearMonth.from(date)); | |
375 | +// reportRank.setGroupId(groupId); | |
376 | +// evalShopRankReportService.save(reportRank); | |
377 | +// return reportRank; | |
378 | +// } | |
379 | +// | |
380 | +// public EvalShopValueReport convertDB(Long evalShopReportId, EvalGroupIndicator groupIndicator, BigDecimal value, | |
381 | +// LocalDate date, List<EvalGroupIndicatorParam> params) { | |
382 | +// EvalShopValueReport userValue = new EvalShopValueReport(); | |
383 | +// userValue.setEvalShopReportId(evalShopReportId); | |
384 | +// userValue.setCode(groupIndicator.getCode()); | |
385 | +// userValue.setCodeType(groupIndicator.getCodeType()); | |
386 | +// userValue.setValue(Optional.ofNullable(value).orElse(BigDecimal.ZERO)); | |
387 | +// userValue.setDataDate(date); | |
388 | +// if (IndicatorCodeTypeEnum.COMBINE_INDICATOR.equals(groupIndicator.getCodeType())) { | |
389 | +// userValue.setValue(userValue.getValue().multiply(Constant.ONE_HUNDRED)); | |
390 | +// } else { | |
391 | +// Optional<EvalGroupIndicatorParam> paramOptional = params.stream().findFirst(); | |
392 | +// if (paramOptional.isPresent()) { | |
393 | +// DataTypeEnum dataType = paramOptional.get().getDataType(); | |
394 | +// if (DataTypeEnum.RATIO.equals(dataType)) { | |
395 | +// userValue.setValue(userValue.getValue().multiply(Constant.ONE_HUNDRED)); | |
396 | +// } | |
397 | +// } | |
398 | +// } | |
399 | +// return userValue; | |
400 | +// } | |
401 | +// | |
402 | +// public EvalShopValueReport convertParamDB(Long evalShopReportId, EvalGroupIndicatorParam param, BigDecimal value, | |
403 | +// LocalDate date) { | |
404 | +// EvalShopValueReport userValue = new EvalShopValueReport(); | |
405 | +// userValue.setEvalShopReportId(evalShopReportId); | |
406 | +// userValue.setCode(param.getCode()); | |
407 | +// userValue.setCodeType(param.getCodeType()); | |
408 | +// userValue.setValue(Optional.ofNullable(value).orElse(BigDecimal.ZERO)); | |
409 | +// userValue.setDataDate(date); | |
410 | +// return userValue; | |
411 | +// } | |
412 | +// | |
413 | +// public EvalShopRankCodeReport convertRankCodeDB(EvalGroupIndicator groupIndicator, LocalDate date, Long reportRankId, | |
414 | +// AtomicInteger order) { | |
415 | +// EvalShopRankCodeReport rankCode = new EvalShopRankCodeReport(); | |
416 | +// rankCode.setEvalShopRankReportId(reportRankId); | |
417 | +// rankCode.setEvalGroupIndicatorId(groupIndicator.getId()); | |
418 | +// rankCode.setCode(groupIndicator.getCode()); | |
419 | +// rankCode.setCodeType(groupIndicator.getCodeType()); | |
420 | +//// String indicatorName = (ScoreWayEnum.LADDER.equals(groupIndicator.getScoreWay())) ? | |
421 | +//// groupIndicator.getLadderParamAlias() : groupIndicator.getCommissionParamAlias(); | |
422 | +//// if (PublicUtil.isEmpty(indicatorName)) { | |
423 | +//// indicatorName = groupIndicator.getName(); | |
424 | +//// } | |
425 | +//// rankCode.setIndicatorName(indicatorName); | |
426 | +// rankCode.setIndicatorName(groupIndicator.getName()); | |
427 | +// rankCode.setDataDate(date); | |
428 | +// rankCode.setOrderNum(order.incrementAndGet()); | |
429 | +// return rankCode; | |
430 | +// } | |
431 | +// | |
432 | +// public EvalShopRankCodeReport convertParamToRankCodeDB(EvalGroupIndicatorParam indicatorParam, LocalDate date, Long reportRankId, | |
433 | +// AtomicInteger order, EvalGroupIndicator groupIndicator) { | |
434 | +// EvalShopRankCodeReport rankCode = new EvalShopRankCodeReport(); | |
435 | +// rankCode.setEvalShopRankReportId(reportRankId); | |
436 | +// rankCode.setEvalGroupIndicatorId(indicatorParam.getEvalGroupIndicatorId()); | |
437 | +// rankCode.setCode(indicatorParam.getCode()); | |
438 | +// rankCode.setCodeType(indicatorParam.getCodeType()); | |
439 | +// rankCode.setIndicatorName(indicatorParam.getName()); | |
440 | +// if (PublicUtil.isNotEmpty(groupIndicator.getCode())) { | |
441 | +// rankCode.setParentCode(groupIndicator.getCode()); | |
442 | +// } | |
443 | +// rankCode.setDataDate(date); | |
444 | +// rankCode.setOrderNum(order.incrementAndGet()); | |
445 | +// return rankCode; | |
446 | +// } | |
447 | +// | |
448 | +// | |
449 | +//} | ... | ... |
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java
... | ... | @@ -121,7 +121,7 @@ public class EvalUserReportTask { |
121 | 121 | * @param date |
122 | 122 | */ |
123 | 123 | public void createRankReport(EvalGroupRank rank, Long groupId, LocalDate date) { |
124 | - List<EvalGroup> evalGroups = evalGroupService.getAllEffectGroupByEgcs(rank.getEgcs(), date); | |
124 | + List<EvalGroup> evalGroups = evalGroupService.getEffectsByRankId(rank.getId(), date); | |
125 | 125 | List<Long> evalGroupIds = evalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList()); |
126 | 126 | if (PublicUtil.isEmpty(evalGroupIds)) { |
127 | 127 | return; |
... | ... | @@ -403,7 +403,6 @@ public class EvalUserReportTask { |
403 | 403 | public Map<Long, List<EvalGroupRank>> queryStaffEffectRank(LocalDate date) { |
404 | 404 | List<EvalGroupRank> evalGroupRanks = evalGroupRankService.list(Wrappers.<EvalGroupRank>lambdaQuery() |
405 | 405 | .ge(EvalGroupRank::getOverTime, date) |
406 | - .eq(EvalGroupRank::getScopeType, EvalScopeEnum.STAFF) | |
407 | 406 | .eq(EvalGroupRank::getYn, Boolean.TRUE) |
408 | 407 | ); |
409 | 408 | return evalGroupRanks.stream().collect(Collectors.groupingBy(EvalGroupRank::getGroupId)); | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/ApprovalBizService.java
... | ... | @@ -12,8 +12,8 @@ import cn.fw.morax.domain.db.eval.EvalRewardDist; |
12 | 12 | import cn.fw.morax.domain.db.kpi.KpiGroup; |
13 | 13 | import cn.fw.morax.domain.db.kpi.KpiStarSpecialRule; |
14 | 14 | import cn.fw.morax.domain.db.salary.SalaryGroup; |
15 | -import cn.fw.morax.domain.dto.eval.EvalDTO; | |
16 | 15 | import cn.fw.morax.domain.dto.eval.EvalGroupDTO; |
16 | +import cn.fw.morax.domain.dto.eval.EvalGroupRankDTO; | |
17 | 17 | import cn.fw.morax.domain.dto.kpi.KpiGroupDTO; |
18 | 18 | import cn.fw.morax.domain.dto.kpi.KpiGroupRankDTO; |
19 | 19 | import cn.fw.morax.domain.dto.salary.SalaryGroupDTO; |
... | ... | @@ -447,7 +447,7 @@ public class ApprovalBizService { |
447 | 447 | * 提交审批 |
448 | 448 | */ |
449 | 449 | @Transactional(rollbackFor = Exception.class) |
450 | - public void applyApproveEvalDraft(EvalDTO eval, Integer evalGroupSize, SettingDraft settingDraft, LoginAuthBean user) { | |
450 | + public void applyApproveEvalDraft(EvalGroupRankDTO evalGroupRankDto, Integer evalGroupSize, SettingDraft settingDraft, LoginAuthBean user) { | |
451 | 451 | Date expTime = PublicUtil.getExpTimeOfMonth(LocalDate.now()); |
452 | 452 | |
453 | 453 | //员工基础信息 |
... | ... | @@ -469,12 +469,12 @@ public class ApprovalBizService { |
469 | 469 | }}; |
470 | 470 | |
471 | 471 | FlowDto flowDto = FlowDto.builder() |
472 | - .groupId(eval.getGroupId()) | |
472 | + .groupId(evalGroupRankDto.getGroupId()) | |
473 | 473 | .approvalNo(flowVal.getEvalGroupConfig()) |
474 | 474 | .briefContent(Lists.newArrayList( |
475 | 475 | "申请人:" + user.getUserName(), |
476 | - "考评/活动名称:" + eval.getName(), | |
477 | - "考评类型:" + eval.getType().getName(), | |
476 | + "考评/活动名称:" + evalGroupRankDto.getName(), | |
477 | +// "考评类型:" + eval.getType().getName(), | |
478 | 478 | // "岗位:" + evalGroup.getPostName(), |
479 | 479 | "考评组:" + evalGroupSize + "个", |
480 | 480 | // "适用门店:" + evalGroup.getShopIds().size() + "个", |
... | ... | @@ -491,9 +491,9 @@ public class ApprovalBizService { |
491 | 491 | ApprovalRecord approvalRecord = ApprovalRecord.builder() |
492 | 492 | .approvalNo(approvalNo) |
493 | 493 | .approvalStatus(ApprovalStatusEnum.IN_APPROVAL) |
494 | - .approvalType(ApprovalTypeEnum.EVAL) | |
494 | + .approvalType(ApprovalTypeEnum.EVAL_GROUP_RANK) | |
495 | 495 | .dataId(settingDraft.getId()) |
496 | - .groupId(eval.getGroupId()) | |
496 | + .groupId(evalGroupRankDto.getGroupId()) | |
497 | 497 | .build(); |
498 | 498 | approvalRecordService.save(approvalRecord); |
499 | 499 | } | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalCalculateService.java
... | ... | @@ -50,6 +50,7 @@ public class EvalCalculateService { |
50 | 50 | private final EvalUserPoolService evalUserPoolService; |
51 | 51 | private final EvalShopPoolService evalShopPoolService; |
52 | 52 | private final EvalGroupService evalGroupService; |
53 | + private final EvalGroupRankStageService evalGroupRankStageService; | |
53 | 54 | private final EvalGroupIndicatorService evalGroupIndicatorService; |
54 | 55 | private final EvalPoolIndicatorDetailService evalPoolIndicatorDetailService; |
55 | 56 | private final EvalGroupRewardService evalGroupRewardService; |
... | ... | @@ -74,6 +75,7 @@ public class EvalCalculateService { |
74 | 75 | final EvalGroupRankService evalGroupRankService, |
75 | 76 | final PlatformTransactionManager platformTransactionManager, |
76 | 77 | final TransactionDefinition transactionDefinition, |
78 | + final EvalGroupRankStageService evalGroupRankStageService, | |
77 | 79 | final List<EvalRewardBaseCalculator> rewardBaseCalculators, |
78 | 80 | final List<EvalKpiBaseCalculator> kpiBaseCalculators) { |
79 | 81 | this.evalPoolRewardDetailService = evalPoolRewardDetailService; |
... | ... | @@ -89,6 +91,7 @@ public class EvalCalculateService { |
89 | 91 | this.evalGroupRankService = evalGroupRankService; |
90 | 92 | this.platformTransactionManager = platformTransactionManager; |
91 | 93 | this.transactionDefinition = transactionDefinition; |
94 | + this.evalGroupRankStageService = evalGroupRankStageService; | |
92 | 95 | this.calculatorRewardMap = rewardBaseCalculators.stream().collect(Collectors.toMap(EvalRewardBaseCalculator::getCalMethod, v -> v)); |
93 | 96 | this.calculatorEvalMap = kpiBaseCalculators.stream().collect(Collectors.toMap(EvalKpiBaseCalculator::getCalMethod, v -> v)); |
94 | 97 | } |
... | ... | @@ -251,32 +254,29 @@ public class EvalCalculateService { |
251 | 254 | |
252 | 255 | public List<EvalGroupUserShop> buildEvalGroupObj(EvalGroup evalGroup, LocalDate localDate, Boolean filterUser) { |
253 | 256 | List<EvalGroupUserShop> userShops = new ArrayList<>(); |
254 | - if (EvalScopeEnum.STAFF.equals(evalGroup.getScopeType())) { | |
255 | - List<EvalGroupUser> users = evalGroupUserService.list(Wrappers.<EvalGroupUser>lambdaQuery() | |
256 | - .eq(EvalGroupUser::getEvalGroupId, evalGroup.getId()) | |
257 | - .eq(EvalGroupUser::getDataDate, localDate) | |
258 | -// .eq(filterUser, EvalGroupUser::getIgnored, Boolean.FALSE) | |
259 | - .eq(EvalGroupUser::getYn, Boolean.TRUE) | |
260 | - ); | |
257 | + List<EvalGroupUser> users = evalGroupUserService.list(Wrappers.<EvalGroupUser>lambdaQuery() | |
258 | + .eq(EvalGroupUser::getEvalGroupId, evalGroup.getId()) | |
259 | + .eq(EvalGroupUser::getDataDate, localDate) | |
260 | + .eq(EvalGroupUser::getYn, Boolean.TRUE) | |
261 | + ); | |
261 | 262 | |
262 | - Map<Long, EvalUserPool> userPoolMap = evalPoolCommonService.inspectionUserPoolMap(evalGroup, users, localDate); | |
263 | - for (EvalGroupUser user : users) { | |
264 | - if (Boolean.TRUE.equals(user.getIgnored())) { | |
265 | - continue; | |
266 | - } | |
267 | - EvalUserPool userPool = userPoolMap.get(user.getUserId()); | |
268 | - userShops.add(convertBO(user, userPool)); | |
263 | + Map<Long, EvalUserPool> userPoolMap = evalPoolCommonService.inspectionUserPoolMap(evalGroup, users, localDate); | |
264 | + for (EvalGroupUser user : users) { | |
265 | + if (Boolean.TRUE.equals(user.getIgnored())) { | |
266 | + continue; | |
269 | 267 | } |
270 | - return userShops; | |
271 | - } | |
272 | - | |
273 | - List<Long> shopIds = evalGroup.getShopIds(); | |
274 | - Map<Long, EvalShopPool> shopPoolBOMap = evalPoolCommonService.inspectionShopPools(evalGroup, localDate); | |
275 | - for (Long shopId : shopIds) { | |
276 | - EvalShopPool shopPool = shopPoolBOMap.get(shopId); | |
277 | - userShops.add(convertBO(shopPool, evalGroup, localDate)); | |
268 | + EvalUserPool userPool = userPoolMap.get(user.getUserId()); | |
269 | + userShops.add(convertBO(user, userPool)); | |
278 | 270 | } |
279 | 271 | return userShops; |
272 | + | |
273 | +// List<Long> shopIds = evalGroup.getShopIds(); | |
274 | +// Map<Long, EvalShopPool> shopPoolBOMap = evalPoolCommonService.inspectionShopPools(evalGroup, localDate); | |
275 | +// for (Long shopId : shopIds) { | |
276 | +// EvalShopPool shopPool = shopPoolBOMap.get(shopId); | |
277 | +// userShops.add(convertBO(shopPool, evalGroup, localDate)); | |
278 | +// } | |
279 | +// return userShops; | |
280 | 280 | } |
281 | 281 | |
282 | 282 | |
... | ... | @@ -417,17 +417,16 @@ public class EvalCalculateService { |
417 | 417 | .ge(EvalGroupRank::getOverTime, localDate) |
418 | 418 | .eq(EvalGroupRank::getYn, Boolean.TRUE) |
419 | 419 | ); |
420 | - Set<String> rankEgcs = evalGroupRanks.stream().map(EvalGroupRank::getEgcs).collect(HashSet::new, Set::addAll, Set::addAll); | |
421 | - List<EvalGroup> evalGroups = evalGroupService.getAllEffectGroups(localDate); | |
422 | - | |
420 | + if (PublicUtil.isEmpty(evalGroupRanks)) { | |
421 | + return; | |
422 | + } | |
423 | 423 | List<String> rankBOS = new ArrayList<>(); |
424 | 424 | for (EvalGroupRank evalGroupRank : evalGroupRanks) { |
425 | - rankBOS.add(convertRankStr(evalGroupRank, localDate)); | |
426 | - } | |
427 | - for (EvalGroup evalGroup : evalGroups) { | |
428 | - if (! rankEgcs.contains(evalGroup.getEgc())) { | |
429 | - rankBOS.add(convertRankStr(evalGroup, localDate)); | |
425 | + List<EvalGroup> evalGroups = evalGroupService.getEffectsByRankId(evalGroupRank.getId(), localDate); | |
426 | + if (PublicUtil.isEmpty(evalGroups)) { | |
427 | + continue; | |
430 | 428 | } |
429 | + rankBOS.add(convertRankStr(evalGroupRank, localDate, evalGroups)); | |
431 | 430 | } |
432 | 431 | |
433 | 432 | if (PublicUtil.isNotEmpty(rankBOS)) { |
... | ... | @@ -449,7 +448,7 @@ public class EvalCalculateService { |
449 | 448 | EvalGroupCalculableRankBO calculableBO = JSONObject.parseObject(jsonStr, EvalGroupCalculableRankBO.class); |
450 | 449 | if (Objects.nonNull(calculableBO)) { |
451 | 450 | try { |
452 | - calcuEvalRank(calculableBO); | |
451 | + calcEvalRank(calculableBO); | |
453 | 452 | } catch (Exception ex) { |
454 | 453 | log.error("计算考评排名组失败:[{}]", jsonStr, ex); |
455 | 454 | errList.add(jsonStr); |
... | ... | @@ -468,30 +467,17 @@ public class EvalCalculateService { |
468 | 467 | * @param bo |
469 | 468 | */ |
470 | 469 | @Transactional(rollbackFor = Exception.class) |
471 | - public void calcuEvalRank(EvalGroupCalculableRankBO bo) { | |
472 | - final List<String> egcs = bo.getEgcs(); | |
473 | - final LocalDate localDate = bo.getLocalDate(); | |
474 | - final EvalScopeEnum scopeType = bo.getScopeType(); | |
475 | - | |
476 | - if (EvalScopeEnum.STAFF.equals(scopeType)) { | |
477 | - List<EvalUserPool> pools = evalUserPoolService.list(Wrappers.<EvalUserPool>lambdaQuery() | |
478 | - .in(EvalUserPool::getEgc, egcs) | |
479 | - .eq(EvalUserPool::getInclusion, Boolean.TRUE) | |
480 | - .eq(EvalUserPool::getYn, Boolean.TRUE) | |
481 | - .orderByDesc(EvalUserPool::getScoreRatio) | |
482 | - ); | |
483 | - calcEvalUserRank(pools); | |
484 | - evalUserPoolService.updateBatchById(pools); | |
485 | - return; | |
486 | - } | |
487 | - | |
488 | - List<EvalShopPool> pools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery() | |
489 | - .in(EvalShopPool::getEgc, egcs) | |
490 | - .eq(EvalShopPool::getYn, Boolean.TRUE) | |
491 | - .orderByDesc(EvalShopPool::getScoreRatio) | |
470 | + public void calcEvalRank(EvalGroupCalculableRankBO bo) { | |
471 | + final List<Long> evalGroupIds = bo.getEvalGroupIds(); | |
472 | + | |
473 | + List<EvalUserPool> pools = evalUserPoolService.list(Wrappers.<EvalUserPool>lambdaQuery() | |
474 | + .in(EvalUserPool::getEvalGroupId, evalGroupIds) | |
475 | + .eq(EvalUserPool::getInclusion, Boolean.TRUE) | |
476 | + .eq(EvalUserPool::getYn, Boolean.TRUE) | |
477 | + .orderByDesc(EvalUserPool::getScoreRatio) | |
492 | 478 | ); |
493 | - calcEvalShopRank(pools); | |
494 | - evalShopPoolService.updateBatchById(pools); | |
479 | + calcEvalUserRank(pools); | |
480 | + evalUserPoolService.updateBatchById(pools); | |
495 | 481 | } |
496 | 482 | |
497 | 483 | /** |
... | ... | @@ -543,20 +529,12 @@ public class EvalCalculateService { |
543 | 529 | } |
544 | 530 | |
545 | 531 | |
546 | - public String convertRankStr(EvalGroupRank evalGroupRank, LocalDate localDate) { | |
532 | + public String convertRankStr(EvalGroupRank evalGroupRank, LocalDate localDate, List<EvalGroup> evalGroups) { | |
547 | 533 | EvalGroupCalculableRankBO rankBO = EvalGroupCalculableRankBO.builder() |
548 | 534 | .groupId(evalGroupRank.getGroupId()) |
549 | - .scopeType(evalGroupRank.getScopeType()) | |
550 | - .egcs(evalGroupRank.getEgcs()) | |
551 | - .localDate(localDate) | |
552 | - .build(); | |
553 | - return JSONObject.toJSONString(rankBO); | |
554 | - } | |
555 | - public String convertRankStr(EvalGroup evalGroup, LocalDate localDate) { | |
556 | - EvalGroupCalculableRankBO rankBO = EvalGroupCalculableRankBO.builder() | |
557 | - .groupId(evalGroup.getGroupId()) | |
558 | - .scopeType(evalGroup.getScopeType()) | |
559 | - .egcs(new ArrayList<String>(){{add(evalGroup.getEgc());}}) | |
535 | +// .scopeType(evalGroupRank.getScopeType()) | |
536 | +// .egcs(evalGroupRank.getEgcs()) | |
537 | + .evalGroupIds(evalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList())) | |
560 | 538 | .localDate(localDate) |
561 | 539 | .build(); |
562 | 540 | return JSONObject.toJSONString(rankBO); | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupBizService.java
... | ... | @@ -6,8 +6,6 @@ import cn.fw.common.page.AppPage; |
6 | 6 | import cn.fw.common.web.annotation.DisLock; |
7 | 7 | import cn.fw.common.web.auth.LoginAuthBean; |
8 | 8 | import cn.fw.morax.common.constant.Constant; |
9 | -import cn.fw.morax.common.pojo.event.ApprovalResultEvent; | |
10 | -import cn.fw.morax.common.utils.MessageFormatUtil; | |
11 | 9 | import cn.fw.morax.common.utils.PublicUtil; |
12 | 10 | import cn.fw.morax.domain.db.ApprovalRecord; |
13 | 11 | import cn.fw.morax.domain.db.SettingDraft; |
... | ... | @@ -70,42 +68,40 @@ public class EvalGroupBizService { |
70 | 68 | /** |
71 | 69 | * 考评组保存 |
72 | 70 | * |
73 | - * @param eval | |
71 | + * @param evalGroupRankDto | |
74 | 72 | * @param user |
75 | 73 | * @return |
76 | 74 | */ |
77 | 75 | @Transactional(rollbackFor = Exception.class) |
78 | 76 | @DisLock(prefix = "#this.getSaveGroupPrefix()", key = "#dto.getName()", message = "保存中,请勿重复操作") |
79 | - public void saveEvalGroup(EvalDTO eval, LoginAuthBean user, Boolean isSubmit) { | |
80 | - | |
77 | + public void saveEvalGroupRank(EvalGroupRankDTO evalGroupRankDto, LoginAuthBean user, Boolean isSubmit) { | |
81 | 78 | AtomicInteger evalGroupSize = new AtomicInteger(); |
82 | 79 | LocalDate lastStageOverTime = null; |
83 | - for (EvalStageDTO stage : eval.getStages()) { | |
84 | - this.checkStageTime(eval, stage, lastStageOverTime); | |
80 | + Boolean multiStage = evalGroupRankDto.getMultiStage(); | |
81 | + for (EvalStageDTO stage : evalGroupRankDto.getStages()) { | |
82 | + this.checkStageTime(evalGroupRankDto, stage, lastStageOverTime); | |
85 | 83 | for (EvalGroupDTO evalGroupDTO : stage.getEvalGroups()) { |
86 | 84 | initEvalGroupDTO(evalGroupDTO); |
87 | - checkTime(evalGroupDTO); | |
88 | - checkNameRepetition(eval.getId(), eval.getName()); | |
89 | - checkIndicator(evalGroupDTO); | |
85 | + checkIndicator(evalGroupDTO, multiStage); | |
90 | 86 | checkReward(evalGroupDTO); |
91 | 87 | checkEvalIndicatorLadders(evalGroupDTO.getIndicators()); |
92 | 88 | checkEvalRewardLadders(evalGroupDTO.getRewards()); |
93 | 89 | sortRewardRankLadders(evalGroupDTO.getRewards()); |
94 | - setTargetVos(evalGroupDTO); | |
90 | + this.setTargetVos(evalGroupDTO); | |
95 | 91 | evalGroupSize.incrementAndGet(); |
96 | 92 | } |
97 | 93 | lastStageOverTime = stage.getOverTime(); |
98 | 94 | } |
99 | 95 | |
100 | - SettingDraft settingDraft = getSettingDraft(eval, isSubmit); | |
96 | + SettingDraft settingDraft = getSettingDraft(evalGroupRankDto, isSubmit); | |
101 | 97 | settingDraftService.saveOrUpdate(settingDraft); |
102 | 98 | if (! isSubmit) { |
103 | 99 | return; |
104 | 100 | } |
105 | - approvalBizService.applyApproveEvalDraft(eval, evalGroupSize.get(), settingDraft, user); | |
101 | + approvalBizService.applyApproveEvalDraft(evalGroupRankDto, evalGroupSize.get(), settingDraft, user); | |
106 | 102 | } |
107 | 103 | |
108 | - public void checkStageTime(EvalDTO eval, EvalStageDTO stage, LocalDate lastStageOverTime) { | |
104 | + public void checkStageTime(EvalGroupRankDTO eval, EvalStageDTO stage, LocalDate lastStageOverTime) { | |
109 | 105 | if (stage.getBeginTime().isBefore(eval.getBeginTime())) { |
110 | 106 | throw new BusinessException("阶段开始时间不能在考评时间之前"); |
111 | 107 | } |
... | ... | @@ -125,7 +121,7 @@ public class EvalGroupBizService { |
125 | 121 | * @param dto |
126 | 122 | * @return |
127 | 123 | */ |
128 | - public SettingDraft getSettingDraft(EvalDTO dto, Boolean submit) { | |
124 | + public SettingDraft getSettingDraft(EvalGroupRankDTO dto, Boolean submit) { | |
129 | 125 | SettingDraft settingDraft = null; |
130 | 126 | if (PublicUtil.isEmpty(dto.getDraftId())) { |
131 | 127 | settingDraft = new SettingDraft(); |
... | ... | @@ -137,7 +133,7 @@ public class EvalGroupBizService { |
137 | 133 | BV.notNull(settingDraft, "草稿配置不存在,请重试"); |
138 | 134 | } |
139 | 135 | settingDraft.setStatus(submit ? SettingDraftStatusEnum.RELEASE_APPROVAL : SettingDraftStatusEnum.NO_RELEASE); |
140 | - settingDraft.setEvalType(dto.getType()); | |
136 | +// settingDraft.setEvalType(dto.getType()); | |
141 | 137 | settingDraft.setName(dto.getName()); |
142 | 138 | settingDraft.setContent(JSONObject.toJSONString(dto)); |
143 | 139 | return settingDraft; |
... | ... | @@ -330,18 +326,18 @@ public class EvalGroupBizService { |
330 | 326 | public void checkTime(EvalGroupDTO dto) { |
331 | 327 | // BV.isTrue(dto.getBeginTime().isBefore(dto.getOverTime()), "考评组【" + dto.getName()+ "】生效时间必须在结束时间之前"); |
332 | 328 | |
333 | - if (PublicUtil.isNotEmpty(dto.getId())) { | |
334 | - List<EvalGroup> evalGroups = evalGroupService.list(Wrappers.<EvalGroup>lambdaQuery() | |
335 | - .eq(EvalGroup::getEvalId, dto.getId()) | |
336 | - .eq(EvalGroup::getYn, Boolean.TRUE) | |
337 | - ); | |
338 | - LocalDate now = LocalDate.now(); | |
339 | - Optional<EvalGroup> optionalEvalGroup = evalGroups.stream() | |
340 | - .filter(evalGroup -> EvalScopeEnum.SHOP.equals(evalGroup.getScopeType()) && now.equals(evalGroup.getOverTime())).findFirst(); | |
341 | - if (optionalEvalGroup.isPresent()) { | |
342 | - throw new BusinessException("考评组 " + optionalEvalGroup.get().getName() + "已结束,不能编辑"); | |
343 | - } | |
344 | - } | |
329 | +// if (PublicUtil.isNotEmpty(dto.getId())) { | |
330 | +// List<EvalGroup> evalGroups = evalGroupService.list(Wrappers.<EvalGroup>lambdaQuery() | |
331 | +// .eq(EvalGroup::getEvalId, dto.getId()) | |
332 | +// .eq(EvalGroup::getYn, Boolean.TRUE) | |
333 | +// ); | |
334 | +// LocalDate now = LocalDate.now(); | |
335 | +// Optional<EvalGroup> optionalEvalGroup = evalGroups.stream() | |
336 | +// .filter(evalGroup -> EvalScopeEnum.SHOP.equals(evalGroup.getScopeType()) && now.equals(evalGroup.getOverTime())).findFirst(); | |
337 | +// if (optionalEvalGroup.isPresent()) { | |
338 | +// throw new BusinessException("考评组 " + optionalEvalGroup.get().getName() + "已结束,不能编辑"); | |
339 | +// } | |
340 | +// } | |
345 | 341 | } |
346 | 342 | |
347 | 343 | /** |
... | ... | @@ -473,7 +469,7 @@ public class EvalGroupBizService { |
473 | 469 | * |
474 | 470 | * @param evalGroupDTO |
475 | 471 | */ |
476 | - public void checkIndicator(EvalGroupDTO evalGroupDTO) { | |
472 | + public void checkIndicator(EvalGroupDTO evalGroupDTO, Boolean multiStage) { | |
477 | 473 | for (EvalGroupIndicatorDTO indicator : evalGroupDTO.getIndicators()) { |
478 | 474 | String indicatorName = indicator.getName(); |
479 | 475 | |
... | ... | @@ -492,6 +488,15 @@ public class EvalGroupBizService { |
492 | 488 | (PublicUtil.isEmpty(paramDTO.getTargetType()) || PublicUtil.isEmpty(paramDTO.getTargetValue()))) { |
493 | 489 | paramDTO.setTargetType(TargetTypeEnum.NO); |
494 | 490 | } |
491 | + if (multiStage) { | |
492 | + if (TargetTypeEnum.RATIO.equals(paramDTO.getTargetType()) || | |
493 | + TargetTypeEnum.MONEY.equals(paramDTO.getTargetType())) { | |
494 | + throw new BusinessException("多阶段目标只能选择阶段目标或时间进度"); | |
495 | + } | |
496 | + } else if (TargetTypeEnum.STAGE_TARGET.equals(paramDTO.getTargetType()) || | |
497 | + TargetTypeEnum.TIME_SCHEDULE.equals(paramDTO.getTargetType())) { | |
498 | + throw new BusinessException("非多阶段目标只能选择百分比或数量"); | |
499 | + } | |
495 | 500 | } |
496 | 501 | } |
497 | 502 | |
... | ... | @@ -505,6 +510,16 @@ public class EvalGroupBizService { |
505 | 510 | if (! TargetTypeEnum.NO.equals(paramDTO.getTargetType()) && |
506 | 511 | (PublicUtil.isEmpty(paramDTO.getTargetType()) || PublicUtil.isEmpty(paramDTO.getTargetValue()))) { |
507 | 512 | paramDTO.setTargetType(TargetTypeEnum.NO); |
513 | + continue; | |
514 | + } | |
515 | + if (multiStage) { | |
516 | + if (TargetTypeEnum.RATIO.equals(paramDTO.getTargetType()) || | |
517 | + TargetTypeEnum.MONEY.equals(paramDTO.getTargetType())) { | |
518 | + throw new BusinessException("多阶段目标只能选择阶段目标或时间进度"); | |
519 | + } | |
520 | + } else if (TargetTypeEnum.STAGE_TARGET.equals(paramDTO.getTargetType()) || | |
521 | + TargetTypeEnum.TIME_SCHEDULE.equals(paramDTO.getTargetType())) { | |
522 | + throw new BusinessException("非多阶段目标只能选择百分比或数量"); | |
508 | 523 | } |
509 | 524 | } |
510 | 525 | } |
... | ... | @@ -514,6 +529,7 @@ public class EvalGroupBizService { |
514 | 529 | if (! TargetTypeEnum.NO.equals(preconditionDTO.getTargetType()) && |
515 | 530 | (PublicUtil.isEmpty(preconditionDTO.getTargetType()) || PublicUtil.isEmpty(preconditionDTO.getTargetValue()))) { |
516 | 531 | preconditionDTO.setTargetType(TargetTypeEnum.NO); |
532 | + continue; | |
517 | 533 | } |
518 | 534 | } |
519 | 535 | } |
... | ... | @@ -621,7 +637,7 @@ public class EvalGroupBizService { |
621 | 637 | EvalVO evalVO = PublicUtil.copy(eval, EvalVO.class); |
622 | 638 | |
623 | 639 | List<EvalGroup> evalGroups = evalGroupService.list(Wrappers.<EvalGroup>lambdaQuery() |
624 | - .in(EvalGroup::getEvalId, evalId) | |
640 | +// .in(EvalGroup::getEvalId, evalId) | |
625 | 641 | .in(EvalGroup::getYn, Boolean.TRUE) |
626 | 642 | ); |
627 | 643 | List<EvalGroupVO> evalGroupVOs = PublicUtil.copyList(evalGroups, EvalGroupVO.class); |
... | ... | @@ -964,19 +980,19 @@ public class EvalGroupBizService { |
964 | 980 | @Transactional(rollbackFor = Exception.class) |
965 | 981 | public void approvalEvalConfig(ApprovalRecord approvalRecord, SettingDraft settingDraft) { |
966 | 982 | log.info("收到岗位最低收入补偿审批信息:{}", JSON.toJSONString(approvalRecord)); |
967 | - EvalDTO evalDTO = JSON.parseObject(settingDraft.getContent(), EvalDTO.class); | |
968 | - Eval eval = evalGroupDataService.saveEval(evalDTO); | |
969 | - for (EvalStageDTO evalStageDTO : evalDTO.getStages()) { | |
970 | - EvalStage evalStage = evalGroupDataService.saveEvalStage(evalStageDTO, eval); | |
983 | + EvalGroupRankDTO evalGroupRankDto = JSON.parseObject(settingDraft.getContent(), EvalGroupRankDTO.class); | |
984 | + EvalGroupRank evalGroupRank = evalGroupDataService.saveEvalGroupRank(evalGroupRankDto); | |
985 | + for (EvalStageDTO evalStageDTO : evalGroupRankDto.getStages()) { | |
986 | + EvalGroupRankStage evalGroupRankStage = evalGroupDataService.saveEvalStage(evalStageDTO, evalGroupRank); | |
971 | 987 | for (EvalGroupDTO evalGroupDTO : evalStageDTO.getEvalGroups()) { |
972 | - EvalGroup evalGroup = evalGroupDataService.saveEvalGroup(evalGroupDTO, eval, evalStage); | |
988 | + EvalGroup evalGroup = evalGroupDataService.saveEvalGroup(evalGroupDTO, evalGroupRank, evalGroupRankStage); | |
973 | 989 | evalGroupDataService.saveEvalGroupIndicator(evalGroup, evalGroupDTO.getIndicators()); |
974 | 990 | evalGroupDataService.saveEvalGroupReward(evalGroup, evalGroupDTO.getRewards()); |
975 | 991 | } |
976 | 992 | } |
977 | 993 | |
978 | 994 | settingDraftService.update(Wrappers.<SettingDraft>lambdaUpdate() |
979 | - .set(SettingDraft::getUnionId, eval.getId()) | |
995 | + .set(SettingDraft::getUnionId, evalGroupRank.getId()) | |
980 | 996 | .set(SettingDraft::getUpdateTime, new Date()) |
981 | 997 | .eq(SettingDraft::getId, settingDraft.getId()) |
982 | 998 | ); | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupDataService.java
1 | 1 | package cn.fw.morax.service.biz.eval; |
2 | 2 | |
3 | -import cn.fw.morax.common.config.FlowVal; | |
4 | 3 | import cn.fw.morax.common.constant.Constant; |
5 | -import cn.fw.morax.common.pojo.event.ApprovalResultEvent; | |
6 | 4 | import cn.fw.morax.common.utils.PublicUtil; |
7 | -import cn.fw.morax.domain.db.ApprovalRecord; | |
8 | -import cn.fw.morax.domain.db.SettingDraft; | |
9 | 5 | import cn.fw.morax.domain.db.eval.*; |
10 | 6 | import cn.fw.morax.domain.dto.eval.*; |
11 | -import cn.fw.morax.domain.dto.kpi.KpiGroupDTO; | |
12 | 7 | import cn.fw.morax.domain.enums.*; |
13 | -import cn.fw.morax.rpc.approval.FlowApproveRpc; | |
14 | -import cn.fw.morax.service.biz.kpi.KpiGroupUserBizService; | |
15 | -import cn.fw.morax.service.data.ApprovalRecordService; | |
16 | 8 | import cn.fw.morax.service.data.SettingDraftService; |
17 | 9 | import cn.fw.morax.service.data.eval.*; |
18 | -import com.alibaba.fastjson.JSON; | |
19 | 10 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
20 | 11 | import com.google.common.collect.Lists; |
21 | 12 | import lombok.RequiredArgsConstructor; |
... | ... | @@ -28,8 +19,6 @@ import java.time.LocalDate; |
28 | 19 | import java.util.*; |
29 | 20 | import java.util.stream.Collectors; |
30 | 21 | |
31 | -import static cn.fw.common.businessvalidator.Validator.BV; | |
32 | - | |
33 | 22 | @Service |
34 | 23 | @Slf4j |
35 | 24 | @RequiredArgsConstructor |
... | ... | @@ -44,10 +33,11 @@ public class EvalGroupDataService { |
44 | 33 | private final EvalGroupRewardParamService evalGroupRewardParamService; |
45 | 34 | private final EvalGroupIndicatorService evalGroupIndicatorService; |
46 | 35 | private final EvalGroupRewardService evalGroupRewardService; |
36 | + private final EvalGroupRankService evalGroupRankService; | |
47 | 37 | private final EvalUserPoolService evalUserPoolService; |
48 | 38 | private final EvalShopPoolService evalShopPoolService; |
49 | 39 | private final EvalGroupService evalGroupService; |
50 | - private final EvalStageService evalStageService; | |
40 | + private final EvalGroupRankStageService evalGroupRankStageService; | |
51 | 41 | private final EvalService evalService; |
52 | 42 | private final SettingDraftService settingDraftService; |
53 | 43 | |
... | ... | @@ -57,26 +47,26 @@ public class EvalGroupDataService { |
57 | 47 | * @param dto |
58 | 48 | */ |
59 | 49 | @Transactional(rollbackFor = Exception.class) |
60 | - public Eval saveEval(EvalDTO dto) { | |
61 | - Eval eval = PublicUtil.copy(dto, Eval.class); | |
62 | - eval.setId(null); | |
63 | - eval.setStatus(SettingStatusEnum.EFFECTIVE); | |
64 | - evalService.save(eval); | |
50 | + public EvalGroupRank saveEvalGroupRank(EvalGroupRankDTO dto) { | |
51 | + EvalGroupRank evalGroupRank = PublicUtil.copy(dto, EvalGroupRank.class); | |
52 | + evalGroupRank.setId(null); | |
53 | + evalGroupRank.setStatus(SettingStatusEnum.EFFECTIVE); | |
54 | + evalGroupRankService.save(evalGroupRank); | |
65 | 55 | //之前的考评 删除 |
66 | 56 | if (PublicUtil.isNotEmpty(dto.getId())) { |
67 | - evalService.update(Wrappers.<Eval>lambdaUpdate() | |
68 | - .eq(Eval::getId, dto.getId()) | |
69 | - .set(Eval::getStatus, SettingStatusEnum.INEFFECTIVE) | |
70 | - .set(Eval::getUpdateTime, new Date()) | |
71 | - .set(Eval::getYn, Boolean.FALSE) | |
57 | + evalGroupRankService.update(Wrappers.<EvalGroupRank>lambdaUpdate() | |
58 | + .eq(EvalGroupRank::getId, dto.getId()) | |
59 | + .set(EvalGroupRank::getStatus, SettingStatusEnum.INEFFECTIVE) | |
60 | + .set(EvalGroupRank::getUpdateTime, new Date()) | |
61 | + .set(EvalGroupRank::getYn, Boolean.FALSE) | |
72 | 62 | ); |
73 | - evalStageService.update(Wrappers.<EvalStage>lambdaUpdate() | |
74 | - .eq(EvalStage::getId, dto.getId()) | |
75 | - .set(EvalStage::getUpdateTime, new Date()) | |
76 | - .set(EvalStage::getYn, Boolean.FALSE) | |
63 | + evalGroupRankStageService.update(Wrappers.<EvalGroupRankStage>lambdaUpdate() | |
64 | + .eq(EvalGroupRankStage::getId, dto.getId()) | |
65 | + .set(EvalGroupRankStage::getUpdateTime, new Date()) | |
66 | + .set(EvalGroupRankStage::getYn, Boolean.FALSE) | |
77 | 67 | ); |
78 | 68 | List<EvalGroup> evalGroups = evalGroupService.list(Wrappers.<EvalGroup>lambdaQuery() |
79 | - .eq(EvalGroup::getEvalId, dto.getId()) | |
69 | + .eq(EvalGroup::getEvalGroupRankId, dto.getId()) | |
80 | 70 | .eq(EvalGroup::getYn, Boolean.TRUE) |
81 | 71 | ); |
82 | 72 | List<Long> evalGroupIds = evalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList()); |
... | ... | @@ -97,7 +87,7 @@ public class EvalGroupDataService { |
97 | 87 | .set(EvalShopPool::getUpdateTime, new Date()) |
98 | 88 | ); |
99 | 89 | } |
100 | - return eval; | |
90 | + return evalGroupRank; | |
101 | 91 | } |
102 | 92 | |
103 | 93 | /** |
... | ... | @@ -106,11 +96,11 @@ public class EvalGroupDataService { |
106 | 96 | * @param dto |
107 | 97 | */ |
108 | 98 | @Transactional(rollbackFor = Exception.class) |
109 | - public EvalStage saveEvalStage(EvalStageDTO dto, Eval eval) { | |
110 | - EvalStage evalStage = PublicUtil.copy(dto, EvalStage.class); | |
111 | - evalStage.setEvalId(eval.getId()); | |
112 | - evalStageService.save(evalStage); | |
113 | - return evalStage; | |
99 | + public EvalGroupRankStage saveEvalStage(EvalStageDTO dto, EvalGroupRank evalGroupRank) { | |
100 | + EvalGroupRankStage evalGroupRankStage = PublicUtil.copy(dto, EvalGroupRankStage.class); | |
101 | + evalGroupRankStage.setEvalGroupRankId(evalGroupRank.getId()); | |
102 | + evalGroupRankStageService.save(evalGroupRankStage); | |
103 | + return evalGroupRankStage; | |
114 | 104 | } |
115 | 105 | |
116 | 106 | /** |
... | ... | @@ -119,7 +109,7 @@ public class EvalGroupDataService { |
119 | 109 | * @param dto |
120 | 110 | */ |
121 | 111 | @Transactional(rollbackFor = Exception.class) |
122 | - public EvalGroup saveEvalGroup(EvalGroupDTO dto, Eval eval, EvalStage evalStage) { | |
112 | + public EvalGroup saveEvalGroup(EvalGroupDTO dto, EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage) { | |
123 | 113 | EvalGroup evalGroup = PublicUtil.copy(dto, EvalGroup.class); |
124 | 114 | evalGroup.setIndicatorNum(dto.getIndicators().size()); |
125 | 115 | if (PublicUtil.isNotEmpty(dto.getId())) { |
... | ... | @@ -127,9 +117,9 @@ public class EvalGroupDataService { |
127 | 117 | } else { |
128 | 118 | evalGroup.setEgc(PublicUtil.getUUID()); |
129 | 119 | } |
130 | - evalGroup.setGroupId(eval.getGroupId()); | |
131 | - evalGroup.setEvalId(eval.getId()); | |
132 | - evalGroup.setEvalStageId(evalStage.getId()); | |
120 | + evalGroup.setGroupId(evalGroupRank.getGroupId()); | |
121 | + evalGroup.setEvalGroupRankId(evalGroupRank.getId()); | |
122 | + evalGroup.setEvalGroupRankStageId(evalGroupRankStage.getId()); | |
133 | 123 | // evalGroup.setStatus(SettingStatusEnum.APPROVING); |
134 | 124 | evalGroupService.save(evalGroup); |
135 | 125 | return evalGroup; | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupRankBizService.java
... | ... | @@ -5,7 +5,7 @@ import cn.fw.common.page.AppPage; |
5 | 5 | import cn.fw.morax.common.constant.Constant; |
6 | 6 | import cn.fw.morax.common.utils.PublicUtil; |
7 | 7 | import cn.fw.morax.domain.db.eval.*; |
8 | -import cn.fw.morax.domain.dto.eval.EvalGroupRankDto; | |
8 | +import cn.fw.morax.domain.dto.eval.EvalGroupRankDTO; | |
9 | 9 | import cn.fw.morax.domain.dto.eval.EvalGroupRankQueryDto; |
10 | 10 | import cn.fw.morax.domain.dto.query.EvalGroupRankQueryDTO; |
11 | 11 | import cn.fw.morax.domain.enums.EvalScopeEnum; |
... | ... | @@ -22,7 +22,6 @@ import org.springframework.transaction.annotation.Transactional; |
22 | 22 | |
23 | 23 | import java.math.BigDecimal; |
24 | 24 | import java.time.LocalDate; |
25 | -import java.time.YearMonth; | |
26 | 25 | import java.util.*; |
27 | 26 | import java.util.function.Function; |
28 | 27 | import java.util.stream.Collectors; |
... | ... | @@ -128,31 +127,32 @@ public class EvalGroupRankBizService { |
128 | 127 | * @return |
129 | 128 | */ |
130 | 129 | public AppPage<EvalGroupVO> restEvalGroupPage(EvalGroupRankQueryDTO dto) { |
131 | - EvalScopeEnum scopeType = EvalScopeEnum.ofValue(dto.getScopeType()); | |
132 | - List<EvalGroupRank> evalGroupRanks = evalGroupRankService.list(Wrappers.<EvalGroupRank>lambdaQuery() | |
133 | - .eq(EvalGroupRank::getScopeType, scopeType) | |
134 | - .eq(EvalGroupRank::getGroupId, dto.getGroupId()) | |
135 | - .eq(EvalGroupRank::getYn, Boolean.TRUE) | |
136 | - ); | |
137 | - Set<String> excludeEgcs = evalGroupRanks.stream().flatMap(evalGroupRank -> evalGroupRank.getEgcs().stream()).collect(Collectors.toSet()); | |
138 | - List<Long> evalIds = getEffectEvalIds(dto.getGroupId()); | |
139 | - //只有有指标的考评组才能配置到考评排名组 | |
140 | - PageData<EvalGroup> pageData = evalGroupService.page(new PageData<>(dto.getCurrent(), dto.getPageSize()), | |
141 | - Wrappers.<EvalGroup>lambdaQuery() | |
142 | - .gt(EvalGroup::getIndicatorNum, BigDecimal.ZERO.intValue()) | |
143 | - .in(PublicUtil.isNotEmpty(evalIds), EvalGroup::getEvalId, evalIds) | |
144 | - .eq(EvalGroup::getGroupId, dto.getGroupId()) | |
145 | - .eq(PublicUtil.isNotEmpty(dto.getPostId()), EvalGroup::getPostId, dto.getPostId()) | |
146 | - .notIn(PublicUtil.isNotEmpty(excludeEgcs), EvalGroup::getEgc, excludeEgcs) | |
147 | - .eq(EvalGroup::getYn, Boolean.TRUE) | |
148 | - .eq(EvalGroup::getScopeType, scopeType) | |
149 | - ); | |
150 | - return PublicUtil.toPage(pageData, EvalGroup -> { | |
151 | - EvalGroupVO EvalGroupVo = PublicUtil.copy(EvalGroup, EvalGroupVO.class); | |
152 | - EvalGroupVo.setBeginTime(EvalGroup.getBeginTime()); | |
153 | - EvalGroupVo.setOverTime(EvalGroup.getOverTime()); | |
154 | - return EvalGroupVo; | |
155 | - }); | |
130 | +// EvalScopeEnum scopeType = EvalScopeEnum.ofValue(dto.getScopeType()); | |
131 | +// List<EvalGroupRank> evalGroupRanks = evalGroupRankService.list(Wrappers.<EvalGroupRank>lambdaQuery() | |
132 | +// .eq(EvalGroupRank::getScopeType, scopeType) | |
133 | +// .eq(EvalGroupRank::getGroupId, dto.getGroupId()) | |
134 | +// .eq(EvalGroupRank::getYn, Boolean.TRUE) | |
135 | +// ); | |
136 | +// Set<String> excludeEgcs = evalGroupRanks.stream().flatMap(evalGroupRank -> evalGroupRank.getEgcs().stream()).collect(Collectors.toSet()); | |
137 | +// List<Long> evalIds = getEffectEvalIds(dto.getGroupId()); | |
138 | +// //只有有指标的考评组才能配置到考评排名组 | |
139 | +// PageData<EvalGroup> pageData = evalGroupService.page(new PageData<>(dto.getCurrent(), dto.getPageSize()), | |
140 | +// Wrappers.<EvalGroup>lambdaQuery() | |
141 | +// .gt(EvalGroup::getIndicatorNum, BigDecimal.ZERO.intValue()) | |
142 | +// .in(PublicUtil.isNotEmpty(evalIds), EvalGroup::getEvalId, evalIds) | |
143 | +// .eq(EvalGroup::getGroupId, dto.getGroupId()) | |
144 | +// .eq(PublicUtil.isNotEmpty(dto.getPostId()), EvalGroup::getPostId, dto.getPostId()) | |
145 | +// .notIn(PublicUtil.isNotEmpty(excludeEgcs), EvalGroup::getEgc, excludeEgcs) | |
146 | +// .eq(EvalGroup::getYn, Boolean.TRUE) | |
147 | +// .eq(EvalGroup::getScopeType, scopeType) | |
148 | +// ); | |
149 | +// return PublicUtil.toPage(pageData, EvalGroup -> { | |
150 | +// EvalGroupVO EvalGroupVo = PublicUtil.copy(EvalGroup, EvalGroupVO.class); | |
151 | +// EvalGroupVo.setBeginTime(EvalGroup.getBeginTime()); | |
152 | +// EvalGroupVo.setOverTime(EvalGroup.getOverTime()); | |
153 | +// return EvalGroupVo; | |
154 | +// }); | |
155 | + return null; | |
156 | 156 | } |
157 | 157 | |
158 | 158 | |
... | ... | @@ -181,13 +181,13 @@ public class EvalGroupRankBizService { |
181 | 181 | * @param dto |
182 | 182 | */ |
183 | 183 | @Transactional(rollbackFor = Exception.class) |
184 | - public void saveEvalGroupRank(EvalGroupRankDto dto) { | |
185 | - checkRank(dto); | |
186 | - checkEgcRepetition(dto.getId(), dto.getEgcs()); | |
187 | - checkNameRepetition(dto.getId(), dto.getName()); | |
188 | - | |
189 | - EvalGroupRank evalGroupRank = this.convertPO(dto); | |
190 | - evalGroupRankService.saveOrUpdate(evalGroupRank); | |
184 | + public void saveEvalGroupRank(EvalGroupRankDTO dto) { | |
185 | +// checkRank(dto); | |
186 | +// checkEgcRepetition(dto.getId(), dto.getEgcs()); | |
187 | +// checkNameRepetition(dto.getId(), dto.getName()); | |
188 | +// | |
189 | +// EvalGroupRank evalGroupRank = this.convertPO(dto); | |
190 | +// evalGroupRankService.saveOrUpdate(evalGroupRank); | |
191 | 191 | } |
192 | 192 | |
193 | 193 | /** |
... | ... | @@ -196,7 +196,7 @@ public class EvalGroupRankBizService { |
196 | 196 | * @param dto |
197 | 197 | * @return |
198 | 198 | */ |
199 | - public EvalGroupRank convertPO(EvalGroupRankDto dto) { | |
199 | + public EvalGroupRank convertPO(EvalGroupRankDTO dto) { | |
200 | 200 | EvalGroupRank evalGroupRank = null; |
201 | 201 | if (PublicUtil.isNotEmpty(dto.getId())) { |
202 | 202 | evalGroupRank = evalGroupRankService.getById(dto.getId()); |
... | ... | @@ -205,17 +205,17 @@ public class EvalGroupRankBizService { |
205 | 205 | } else { |
206 | 206 | evalGroupRank = new EvalGroupRank(); |
207 | 207 | } |
208 | - evalGroupRank.setScopeType(dto.getScopeType()); | |
209 | - evalGroupRank.setGroupId(dto.getGroupId()); | |
210 | - evalGroupRank.setYn(Boolean.TRUE); | |
211 | - evalGroupRank.setName(dto.getName()); | |
212 | - evalGroupRank.setEgcs(dto.getEgcs()); | |
213 | - List<EvalGroup> evalGroups = evalGroupService.list(Wrappers.<EvalGroup>lambdaQuery() | |
214 | - .in(EvalGroup::getEgc, dto.getEgcs()) | |
215 | - .eq(EvalGroup::getYn, Boolean.TRUE) | |
216 | - ); | |
217 | - LocalDate overTime = evalGroups.stream().map(EvalGroup::getOverTime).max(LocalDate::compareTo).get(); | |
218 | - evalGroupRank.setOverTime(overTime); | |
208 | +// evalGroupRank.setScopeType(dto.getScopeType()); | |
209 | +// evalGroupRank.setGroupId(dto.getGroupId()); | |
210 | +// evalGroupRank.setYn(Boolean.TRUE); | |
211 | +// evalGroupRank.setName(dto.getName()); | |
212 | +// evalGroupRank.setEgcs(dto.getEgcs()); | |
213 | +// List<EvalGroup> evalGroups = evalGroupService.list(Wrappers.<EvalGroup>lambdaQuery() | |
214 | +// .in(EvalGroup::getEgc, dto.getEgcs()) | |
215 | +// .eq(EvalGroup::getYn, Boolean.TRUE) | |
216 | +// ); | |
217 | +// LocalDate overTime = evalGroups.stream().map(EvalGroup::getOverTime).max(LocalDate::compareTo).get(); | |
218 | +// evalGroupRank.setOverTime(overTime); | |
219 | 219 | evalGroupRank.setStatus(SettingStatusEnum.EFFECTIVE); |
220 | 220 | return evalGroupRank; |
221 | 221 | } |
... | ... | @@ -256,7 +256,7 @@ public class EvalGroupRankBizService { |
256 | 256 | * 检查考考评排名组 |
257 | 257 | * |
258 | 258 | */ |
259 | - public void checkRank(EvalGroupRankDto dto) { | |
259 | + public void checkRank(EvalGroupRankDTO dto) { | |
260 | 260 | if (PublicUtil.isNotEmpty(dto.getId())) { |
261 | 261 | EvalGroupRank evalGroupRank = evalGroupRankService.getById(dto.getId()); |
262 | 262 | BV.notNull(evalGroupRank, "考评排名组不存在,请重试"); | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupUserBizService.java
... | ... | @@ -88,7 +88,7 @@ public class EvalGroupUserBizService { |
88 | 88 | continue; |
89 | 89 | } |
90 | 90 | EvalGroup evalGroup = shopKpiGroupMap.get(user.getShopId()); |
91 | - user.setEvalId(evalGroup.getEvalId()); | |
91 | + user.setEvalGroupRankId(evalGroup.getEvalGroupRankId()); | |
92 | 92 | user.setEvalGroupId(evalGroup.getId()); |
93 | 93 | user.setEgc(evalGroup.getEgc()); |
94 | 94 | } | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalPoolCommonService.java
... | ... | @@ -6,7 +6,6 @@ import cn.fw.morax.domain.db.eval.EvalGroup; |
6 | 6 | import cn.fw.morax.domain.db.eval.EvalGroupUser; |
7 | 7 | import cn.fw.morax.domain.db.eval.EvalShopPool; |
8 | 8 | import cn.fw.morax.domain.db.eval.EvalUserPool; |
9 | -import cn.fw.morax.domain.db.salary.SalaryGroupUser; | |
10 | 9 | import cn.fw.morax.rpc.ehr.EhrRpcService; |
11 | 10 | import cn.fw.morax.rpc.ehr.dto.StaffBaseInfoDTO; |
12 | 11 | import cn.fw.morax.rpc.ehr.dto.StaffShopInfoDTO; |
... | ... | @@ -22,10 +21,8 @@ import org.springframework.stereotype.Service; |
22 | 21 | import org.springframework.transaction.annotation.Transactional; |
23 | 22 | |
24 | 23 | import java.math.BigDecimal; |
25 | -import java.math.RoundingMode; | |
26 | 24 | import java.time.LocalDate; |
27 | 25 | import java.time.YearMonth; |
28 | -import java.time.temporal.TemporalAdjusters; | |
29 | 26 | import java.util.*; |
30 | 27 | import java.util.function.Function; |
31 | 28 | import java.util.stream.Collectors; |
... | ... | @@ -129,7 +126,7 @@ public class EvalPoolCommonService { |
129 | 126 | EvalShopPool evalShopPool = new EvalShopPool(); |
130 | 127 | evalShopPool.setEgc(evalGroup.getEgc()); |
131 | 128 | evalShopPool.setEvalGroupId(evalGroup.getId()); |
132 | - evalShopPool.setEvalId(evalGroup.getEvalId()); | |
129 | +// evalShopPool.setEvalId(evalGroup.getEvalId()); | |
133 | 130 | evalShopPool.setShopId(shopId); |
134 | 131 | evalShopPool.setShopName(shopDTO.getShortName()); |
135 | 132 | evalShopPool.setScore(BigDecimal.ZERO); |
... | ... | @@ -207,7 +204,7 @@ public class EvalPoolCommonService { |
207 | 204 | @Transactional(rollbackFor = Exception.class) |
208 | 205 | public EvalUserPool createUserPoolData(EvalGroupUser user) { |
209 | 206 | EvalUserPool evalUserPool = new EvalUserPool(); |
210 | - evalUserPool.setEvalId(user.getEvalId()); | |
207 | + evalUserPool.setEvalId(user.getEvalGroupRankId()); | |
211 | 208 | evalUserPool.setEgc(user.getEgc()); |
212 | 209 | evalUserPool.setEvalGroupId(user.getEvalGroupId()); |
213 | 210 | evalUserPool.setUserId(user.getUserId()); | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalRewardService.java
... | ... | @@ -170,7 +170,7 @@ public class EvalRewardService { |
170 | 170 | */ |
171 | 171 | @Transactional(rollbackFor = Exception.class) |
172 | 172 | public void sendDistRewardTodo(List<EvalShopPool> pools, EvalGroup evalGroup) { |
173 | - Eval eval = evalService.getById(evalGroup.getEvalId()); | |
173 | + Eval eval = evalService.getById(evalGroup.getEvalGroupRankId()); | |
174 | 174 | BV.notNull(eval, "考评配置不存在,请重试"); |
175 | 175 | |
176 | 176 | DecimalFormat decimalFormat = new DecimalFormat("##########.##"); |
... | ... | @@ -248,7 +248,7 @@ public class EvalRewardService { |
248 | 248 | |
249 | 249 | public EvalRewardDist transferPo(EvalGroup evalGroup) { |
250 | 250 | EvalRewardDist rewardDist = new EvalRewardDist(); |
251 | - rewardDist.setEvalId(evalGroup.getEvalId()); | |
251 | + rewardDist.setEvalId(evalGroup.getEvalGroupRankId()); | |
252 | 252 | rewardDist.setEvalGroupId(evalGroup.getId()); |
253 | 253 | rewardDist.setEvalGroupName(evalGroup.getName()); |
254 | 254 | rewardDist.setStatus(EvalRewardDistStatusEnum.NO_DIST); | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/EvalStageService.java renamed to fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/EvalGroupRankStageService.java
1 | 1 | package cn.fw.morax.service.data.eval; |
2 | 2 | |
3 | 3 | |
4 | -import cn.fw.morax.domain.db.eval.Eval; | |
5 | -import cn.fw.morax.domain.db.eval.EvalStage; | |
4 | +import cn.fw.morax.domain.db.eval.EvalGroupRankStage; | |
6 | 5 | import com.baomidou.mybatisplus.extension.service.IService; |
7 | 6 | |
8 | 7 | /** |
... | ... | @@ -13,6 +12,6 @@ import com.baomidou.mybatisplus.extension.service.IService; |
13 | 12 | * @author jiangchao |
14 | 13 | * @since 2022-12-09 |
15 | 14 | */ |
16 | -public interface EvalStageService extends IService<EvalStage> { | |
15 | +public interface EvalGroupRankStageService extends IService<EvalGroupRankStage> { | |
17 | 16 | |
18 | 17 | } | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/EvalGroupService.java
... | ... | @@ -62,4 +62,11 @@ public interface EvalGroupService extends IService<EvalGroup> { |
62 | 62 | */ |
63 | 63 | List<EvalGroup> getAllEffectGroupByEgcs(@NonNull final List<String> egcs, @NonNull final LocalDate localDate); |
64 | 64 | |
65 | + /** | |
66 | + * 获取考评排名组的考评组 | |
67 | + * | |
68 | + * @return | |
69 | + */ | |
70 | + List<EvalGroup> getEffectsByRankId(@NonNull final Long evalGroupRankId, @NonNull final LocalDate localDate); | |
71 | + | |
65 | 72 | } | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/impl/EvalStageServiceImpl.java renamed to fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/impl/EvalGroupRankStageServiceImpl.java
1 | 1 | package cn.fw.morax.service.data.eval.impl; |
2 | 2 | |
3 | 3 | |
4 | -import cn.fw.morax.dao.eval.EvalStageDao; | |
5 | -import cn.fw.morax.domain.db.eval.EvalStage; | |
6 | -import cn.fw.morax.service.data.eval.EvalStageService; | |
4 | +import cn.fw.morax.dao.eval.EvalGroupRankStageDao; | |
5 | +import cn.fw.morax.domain.db.eval.EvalGroupRankStage; | |
6 | +import cn.fw.morax.service.data.eval.EvalGroupRankStageService; | |
7 | 7 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
8 | 8 | import org.springframework.stereotype.Service; |
9 | 9 | |
... | ... | @@ -16,6 +16,6 @@ import org.springframework.stereotype.Service; |
16 | 16 | * @since 2022-12-09 |
17 | 17 | */ |
18 | 18 | @Service |
19 | -public class EvalStageServiceImpl extends ServiceImpl<EvalStageDao, EvalStage> implements EvalStageService { | |
19 | +public class EvalGroupRankStageServiceImpl extends ServiceImpl<EvalGroupRankStageDao, EvalGroupRankStage> implements EvalGroupRankStageService { | |
20 | 20 | |
21 | 21 | } | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/impl/EvalGroupServiceImpl.java
... | ... | @@ -6,6 +6,7 @@ import cn.fw.morax.domain.db.eval.EvalGroup; |
6 | 6 | import cn.fw.morax.domain.db.kpi.KpiGroup; |
7 | 7 | import cn.fw.morax.domain.enums.EvalScopeEnum; |
8 | 8 | import cn.fw.morax.service.data.eval.EvalGroupService; |
9 | +import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |
9 | 10 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
10 | 11 | import org.springframework.lang.NonNull; |
11 | 12 | import org.springframework.stereotype.Service; |
... | ... | @@ -48,4 +49,9 @@ public class EvalGroupServiceImpl extends ServiceImpl<EvalGroupDao, EvalGroup> i |
48 | 49 | public Set<Long> queryDistributionShopReward(LocalDate localDate) { |
49 | 50 | return this.baseMapper.queryDistributionShopReward(localDate, EvalScopeEnum.SHOP.getValue()); |
50 | 51 | } |
52 | + | |
53 | + @Override | |
54 | + public List<EvalGroup> getEffectsByRankId(@NonNull final Long evalGroupRankId, @NonNull final LocalDate localDate) { | |
55 | + return this.baseMapper.getEffectsByRankId(evalGroupRankId, localDate); | |
56 | + } | |
51 | 57 | } | ... | ... |