Commit 9cabf1b9295576705a886b77f5bc8823e55d8893

Authored by 姜超
1 parent 477ad267

feature(salaryGroup): 薪酬组添加名称

薪酬组添加名称
doc/ddl.sql
@@ -641,4 +641,7 @@ ALTER TABLE `fw_morax`.`kpi_pool` @@ -641,4 +641,7 @@ ALTER TABLE `fw_morax`.`kpi_pool`
641 641
642 ALTER TABLE `fw_morax`.`kpi_group` 642 ALTER TABLE `fw_morax`.`kpi_group`
643 ADD COLUMN `name` varchar(255) NULL COMMENT '绩效组名称' AFTER `id`, 643 ADD COLUMN `name` varchar(255) NULL COMMENT '绩效组名称' AFTER `id`,
644 -ADD COLUMN `revoked_score_ratio` decimal(10, 4) NULL COMMENT '人员百分比,撤销D级得分率' AFTER `star_evaluation_type`;  
645 \ No newline at end of file 644 \ No newline at end of file
  645 +ADD COLUMN `revoked_score_ratio` decimal(10, 4) NULL COMMENT '人员百分比,撤销D级得分率' AFTER `star_evaluation_type`;
  646 +
  647 +ALTER TABLE `fw_morax`.`salary_group`
  648 + ADD COLUMN `name` varchar(255) NULL COMMENT '薪酬组名称' AFTER `id`;
646 \ No newline at end of file 649 \ No newline at end of file
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroup.java
@@ -22,6 +22,10 @@ import java.util.List; @@ -22,6 +22,10 @@ import java.util.List;
22 @EqualsAndHashCode(callSuper = true) 22 @EqualsAndHashCode(callSuper = true)
23 public class SalaryGroup extends BaseAuditableTimeEntity<SalaryGroup, Long> { 23 public class SalaryGroup extends BaseAuditableTimeEntity<SalaryGroup, Long> {
24 /** 24 /**
  25 + * 名称
  26 + */
  27 + private String name;
  28 + /**
25 * 薪酬组编码 29 * 薪酬组编码
26 */ 30 */
27 private String sgc; 31 private String sgc;
fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryGroupDTO.java
@@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
8 import com.fasterxml.jackson.datatype.jsr310.deser.YearMonthDeserializer; 8 import com.fasterxml.jackson.datatype.jsr310.deser.YearMonthDeserializer;
9 import com.fasterxml.jackson.datatype.jsr310.ser.YearMonthSerializer; 9 import com.fasterxml.jackson.datatype.jsr310.ser.YearMonthSerializer;
10 import lombok.Data; 10 import lombok.Data;
  11 +import org.hibernate.validator.constraints.Length;
11 12
12 import javax.validation.Valid; 13 import javax.validation.Valid;
13 import javax.validation.constraints.NotBlank; 14 import javax.validation.constraints.NotBlank;
@@ -28,6 +29,12 @@ import java.util.List; @@ -28,6 +29,12 @@ import java.util.List;
28 public class SalaryGroupDTO { 29 public class SalaryGroupDTO {
29 private Long id; 30 private Long id;
30 /** 31 /**
  32 + * 名称
  33 + */
  34 + @NotBlank(message = "名称不能为空")
  35 + @Length(max = 255, message = "名称超出最大限制")
  36 + private String name;
  37 + /**
31 * 薪酬组编码 38 * 薪酬组编码
32 */ 39 */
33 private String sgc; 40 private String sgc;
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupRankVO.java
@@ -5,6 +5,7 @@ import lombok.Data; @@ -5,6 +5,7 @@ import lombok.Data;
5 5
6 import java.math.BigDecimal; 6 import java.math.BigDecimal;
7 import java.util.List; 7 import java.util.List;
  8 +import java.util.Set;
8 9
9 /** 10 /**
10 * @author : kurisu 11 * @author : kurisu
@@ -30,7 +31,7 @@ public class KpiGroupRankVO { @@ -30,7 +31,7 @@ public class KpiGroupRankVO {
30 /** 31 /**
31 * 岗位名称 32 * 岗位名称
32 */ 33 */
33 - private List<String> postNames; 34 + private Set<String> postNames;
34 /** 35 /**
35 * 适用门店ids 36 * 适用门店ids
36 */ 37 */
@@ -38,13 +39,18 @@ public class KpiGroupRankVO { @@ -38,13 +39,18 @@ public class KpiGroupRankVO {
38 /** 39 /**
39 * 适用门店名称 40 * 适用门店名称
40 */ 41 */
41 - private List<String> shopNames; 42 + private Set<String> shopNames;
42 /** 43 /**
43 * 绩效组编码 44 * 绩效组编码
44 */ 45 */
45 private List<String> kgcs; 46 private List<String> kgcs;
46 47
47 /** 48 /**
  49 + * 绩效组名称
  50 + */
  51 + private List<String> kpiGroupNames;
  52 +
  53 + /**
48 * 星级评定方式;1:绩效得分率 2:人员百分比 54 * 星级评定方式;1:绩效得分率 2:人员百分比
49 */ 55 */
50 private StarEvaluationEnum starEvaluationType; 56 private StarEvaluationEnum starEvaluationType;
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupVO.java
@@ -20,6 +20,10 @@ public class SalaryGroupVO { @@ -20,6 +20,10 @@ public class SalaryGroupVO {
20 */ 20 */
21 private Long id; 21 private Long id;
22 /** 22 /**
  23 + * 名称
  24 + */
  25 + private String name;
  26 + /**
23 * 岗位id 27 * 岗位id
24 */ 28 */
25 private Long postId; 29 private Long postId;
@@ -68,6 +72,7 @@ public class SalaryGroupVO { @@ -68,6 +72,7 @@ public class SalaryGroupVO {
68 public static SalaryGroupVO convertSalaryGroup(SalaryGroup salaryGroup) { 72 public static SalaryGroupVO convertSalaryGroup(SalaryGroup salaryGroup) {
69 SalaryGroupVO salaryGroupVo = new SalaryGroupVO(); 73 SalaryGroupVO salaryGroupVo = new SalaryGroupVO();
70 salaryGroupVo.setId(salaryGroup.getId()); 74 salaryGroupVo.setId(salaryGroup.getId());
  75 + salaryGroupVo.setName(salaryGroup.getName());
71 salaryGroupVo.setPostId(salaryGroup.getPostId()); 76 salaryGroupVo.setPostId(salaryGroup.getPostId());
72 salaryGroupVo.setPostName(salaryGroup.getPostName()); 77 salaryGroupVo.setPostName(salaryGroup.getPostName());
73 salaryGroupVo.setShopIds(salaryGroup.getShopIds()); 78 salaryGroupVo.setShopIds(salaryGroup.getShopIds());
fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupBizService.java
@@ -164,7 +164,7 @@ public class KpiGroupBizService { @@ -164,7 +164,7 @@ public class KpiGroupBizService {
164 * @param dto 164 * @param dto
165 */ 165 */
166 public void checkKpi(KpiGroupDTO dto) { 166 public void checkKpi(KpiGroupDTO dto) {
167 - checkNameRepetition(dto.getName(), dto.getId()); 167 + checkNameRepetition(dto.getId(), dto.getName());
168 Long postId = dto.getPostId(); 168 Long postId = dto.getPostId();
169 List<Long> shopIds = dto.getShopIds(); 169 List<Long> shopIds = dto.getShopIds();
170 List<KpiGroup> effectKpis = kpiGroupService.getApprovingKpis(postId, shopIds, dto.getId(), dto.getBeginTime()); 170 List<KpiGroup> effectKpis = kpiGroupService.getApprovingKpis(postId, shopIds, dto.getId(), dto.getBeginTime());
@@ -214,10 +214,10 @@ public class KpiGroupBizService { @@ -214,10 +214,10 @@ public class KpiGroupBizService {
214 /** 214 /**
215 * 检查绩效组排名名称是否重复 215 * 检查绩效组排名名称是否重复
216 * 216 *
217 - * @param name  
218 * @param id 217 * @param id
  218 + * @param name
219 */ 219 */
220 - public void checkNameRepetition(String name, Long id) { 220 + public void checkNameRepetition(Long id, String name) {
221 int count = kpiGroupService.count(Wrappers.<KpiGroup>lambdaQuery() 221 int count = kpiGroupService.count(Wrappers.<KpiGroup>lambdaQuery()
222 .eq(KpiGroup::getName, name) 222 .eq(KpiGroup::getName, name)
223 .ne(PublicUtil.isNotEmpty(id), KpiGroup::getId, id) 223 .ne(PublicUtil.isNotEmpty(id), KpiGroup::getId, id)
fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupRankBizService.java
@@ -82,10 +82,10 @@ public class KpiGroupRankBizService { @@ -82,10 +82,10 @@ public class KpiGroupRankBizService {
82 Map<String, KpiGroup> kgcKpiGroupMap = kpiGroups.stream().collect(Collectors.toMap(KpiGroup::getKgc, Function.identity(), (v1, v2) -> v1)); 82 Map<String, KpiGroup> kgcKpiGroupMap = kpiGroups.stream().collect(Collectors.toMap(KpiGroup::getKgc, Function.identity(), (v1, v2) -> v1));
83 for (KpiGroupRankVO kpiGroupRankVO : kpiGroupRankVOS) { 83 for (KpiGroupRankVO kpiGroupRankVO : kpiGroupRankVOS) {
84 kpiGroupRankVO.setPostIds(new ArrayList<>()); 84 kpiGroupRankVO.setPostIds(new ArrayList<>());
85 - kpiGroupRankVO.setPostNames(new ArrayList<>()); 85 + kpiGroupRankVO.setPostNames(new HashSet<>());
86 kpiGroupRankVO.setShopIds(new ArrayList<>()); 86 kpiGroupRankVO.setShopIds(new ArrayList<>());
87 - kpiGroupRankVO.setShopNames(new ArrayList<>());  
88 - kpiGroupRankVO.setKgcs(new ArrayList<>()); 87 + kpiGroupRankVO.setShopNames(new HashSet<>());
  88 + kpiGroupRankVO.setKpiGroupNames(new ArrayList<>());
89 for (String kgc : kpiGroupRankVO.getKgcs()) { 89 for (String kgc : kpiGroupRankVO.getKgcs()) {
90 if (kgcKpiGroupMap.containsKey(kgc)) { 90 if (kgcKpiGroupMap.containsKey(kgc)) {
91 KpiGroup kpiGroup = kgcKpiGroupMap.get(kgc); 91 KpiGroup kpiGroup = kgcKpiGroupMap.get(kgc);
@@ -93,7 +93,9 @@ public class KpiGroupRankBizService { @@ -93,7 +93,9 @@ public class KpiGroupRankBizService {
93 kpiGroupRankVO.getPostNames().add(kpiGroup.getPostName()); 93 kpiGroupRankVO.getPostNames().add(kpiGroup.getPostName());
94 kpiGroupRankVO.getShopIds().addAll(kpiGroup.getShopIds()); 94 kpiGroupRankVO.getShopIds().addAll(kpiGroup.getShopIds());
95 kpiGroupRankVO.getShopNames().addAll(kpiGroup.getShopNames()); 95 kpiGroupRankVO.getShopNames().addAll(kpiGroup.getShopNames());
96 - kpiGroupRankVO.getKgcs().add(kpiGroup.getKgc()); 96 + if (PublicUtil.isNotEmpty(kpiGroup.getName())) {
  97 + kpiGroupRankVO.getKpiGroupNames().add(kpiGroup.getName());
  98 + }
97 } 99 }
98 } 100 }
99 } 101 }
@@ -174,7 +176,7 @@ public class KpiGroupRankBizService { @@ -174,7 +176,7 @@ public class KpiGroupRankBizService {
174 } 176 }
175 kpiGroupRankVO.setStarLadders(starLaddersVOS); 177 kpiGroupRankVO.setStarLadders(starLaddersVOS);
176 if (PublicUtil.isNotEmpty(kpiGroupRankVO.getRevokedScoreRatio())) { 178 if (PublicUtil.isNotEmpty(kpiGroupRankVO.getRevokedScoreRatio())) {
177 - kpiGroupRank.setRevokedScoreRatio(kpiGroupRankVO.getRevokedScoreRatio().multiply(Constant.ONE_HUNDRED)); 179 + kpiGroupRankVO.setRevokedScoreRatio(kpiGroupRankVO.getRevokedScoreRatio().multiply(Constant.ONE_HUNDRED));
178 } 180 }
179 return kpiGroupRankVO; 181 return kpiGroupRankVO;
180 } 182 }
@@ -245,6 +247,9 @@ public class KpiGroupRankBizService { @@ -245,6 +247,9 @@ public class KpiGroupRankBizService {
245 public void checkKgcRepetition(Long id, List<String> kgcs) { 247 public void checkKgcRepetition(Long id, List<String> kgcs) {
246 List<KpiGroupRankVO> kpiGroupRankVOS = kpiGroupRankService.queryByKgcs(kgcs, id); 248 List<KpiGroupRankVO> kpiGroupRankVOS = kpiGroupRankService.queryByKgcs(kgcs, id);
247 List<String> allKgcs = kpiGroupRankVOS.stream().map(KpiGroupRankVO::getKgcs).collect(ArrayList::new, List::addAll, List::addAll); 249 List<String> allKgcs = kpiGroupRankVOS.stream().map(KpiGroupRankVO::getKgcs).collect(ArrayList::new, List::addAll, List::addAll);
  250 + if (PublicUtil.isEmpty(allKgcs)) {
  251 + return;
  252 + }
248 allKgcs.retainAll(kgcs); 253 allKgcs.retainAll(kgcs);
249 List<KpiGroup> repetitionKpis = kpiGroupService.list(Wrappers.<KpiGroup>lambdaQuery() 254 List<KpiGroup> repetitionKpis = kpiGroupService.list(Wrappers.<KpiGroup>lambdaQuery()
250 .eq(KpiGroup::getStatus, SettingStatusEnum.BE_EFFECTIVE) 255 .eq(KpiGroup::getStatus, SettingStatusEnum.BE_EFFECTIVE)
fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryGroupBizService.java
@@ -11,6 +11,7 @@ import cn.fw.morax.common.utils.EventBusUtil; @@ -11,6 +11,7 @@ import cn.fw.morax.common.utils.EventBusUtil;
11 import cn.fw.morax.common.utils.MessageFormatUtil; 11 import cn.fw.morax.common.utils.MessageFormatUtil;
12 import cn.fw.morax.common.utils.PublicUtil; 12 import cn.fw.morax.common.utils.PublicUtil;
13 import cn.fw.morax.domain.db.ApprovalRecord; 13 import cn.fw.morax.domain.db.ApprovalRecord;
  14 +import cn.fw.morax.domain.db.kpi.KpiGroup;
14 import cn.fw.morax.domain.db.salary.SalaryGroup; 15 import cn.fw.morax.domain.db.salary.SalaryGroup;
15 import cn.fw.morax.domain.db.salary.SalaryGroupProject; 16 import cn.fw.morax.domain.db.salary.SalaryGroupProject;
16 import cn.fw.morax.domain.db.salary.SalaryGroupProjectSettin; 17 import cn.fw.morax.domain.db.salary.SalaryGroupProjectSettin;
@@ -170,6 +171,7 @@ public class SalaryGroupBizService { @@ -170,6 +171,7 @@ public class SalaryGroupBizService {
170 * @param dto 171 * @param dto
171 */ 172 */
172 public void checkSalaryGroup(SalaryGroupDTO dto) { 173 public void checkSalaryGroup(SalaryGroupDTO dto) {
  174 + checkNameRepetition(dto.getId(), dto.getName());
173 //原来的绩效组配置不能在审批中 175 //原来的绩效组配置不能在审批中
174 if (PublicUtil.isNotEmpty(dto.getId())) { 176 if (PublicUtil.isNotEmpty(dto.getId())) {
175 SalaryGroup salaryGroup = salaryGroupService.getById(dto.getId()); 177 SalaryGroup salaryGroup = salaryGroupService.getById(dto.getId());
@@ -191,6 +193,21 @@ public class SalaryGroupBizService { @@ -191,6 +193,21 @@ public class SalaryGroupBizService {
191 } 193 }
192 194
193 /** 195 /**
  196 + * 检查薪酬组名称是否重复
  197 + *
  198 + * @param id
  199 + * @param name
  200 + */
  201 + public void checkNameRepetition(Long id, String name) {
  202 + int count = salaryGroupService.count(Wrappers.<SalaryGroup>lambdaQuery()
  203 + .eq(SalaryGroup::getName, name)
  204 + .ne(PublicUtil.isNotEmpty(id), SalaryGroup::getId, id)
  205 + .eq(SalaryGroup::getYn, Boolean.TRUE)
  206 + );
  207 + BV.isTrue(count <= 0, "薪酬组名称重复,请重新输入");
  208 + }
  209 +
  210 + /**
194 * 检查指标修改的权限 211 * 检查指标修改的权限
195 * 212 *
196 * @param dto 213 * @param dto