diff --git a/doc/ddl.sql b/doc/ddl.sql
index ca8cc4b..4f8ea1a 100644
--- a/doc/ddl.sql
+++ b/doc/ddl.sql
@@ -246,7 +246,7 @@ CREATE TABLE salary_general_settin
(
id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
leader_visibility TINYINT(1) COMMENT '管理层可见',
- dates_of_appeal VARCHAR(10) NOT NULL DEFAULT '1,5' COMMENT '可申诉日期;eg: 1,20 逗号隔开只存开始和结束',
+ dates_of_appeal VARCHAR(10) NOT NULL DEFAULT '3,5' COMMENT '可申诉日期;eg: 1,20 逗号隔开只存开始和结束',
payoff_date INT(2) COMMENT '薪资发放日期;取值1-28(每月)',
payoff_limit INT(11) COMMENT '薪资发放公户限额;元 0元则不限制',
group_id BIGINT(20) NOT NULL COMMENT '集团id',
diff --git a/doc/fw_morax_v2.sql b/doc/fw_morax_v2.sql
new file mode 100644
index 0000000..695e1cd
--- /dev/null
+++ b/doc/fw_morax_v2.sql
@@ -0,0 +1,1459 @@
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for approval_record
+-- 8.0 utf8mb4_0900_ai_ci
+-- 5.7 utf8mb4_general_ci
+-- ----------------------------
+DROP TABLE IF EXISTS `approval_record`;
+CREATE TABLE `approval_record`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `data_id` bigint NOT NULL COMMENT '被审批业务表主键',
+ `approval_type` int NOT NULL COMMENT '审批业务类型;1:绩效配置 2:薪酬配置 3:绩效星级申诉',
+ `approval_no` varchar(255) NOT NULL COMMENT '审批单号',
+ `approval_status` int NOT NULL COMMENT '审批状态;1:审批中 2:审批通过 3:审批拒绝',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`),
+ KEY `approval_record_approval_no_index` (`approval_no`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 63
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='审批记录';
+
+-- ----------------------------
+-- Table structure for eval
+-- ----------------------------
+DROP TABLE IF EXISTS `eval`;
+CREATE TABLE `eval`
+(
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `name` varchar(255) DEFAULT NULL COMMENT '考评,活动名称',
+ `type` tinyint(4) NULL DEFAULT 1 COMMENT '考评类型; 1:活动考评 2:其他考评',
+ `status` tinyint(4) NOT NULL COMMENT '状态;1:审批中 2:审批拒绝 3:生效中 4:草稿 ',
+ `group_id` bigint(20) NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) NULL DEFAULT 1 COMMENT '逻辑删除',
+ `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评';
+
+-- ----------------------------
+-- Table structure for eval_group
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_group`;
+CREATE TABLE `eval_group`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `eval_id` bigint NOT NULL COMMENT '考评id',
+ `egc` varchar(60) NOT NULL COMMENT '考评组编码',
+ `name` varchar(255) DEFAULT NULL COMMENT '考评,活动组名称',
+ `type` tinyint DEFAULT '1' COMMENT '考评类型; 1:活动考评 2:其他考评',
+ `post_id` bigint NOT NULL COMMENT '岗位id',
+ `post_name` varchar(255) DEFAULT NULL COMMENT '岗位名称',
+ `shop_ids` varchar(255) NOT NULL COMMENT '适用门店ids',
+ `shop_names` varchar(255) NOT NULL COMMENT '适用门店名称',
+ `reason` varchar(512) DEFAULT NULL COMMENT '调整原因',
+ `attachment` varchar(512) DEFAULT NULL COMMENT '附件;fid逗号隔开',
+ `indicator_num` int DEFAULT NULL COMMENT '包含指标数量',
+ `begin_time` date DEFAULT NULL COMMENT '生效时间',
+ `over_time` date DEFAULT NULL COMMENT '结束时间',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评组';
+
+-- ----------------------------
+-- Table structure for eval_group_indicator
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_group_indicator`;
+CREATE TABLE `eval_group_indicator`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `eval_group_id` bigint NOT NULL COMMENT '考评组配置id',
+ `name` varchar(255) DEFAULT NULL COMMENT '指标名称',
+ `base_score` int NOT NULL COMMENT '基础绩效分',
+ `score_way` tinyint DEFAULT NULL COMMENT '得分方式;1: 阶梯得分 2:普通得分',
+ `param_alias` varchar(255) NOT NULL COMMENT '考评项别名',
+ `precondition_alias` varchar(255) DEFAULT NULL COMMENT '前置考评项别名(目前预留)',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效组指标项';
+
+-- ----------------------------
+-- Table structure for eval_group_indicator_param
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_group_indicator_param`;
+CREATE TABLE `eval_group_indicator_param`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `eval_group_id` bigint NOT NULL COMMENT '考评组配置id',
+ `eval_group_indicator_id` bigint NOT NULL COMMENT '考评组指标id',
+ `param_type` tinyint NOT NULL COMMENT '条件类型(1.台阶条件,2,提成条件)',
+ `code_type` tinyint NOT NULL COMMENT '指标类型(1.指标,2,考评指标)',
+ `code` varchar(255) NOT NULL COMMENT '指标编码',
+ `name` varchar(255) DEFAULT NULL COMMENT '指标库名称',
+ `proportion` decimal(10, 4) DEFAULT NULL COMMENT '占比',
+ `cap` tinyint(1) DEFAULT '1' COMMENT '是否封顶',
+ `target_calc_type` tinyint(4) DEFAULT NULL COMMENT '目标计算类型;1: 目标值计算 2:最低要求计算',
+ `target_type` tinyint(4) DEFAULT '1' COMMENT '绩效目标值类型; 1:无 2:百分比 3:金额 4:台数',
+ `target_value` decimal(10, 4) DEFAULT NULL COMMENT '目标值',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评组指标参数';
+
+-- ----------------------------
+-- Table structure for eval_group_indicator_precondition
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_group_indicator_precondition`;
+CREATE TABLE `eval_group_indicator_precondition`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `eval_group_id` bigint NOT NULL COMMENT '考评组配置id',
+ `eval_group_indicator_id` bigint NOT NULL COMMENT '考评组指标id',
+ `code_type` tinyint(4) NOT NULL COMMENT '编码类型(1. 指标,2.考评指标)',
+ `code` varchar(255) NOT NULL COMMENT '指标编码',
+ `name` varchar(255) DEFAULT NULL COMMENT '指标库名称',
+ `target_calc_type` tinyint(4) DEFAULT NULL COMMENT '目标计算类型;1: 目标值计算 2:最低要求计算',
+ `target_type` tinyint(4) DEFAULT '1' COMMENT '绩效目标值类型; 1:无 2:百分比 3:金额 4:台数',
+ `target_value` decimal(10, 4) DEFAULT NULL COMMENT '目标值',
+ `sort` int NOT NULL COMMENT '排序',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评组指标条件';
+
+-- ----------------------------
+-- Table structure for eval_group_indicator_ladders
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_group_indicator_ladders`;
+CREATE TABLE `eval_group_indicator_ladders`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `eval_group_indicator_id` bigint NOT NULL COMMENT '考评组指标id',
+ `lower` decimal(10, 4) NOT NULL COMMENT '阶梯下限;大于等于',
+ `upper` decimal(10, 4) NOT NULL DEFAULT '65536.0000' COMMENT '阶梯上限;小于; 无上限的情况值为 2<<15',
+ `standard_score` tinyint NOT NULL COMMENT '标准分;本阶梯对应标准分',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 1
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评组指标得分阶梯';
+
+-- ----------------------------
+-- Table structure for eval_group_indicator_precondition_hit_log
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_group_indicator_precondition_hit_log`;
+CREATE TABLE `eval_group_indicator_precondition_hit_log`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `precondition_id` bigint NOT NULL COMMENT '考评组指标条件id',
+ `precondition_ladders_id` bigint NOT NULL COMMENT '考评组指标条件阶梯id',
+ `value` decimal(18, 2) DEFAULT NULL COMMENT '原始值',
+ `data_date` date NOT NULL COMMENT '数据日期',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `create_time` datetime DEFAULT NULL,
+ `update_time` datetime DEFAULT NULL,
+ `yn` tinyint(1) DEFAULT '1',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评指标条件记录';
+
+-- ----------------------------
+-- Table structure for eval_group_indicator_precondition_ladders
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_group_indicator_precondition_ladders`;
+CREATE TABLE `eval_group_indicator_precondition_ladders`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `precondition_id` bigint NOT NULL COMMENT '考评组指标条件id',
+ `lower` decimal(10, 4) NOT NULL COMMENT '阶梯下限;大于等于',
+ `upper` decimal(10, 4) NOT NULL DEFAULT '65536.0000' COMMENT '阶梯上限;小于; 无上限的情况值为 2<<15',
+ `score_percent` decimal(10, 4) DEFAULT NULL COMMENT '得分百分比',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评组指标条件得分阶梯';
+
+-- ----------------------------
+-- Table structure for eval_group_indicator_target_hit_log
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_group_indicator_target_hit_log`;
+CREATE TABLE `eval_group_indicator_target_hit_log`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `refer_id` bigint NOT NULL COMMENT '考评组指标/前置条件 id',
+ `target_type` tinyint NOT NULL COMMENT '类型 1:考评组指标 2:前置条件指标',
+ `value` decimal(18, 2) DEFAULT NULL COMMENT '原始值',
+ `reach_value` decimal(18, 2) DEFAULT NULL COMMENT '达成目标',
+ `data_date` date NOT NULL COMMENT '数据日期',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `create_time` datetime DEFAULT NULL,
+ `update_time` datetime DEFAULT NULL,
+ `yn` tinyint(1) DEFAULT '1',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评指标达成目标记录';
+
+-- ----------------------------
+-- Table structure for eval_group_reward
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_group_reward`;
+CREATE TABLE `eval_group_reward`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `eval_group_id` bigint NOT NULL COMMENT '考评组配置id',
+ `name` varchar(255) DEFAULT NULL COMMENT '考评,活动名称',
+ `cal_method` int NOT NULL COMMENT '计算方式; 1: 排名正负激励 2:阶梯奖励(翻倍) 3:总金额X达成率占比 4:固定值X达成率 5: 固定值+超额部分追加奖励',
+ `rank_type` tinyint NOT NULL COMMENT '排名方式;1:排名序号 2:排名人数百分比',
+ `money` decimal(10, 4) DEFAULT NULL COMMENT '金额',
+ `extra_money` decimal(10, 4) DEFAULT NULL COMMENT '追加奖励 XX 元/台,超额奖励用',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评奖惩';
+
+-- ----------------------------
+-- Table structure for eval_group_reward_ladders
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_group_reward_ladders`;
+CREATE TABLE `eval_group_reward_ladders`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `eval_group_id` bigint NOT NULL COMMENT '考评组配置id',
+ `eval_group_reward_id` bigint NOT NULL COMMENT '绩效组指标条件id',
+ `lower` decimal(10, 4) NOT NULL COMMENT '阶梯下限;大于等于',
+ `upper` decimal(10, 4) NOT NULL DEFAULT '65536.0000' COMMENT '阶梯上限;小于; 无上限的情况值为 2<<15',
+ `money` decimal(10, 4) DEFAULT NULL COMMENT '金额',
+ `cap_money` decimal(10, 4) DEFAULT NULL COMMENT '封顶金额/台',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评奖惩阶梯';
+
+-- ----------------------------
+-- Table structure for eval_group_reward_param
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_group_reward_param`;
+CREATE TABLE `eval_group_reward_param`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `eval_group_id` bigint NOT NULL COMMENT '考评组id',
+ `eval_group_reward_id` bigint NOT NULL COMMENT '考评奖惩id',
+ `param_type` tinyint NOT NULL COMMENT '参数类型(1.台阶,2,提成)',
+ `code_type` tinyint NOT NULL COMMENT '编码类型(1.指标,2.考评指标)',
+ `code` varchar(255) NOT NULL COMMENT '项目编码',
+ `name` varchar(255) DEFAULT NULL COMMENT '项目名称',
+ `proportion` decimal(10, 4) DEFAULT NULL COMMENT '占比',
+ `cap` tinyint(1) DEFAULT '1' COMMENT '是否封顶',
+ `target_calc_type` tinyint(4) DEFAULT NULL COMMENT '目标计算类型;1: 目标值计算 2:最低要求计算',
+ `target_type` tinyint DEFAULT '1' COMMENT '目标值类型; 1:无 2:百分比 3:金额 4:台数',
+ `target_value` decimal(10, 4) DEFAULT NULL COMMENT '目标值',
+ `money` decimal(10, 4) DEFAULT NULL COMMENT '金额',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评奖惩参数';
+
+-- ----------------------------
+-- Table structure for eval_group_reward_precondition
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_group_reward_precondition`;
+CREATE TABLE `eval_group_reward_precondition`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `eval_group_id` bigint NOT NULL COMMENT '考评组id',
+ `eval_group_reward_id` bigint NOT NULL COMMENT '考评奖惩id',
+ `cond_type` tinyint DEFAULT '1' COMMENT '条件值类型; 1:满足目标 2:满足排名率 3:金额',
+ `code_type` tinyint NOT NULL COMMENT '编码类型(1. 指标,2.考评指标)',
+ `code` varchar(255) NOT NULL COMMENT '项目编码',
+ `name` varchar(255) DEFAULT NULL COMMENT '项目名称',
+ `target_type` tinyint DEFAULT '1' COMMENT '条件值类型; 1:无 2:百分比 3:金额',
+ `target_value` decimal(10, 4) DEFAULT NULL COMMENT '目标值',
+ `cond_value` decimal(10, 4) DEFAULT NULL COMMENT '条件值',
+ `sort` int DEFAULT NULL COMMENT '排序',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评奖惩前置条件';
+
+-- ----------------------------
+-- Table structure for eval_group_reward_precondition_hit_log
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_group_reward_precondition_hit_log`;
+CREATE TABLE `eval_group_reward_precondition_hit_log`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `eval_group_id` bigint NOT NULL COMMENT '考评组配置id',
+ `eval_group_reward_id` bigint NOT NULL COMMENT '考评组奖惩id',
+ `precondition_id` bigint NOT NULL COMMENT '考评组奖惩条件id',
+ `value` decimal(18, 2) DEFAULT NULL COMMENT '原始值',
+ `reach_value` decimal(18, 2) DEFAULT NULL COMMENT '达成目标',
+ `data_date` date NOT NULL COMMENT '数据日期',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `create_time` datetime DEFAULT NULL,
+ `update_time` datetime DEFAULT NULL,
+ `yn` tinyint(1) DEFAULT '1',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评奖惩条件记录';
+
+-- ----------------------------
+-- Table structure for eval_indicator
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_indicator`;
+CREATE TABLE `eval_indicator`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `code` varchar(255) NOT NULL COMMENT '考评指标编码',
+ `name` varchar(255) DEFAULT NULL COMMENT '考评指标名称',
+ `sys_id` bigint DEFAULT NULL COMMENT '归属系统id',
+ `sys_prefix` varchar(64) DEFAULT NULL COMMENT '归属系统前缀',
+ `sys_name` varchar(32) DEFAULT NULL COMMENT '归属系统名称',
+ `role_code` varchar(64) DEFAULT NULL COMMENT '导入操作人员角色码',
+ `role_name` varchar(64) DEFAULT NULL COMMENT '导入操作人员角色名称',
+ `rule_type` tinyint DEFAULT NULL COMMENT '频率类型; 1:按滚动天 2:按星期 3:按月指定日期 4:按滚动月',
+ `rule_values` varchar(256) DEFAULT NULL COMMENT '频率值 ,号分隔(按星期、按月指定日期使用)',
+ `order_type` tinyint DEFAULT NULL COMMENT '按滚动月计算顺序; 1:正序 2:倒序',
+ `start_time` date DEFAULT NULL COMMENT '开始日期',
+ `target_type` tinyint DEFAULT '1' COMMENT '目标值类型; 1:无 2:百分比 3:金额 4:台数',
+ `enable` tinyint(1) NOT NULL COMMENT '启用/禁用;0:禁用 1:启用',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评指标';
+
+-- ----------------------------
+-- Table structure for eval_pool
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_pool`;
+CREATE TABLE `eval_pool`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `egc` varchar(60) NOT NULL COMMENT '考评组编码',
+ `eval_group_id` bigint NOT NULL COMMENT '考评组id',
+ `user_id` bigint NOT NULL COMMENT '用户id',
+ `user_name` varchar(255) DEFAULT NULL COMMENT '用户名称',
+ `post_id` bigint NOT NULL COMMENT '岗位id',
+ `post_name` varchar(255) DEFAULT NULL COMMENT '岗位名称',
+ `shop_id` bigint NOT NULL COMMENT '门店id',
+ `shop_name` varchar(255) DEFAULT NULL COMMENT '门店名称',
+ `fund_shop_id` bigint DEFAULT NULL COMMENT '社保公积金门店id',
+ `fund_shop_name` varchar(255) DEFAULT NULL COMMENT '社保公积金门店名称',
+ `reward` decimal(18, 2) NOT NULL COMMENT '考评奖惩',
+ `score` decimal(10, 2) NOT NULL COMMENT '考评得分',
+ `score_ratio` decimal(10, 2) NOT NULL COMMENT '考评得分率',
+ `monthly` varchar(8) NOT NULL COMMENT '月度',
+ `regular` tinyint(1) NOT NULL COMMENT '固定的',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`),
+ KEY `eval_pool_monthly_index` (`monthly`),
+ KEY `eval_pool_salary_group_id_index` (`eval_group_id`),
+ KEY `eval_pool_user_id_index` (`user_id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评池';
+
+-- ----------------------------
+-- Table structure for eval_pool_indicator_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `eval_pool_indicator_detail`;
+CREATE TABLE `eval_pool_indicator_detail`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `eval_pool_id` bigint NOT NULL COMMENT '考评池id',
+ `eval_group_indicator_id` bigint DEFAULT NULL COMMENT '考评项id',
+ `name` varchar(255) DEFAULT NULL COMMENT '指标名称',
+ `base_score` int NOT NULL COMMENT '基础绩效分',
+ `score` decimal(10, 2) NOT NULL COMMENT '考评得分',
+ `score_ratio` decimal(10, 2) NOT NULL COMMENT '考评得分率',
+ `monthly` varchar(8) NOT NULL COMMENT '月度',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 3804686
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='考评指标明细';
+
+-- ----------------------------
+-- Table structure for income_compensation
+-- ----------------------------
+DROP TABLE IF EXISTS `income_compensation`;
+CREATE TABLE `income_compensation`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `post_id` bigint NOT NULL COMMENT '岗位id',
+ `post_name` varchar(255) DEFAULT NULL COMMENT '岗位名称',
+ `shop_ids` varchar(255) NOT NULL COMMENT '适用门店ids',
+ `shop_names` varchar(255) NOT NULL COMMENT '适用门店名称',
+ `months` varchar(255) NOT NULL COMMENT '多个生效月份',
+ `money` decimal(10, 4) DEFAULT NULL COMMENT '单人补偿金额',
+ `max_money` decimal(10, 4) DEFAULT NULL COMMENT '单人最高补偿金额',
+ `status` tinyint NOT NULL COMMENT '状态;1:审批中 3:生效中 4:已失效 ',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_by` bigint DEFAULT NULL COMMENT '创建人',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_by` bigint DEFAULT NULL COMMENT '更新人',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='收入补偿配置';
+
+-- ----------------------------
+-- Table structure for income_compensation_list
+-- ----------------------------
+DROP TABLE IF EXISTS `income_compensation_list`;
+CREATE TABLE `income_compensation_list`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `income_compensation_id` bigint NOT NULL COMMENT '补偿id',
+ `post_id` bigint NOT NULL COMMENT '岗位id',
+ `shop_id` bigint NOT NULL COMMENT '门店id',
+ `data_month` varchar(255) NOT NULL COMMENT '生效月份',
+ `effective` tinyint(1) NOT NULL COMMENT '有效性;0:生效 1:失效 ',
+ `ineffective_date` date DEFAULT NULL COMMENT '失效时间 ',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='收入补偿清单';
+
+-- ----------------------------
+-- Table structure for indicators
+-- ----------------------------
+DROP TABLE IF EXISTS `indicators`;
+CREATE TABLE `indicators`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `indicator_code` varchar(32) NOT NULL COMMENT '指标编号',
+ `indicator_name` varchar(255) NOT NULL COMMENT '指标名称',
+ `sys_id` bigint NOT NULL COMMENT '归属系统id',
+ `sys_prefix` varchar(64) DEFAULT NULL COMMENT '归属系统前缀',
+ `sys_name` varchar(32) DEFAULT NULL COMMENT '归属系统名称',
+ `role_type` tinyint NOT NULL COMMENT '适用角色类型;1: 全部角色 2:全部管理角色 3:自定义',
+ `role_codes` varchar(1024) DEFAULT NULL COMMENT '适用角色码',
+ `role_names` varchar(2048) DEFAULT NULL COMMENT '适用角色名称',
+ `enable` tinyint(1) NOT NULL COMMENT '启用/禁用;0:禁用 1:启用',
+ `target_type` tinyint NOT NULL DEFAULT '1' COMMENT '绩效目标值类型; 1:无 2:百分比 3:金额',
+ `data_type` tinyint NOT NULL COMMENT '数据类型;1:台数 2:百分比 3:金额',
+ `apply_types` varchar(255) NOT NULL COMMENT '适用范围类型;1:绩效组 2:薪酬组 3:考评组',
+ `inner_indicator` tinyint(1) DEFAULT '0' COMMENT '内部指标',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `idx_indicator_code` (`indicator_code`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 40
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='指标库';
+
+-- ----------------------------
+-- Table structure for kpi_group
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_group`;
+CREATE TABLE `kpi_group`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `name` varchar(255) DEFAULT NULL COMMENT '绩效组名称',
+ `kgc` varchar(60) NOT NULL COMMENT '绩效组编码',
+ `post_id` bigint NOT NULL COMMENT '岗位id',
+ `post_name` varchar(255) DEFAULT NULL COMMENT '岗位名称',
+ `shop_ids` varchar(255) NOT NULL COMMENT '适用门店ids',
+ `shop_names` varchar(255) NOT NULL COMMENT '适用门店名称',
+ `pre_id` bigint DEFAULT NULL COMMENT '前一次配置id',
+ `begin_time` date NOT NULL COMMENT '生效时间',
+ `over_time` date DEFAULT NULL COMMENT '失效时间',
+ `reason` varchar(512) DEFAULT NULL COMMENT '调整原因',
+ `attachment` varchar(512) DEFAULT NULL COMMENT '附件;fid逗号隔开',
+ `status` tinyint NOT NULL COMMENT '状态;1:审批中 2:待生效 3:生效中 4:已失效',
+ `indicator_num` int DEFAULT NULL COMMENT '包含指标数量',
+ `star_evaluation_type` tinyint NOT NULL COMMENT '星级评定方式;1:绩效得分率 2:人员百分比',
+ `revoked_score_ratio` decimal(10, 4) DEFAULT NULL COMMENT '人员百分比,撤销D级得分率',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_by` bigint DEFAULT NULL COMMENT '创建人',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_by` bigint DEFAULT NULL COMMENT '更新人',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 78
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效组配置';
+
+-- ----------------------------
+-- Table structure for kpi_group_indicator
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_group_indicator`;
+CREATE TABLE `kpi_group_indicator`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `kpi_group_id` bigint NOT NULL COMMENT '绩效组配置id',
+ `name` varchar(255) DEFAULT NULL COMMENT '指标名称',
+ `base_score` int NOT NULL COMMENT '基础绩效分',
+ `score_way` tinyint DEFAULT NULL COMMENT '得分方式;1: 阶梯得分 2:普通得分',
+ `param_alias` varchar(255) NOT NULL COMMENT '考核项别名',
+ `precondition_alias` varchar(255) DEFAULT NULL COMMENT '前置考核项别名(目前预留)',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效组指标项';
+
+-- ----------------------------
+-- Table structure for kpi_group_indicator_hit_log
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_group_indicator_hit_log`;
+CREATE TABLE `kpi_group_indicator_hit_log`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `kpi_pool_id` bigint NOT NULL COMMENT '绩效池id',
+ `kpi_group_indicator_id` bigint NOT NULL COMMENT '绩效组指标id',
+ `kpi_group_indicator_ladders_id` bigint NOT NULL COMMENT '绩效组指标阶梯id',
+ `kpi_value` decimal(18, 2) DEFAULT NULL COMMENT '绩效值',
+ `data_date` date NOT NULL COMMENT '数据日期',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `create_time` datetime DEFAULT NULL,
+ `update_time` datetime DEFAULT NULL,
+ `yn` tinyint(1) DEFAULT '1',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `salary_project_hit_log_index` (`kpi_group_indicator_id`, `kpi_pool_id`, `data_date`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 1129
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='用户绩效项命中记录';
+
+-- ----------------------------
+-- Table structure for kpi_group_indicator_ladders
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_group_indicator_ladders`;
+CREATE TABLE `kpi_group_indicator_ladders`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `kpi_group_indicator_id` bigint NOT NULL COMMENT '绩效组指标项id',
+ `lower` decimal(10, 4) NOT NULL COMMENT '阶梯下限;大于等于',
+ `upper` decimal(10, 4) NOT NULL DEFAULT '65536.0000' COMMENT '阶梯上限;小于; 无上限的情况值为 2<<15',
+ `standard_score` tinyint NOT NULL COMMENT '标准分;本阶梯对应标准分',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 271
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='指标项得分阶梯';
+
+-- ----------------------------
+-- Table structure for kpi_group_indicator_param
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_group_indicator_param`;
+CREATE TABLE `kpi_group_indicator_param`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `kpi_group_id` bigint NOT NULL COMMENT '绩效组配置id',
+ `kpi_group_indicator_id` bigint NOT NULL COMMENT '绩效组指标id',
+ `param_type` tinyint NOT NULL COMMENT '参数类型(1.台阶条件,2,提成条件)',
+ `indicator_code` varchar(255) NOT NULL COMMENT '指标编码',
+ `indicator_name` varchar(255) DEFAULT NULL COMMENT '指标库名称',
+ `proportion` decimal(10, 4) DEFAULT NULL COMMENT '占比',
+ `cap` tinyint(1) DEFAULT '1' COMMENT '是否封顶',
+ `target_calc_type` tinyint(4) DEFAULT NULL COMMENT '目标计算类型;1: 目标值计算 2:最低要求计算',
+ `target_type` tinyint(4) DEFAULT '1' COMMENT '绩效目标值类型; 1:无 2:百分比 3:金额 4:台数',
+ `target_value` decimal(10, 4) DEFAULT NULL COMMENT '目标值',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效组指标参数';
+
+-- ----------------------------
+-- Table structure for kpi_group_indicator_precondition
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_group_indicator_precondition`;
+CREATE TABLE `kpi_group_indicator_precondition`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `kpi_group_id` bigint NOT NULL COMMENT '绩效组配置id',
+ `kpi_group_indicator_id` bigint NOT NULL COMMENT '绩效组指标id',
+ `indicator_code` varchar(255) NOT NULL COMMENT '指标编码',
+ `indicator_name` varchar(255) DEFAULT NULL COMMENT '指标库名称',
+ `target_calc_type` tinyint(4) DEFAULT NULL COMMENT '目标计算类型;1: 目标值计算 2:最低要求计算',
+ `target_type` tinyint(4) DEFAULT '1' COMMENT '绩效目标值类型; 1:无 2:百分比 3:金额 4:台数',
+ `target_value` decimal(10, 4) DEFAULT NULL COMMENT '目标值',
+ `sort` int NOT NULL COMMENT '排序',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效组指标条件';
+
+-- ----------------------------
+-- Table structure for kpi_group_indicator_precondition_hit_log
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_group_indicator_precondition_hit_log`;
+CREATE TABLE `kpi_group_indicator_precondition_hit_log`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `precondition_id` bigint DEFAULT NULL COMMENT '绩效组指标条件id',
+ `precondition_ladders_id` bigint DEFAULT NULL COMMENT '命中绩效组指标条件得分阶梯id',
+ `value` decimal(18, 2) DEFAULT NULL COMMENT '值',
+ `data_date` date NOT NULL COMMENT '数据日期',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `create_time` datetime DEFAULT NULL,
+ `update_time` datetime DEFAULT NULL,
+ `yn` tinyint(1) DEFAULT '1',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效指标前置条件命中条件记录';
+
+-- ----------------------------
+-- Table structure for kpi_group_indicator_precondition_ladders
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_group_indicator_precondition_ladders`;
+CREATE TABLE `kpi_group_indicator_precondition_ladders`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `precondition_id` bigint NOT NULL COMMENT '绩效组指标条件id',
+ `lower` decimal(10, 4) NOT NULL COMMENT '阶梯下限;大于等于',
+ `upper` decimal(10, 4) NOT NULL DEFAULT '65536.0000' COMMENT '阶梯上限;小于; 无上限的情况值为 2<<15',
+ `score_percent` decimal(10, 4) DEFAULT NULL COMMENT '得分百分比',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效组指标条件得分阶梯';
+
+-- ----------------------------
+-- Table structure for kpi_group_indicator_score_log
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_group_indicator_score_log`;
+CREATE TABLE `kpi_group_indicator_score_log`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `kpi_group_indicator_id` bigint NOT NULL COMMENT '绩效组指标项id',
+ `score` decimal(18,3) NOT NULL COMMENT '得分',
+ `data_date` date NOT NULL COMMENT '数据日期',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效组指标项得分记录';
+
+-- ----------------------------
+-- Table structure for kpi_group_indicator_target_hit_log
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_group_indicator_target_hit_log`;
+CREATE TABLE `kpi_group_indicator_target_hit_log`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `refer_id` bigint NOT NULL COMMENT '绩效组指标/前置条件配置id',
+ `target_type` tinyint NOT NULL COMMENT '类型 1:绩效组指标 2:前置条件指标',
+ `value` decimal(18, 2) DEFAULT NULL COMMENT '原始值',
+ `reach_value` decimal(18, 2) DEFAULT NULL COMMENT '达成目标',
+ `data_date` date NOT NULL COMMENT '数据日期',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `create_time` datetime DEFAULT NULL,
+ `update_time` datetime DEFAULT NULL,
+ `yn` tinyint(1) DEFAULT '1',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效指标目标达成记录';
+
+-- ----------------------------
+-- Table structure for kpi_group_rank
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_group_rank`;
+CREATE TABLE `kpi_group_rank`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `name` varchar(255) NOT NULL COMMENT '组合名称',
+ `star_evaluation_type` tinyint NOT NULL COMMENT '星级评定方式;1:绩效得分率 2:人员百分比',
+ `revoked_score_ratio` decimal(10, 4) DEFAULT NULL COMMENT '撤销D级得分率',
+ `kgcs` varchar(500) NOT NULL COMMENT '绩效组编码',
+ `ineffective_date` date DEFAULT NULL COMMENT '失效日期',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_by` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_by` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 11
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效组排名配置';
+
+-- ----------------------------
+-- Table structure for kpi_group_rank_star_ladders
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_group_rank_star_ladders`;
+CREATE TABLE `kpi_group_rank_star_ladders`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `kpi_group_rank_id` bigint DEFAULT NULL COMMENT '绩效组排名配置id',
+ `level` tinyint NOT NULL COMMENT '等级;1:A 2:B 3:C 4:D',
+ `lower` decimal(10, 2) NOT NULL COMMENT '下限',
+ `upper` decimal(10, 2) DEFAULT NULL COMMENT '上限',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 41
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='排名星级评定阶梯';
+
+-- ----------------------------
+-- Table structure for kpi_group_user
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_group_user`;
+CREATE TABLE `kpi_group_user`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `kgc` varchar(60) NOT NULL COMMENT '绩效组编码',
+ `kpi_group_id` bigint DEFAULT NULL COMMENT '绩效组id',
+ `user_id` bigint NOT NULL COMMENT '人员id',
+ `user_name` varchar(255) DEFAULT NULL COMMENT '人员名称',
+ `post_id` bigint NOT NULL COMMENT '岗位码',
+ `post_name` varchar(255) DEFAULT NULL COMMENT '岗位名称',
+ `shop_id` bigint NOT NULL COMMENT '门店id',
+ `shop_name` varchar(255) DEFAULT NULL COMMENT '在职门店',
+ `ignored` tinyint(1) NOT NULL COMMENT '是否不计入绩效考核',
+ `ignore_cause` tinyint DEFAULT NULL COMMENT '不计入原因;枚举待定',
+ `ignore_cause_desc` varchar(255) DEFAULT NULL COMMENT '不计入原因描述',
+ `anticipated_date` date DEFAULT NULL COMMENT '开始考核时间',
+ `remark` varchar(255) DEFAULT NULL COMMENT '备注',
+ `data_date` date DEFAULT NULL COMMENT '数据日期',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`),
+ KEY `kpi_group_user_data_date_index` (`data_date`),
+ KEY `kpi_group_user_user_id_index` (`user_id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 3553
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效组人员';
+
+-- ----------------------------
+-- Table structure for kpi_indicator_user_value
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_indicator_user_value`;
+CREATE TABLE `kpi_indicator_user_value`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `user_id` bigint NOT NULL COMMENT '人员id',
+ `indicator_code` varchar(255) NOT NULL COMMENT '指标编码',
+ `indicator_name` varchar(255) DEFAULT NULL COMMENT '指标库名称',
+ `indicator_value` varchar(2000) NOT NULL COMMENT '指标业务值;jons字符串 map类型',
+ `value_type` tinyint NOT NULL COMMENT '类型;1:台数 2:百分比 3:金额 4:条件值',
+ `data_date` date DEFAULT NULL COMMENT '数据日期',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`),
+ KEY `kpi_indicator_value_data_date_index` (`data_date`),
+ KEY `kpi_indicator_value_user_id_index` (`user_id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效人员指标业务值';
+
+-- ----------------------------
+-- Table structure for kpi_mq_log
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_mq_log`;
+CREATE TABLE `kpi_mq_log`
+(
+ `id` bigint NOT NULL,
+ `indicator_code` varchar(225) NOT NULL COMMENT '指标编码',
+ `post_id` bigint NOT NULL COMMENT '岗位id',
+ `send_date` date NOT NULL COMMENT '数据时间 可能为过去的时间',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `kpi_mq_log_id_uindex` (`id`),
+ KEY `kpi_mq_log_indicator_code_index` (`indicator_code`),
+ KEY `kpi_mq_log_post_code_index` (`post_id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效上报mq发送记录';
+
+-- ----------------------------
+-- Table structure for kpi_pool
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_pool`;
+CREATE TABLE `kpi_pool`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `kgc` varchar(60) NOT NULL COMMENT '绩效组编码',
+ `kpi_group_id` bigint NOT NULL COMMENT '绩效组id',
+ `user_id` bigint NOT NULL COMMENT '用户id',
+ `user_name` varchar(255) DEFAULT NULL COMMENT '用户名称',
+ `post_id` bigint NOT NULL COMMENT '岗位id',
+ `post_name` varchar(255) DEFAULT NULL COMMENT '岗位名称',
+ `shop_id` bigint NOT NULL COMMENT '门店id',
+ `shop_name` varchar(255) DEFAULT NULL COMMENT '门店名称',
+ `kpi_score` decimal(10, 2) NOT NULL COMMENT '绩效得分',
+ `kpi_score_ratio` decimal(10, 4) NOT NULL COMMENT '绩效得分率',
+ `average_kpi_score_ratio` decimal(10, 4) NOT NULL COMMENT '平均绩效得分率',
+ `star_level` tinyint DEFAULT NULL COMMENT '星级;1: A 2:B 3:C 4:D',
+ `actual_star` tinyint DEFAULT NULL COMMENT '实际星级;默认等于系统评定的星级,有调整的情况修改次字段',
+ `revoked` tinyint(1) DEFAULT NULL COMMENT 'D级撤销状态;是否撤销本次D级',
+ `inclusion` tinyint(1) DEFAULT NULL COMMENT '是否纳入绩效计算',
+ `monthly` varchar(8) NOT NULL COMMENT '月度',
+ `regular` tinyint(1) NOT NULL DEFAULT '0' COMMENT '固定的',
+ `rank` int DEFAULT NULL COMMENT '排名',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `pool_kpi_id_user_id_monthly_uindex` (`kpi_group_id`, `user_id`, `monthly`),
+ KEY `kpi_pool_kpi_group_id_index` (`kpi_group_id`),
+ KEY `kpi_pool_monthly_index` (`monthly`),
+ KEY `kpi_pool_user_id_index` (`user_id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 196
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效池';
+
+-- ----------------------------
+-- Table structure for kpi_pool_indicator_value
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_pool_indicator_value`;
+CREATE TABLE `kpi_pool_indicator_value`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `kpi_pool_id` bigint NOT NULL COMMENT '绩效池id',
+ `user_id` bigint NOT NULL COMMENT '人员id',
+ `indicator_code` varchar(255) NOT NULL COMMENT '指标编码',
+ `indicator_value` decimal(10, 4) NOT NULL COMMENT '指标业务值',
+ `indicator_score` decimal(10, 4) NOT NULL COMMENT '指标得分',
+ `data_date` date DEFAULT NULL COMMENT '数据日期',
+ `mq_log_id` bigint NOT NULL COMMENT 'mq记录id',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`),
+ KEY `kpi_pool_indicator_value_data_date_index` (`data_date`),
+ KEY `kpi_pool_indicator_value_user_id_index` (`user_id`),
+ KEY `kpi_pool_indicator_value_mq_log_id_index` (`mq_log_id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 16801
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效人员指标业务值';
+
+-- ----------------------------
+-- Table structure for kpi_reward_point
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_reward_point`;
+CREATE TABLE `kpi_reward_point`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `user_id` bigint NOT NULL COMMENT '用户id',
+ `post_id` bigint NOT NULL COMMENT '岗位id',
+ `shop_id` bigint NOT NULL COMMENT '在职门店',
+ `occurred_time` datetime NOT NULL COMMENT '产生时间',
+ `monthly` varchar(12) NOT NULL COMMENT '月度',
+ `score_point` decimal(18, 4) NOT NULL COMMENT '出炉的分数值(为正数则是奖励,负数则是处罚)',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `create_time` datetime DEFAULT NULL,
+ `update_time` datetime DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `kpi_reward_point_monthly_index` (`monthly`),
+ KEY `kpi_reward_point_user_id_post_id_index` (`user_id`, `post_id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 2031
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效分奖惩纪录';
+
+-- ----------------------------
+-- Table structure for kpi_star_ladders
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_star_ladders`;
+CREATE TABLE `kpi_star_ladders`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `kpi_group_id` bigint DEFAULT NULL COMMENT '绩效组配置id',
+ `level` tinyint NOT NULL COMMENT '等级;1:A 2:B 3:C 4:D',
+ `lower` decimal(10, 2) NOT NULL COMMENT '下限',
+ `upper` decimal(10, 2) DEFAULT NULL COMMENT '上限',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 309
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='星级评定阶梯';
+
+-- ----------------------------
+-- Table structure for kpi_star_rule
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_star_rule`;
+CREATE TABLE `kpi_star_rule`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `roll_month` int DEFAULT NULL COMMENT '滚动月数',
+ `forced_turnover_cycle` int DEFAULT NULL COMMENT '强制离职考核周期',
+ `max_unqualified_times` int DEFAULT NULL COMMENT '强制离职周期内最大累计D级数',
+ `continuous_monthly` int DEFAULT NULL COMMENT '连续月份;满足次条件减少一次D级',
+ `min_score_ratio` decimal(10, 4) DEFAULT NULL COMMENT '最小得分率',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 3
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效星级规则';
+
+-- ----------------------------
+-- Table structure for kpi_star_special_rule
+-- ----------------------------
+DROP TABLE IF EXISTS `kpi_star_special_rule`;
+CREATE TABLE `kpi_star_special_rule`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `user_id` bigint NOT NULL COMMENT '人员id',
+ `user_name` varchar(255) DEFAULT NULL COMMENT '人员名称',
+ `earliest_starting_monthly` date DEFAULT NULL COMMENT '开始考核日期',
+ `revised_monthly` date DEFAULT NULL COMMENT '修正月度',
+ `revised_level` tinyint DEFAULT NULL COMMENT '修正星级;1: A 2:B 3:C 4:D',
+ `exclusion_monthly` date DEFAULT NULL COMMENT '排除月度',
+ `revoked_times` int DEFAULT NULL COMMENT '免除次数;免除D级次数',
+ `status` tinyint DEFAULT NULL COMMENT '状态;1:审批中 2:待生效 3:生效中 4:已失效',
+ `reason` varchar(255) DEFAULT NULL COMMENT '原因',
+ `attachment` varchar(255) DEFAULT NULL COMMENT '附件;fid逗号隔开',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 6
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='绩效星级特殊规则';
+
+-- ----------------------------
+-- Table structure for payroll_record
+-- ----------------------------
+DROP TABLE IF EXISTS `payroll_record`;
+CREATE TABLE `payroll_record`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `user_id` bigint NOT NULL COMMENT '员工id',
+ `user_name` varchar(32) DEFAULT NULL COMMENT '用户名称',
+ `shop_id` bigint NOT NULL COMMENT '门店id',
+ `fund_shop_id` bigint DEFAULT NULL COMMENT '社保公积金门店id',
+ `dealer_id` bigint DEFAULT NULL COMMENT '商家id',
+ `biz_id` varchar(32) NOT NULL COMMENT '业务ID(对应薪酬池id)',
+ `payment` tinyint(1) NOT NULL COMMENT '会否是付款',
+ `amount` decimal(18, 4) NOT NULL COMMENT '金额',
+ `corporate` tinyint(1) NOT NULL COMMENT '公帐发放',
+ `salary` tinyint(1) NOT NULL COMMENT '是否是工资',
+ `payroll_status` int NOT NULL COMMENT '发放状态 1:待推送到财务系统 2:已推送到财务系统 3:已发送成功',
+ `payroll_token` varchar(64) DEFAULT NULL COMMENT '发送token',
+ `monthly` varchar(12) DEFAULT NULL COMMENT '月度',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`),
+ KEY `Payroll_Record_biz_id_index` (`biz_id`),
+ KEY `Payroll_Record_monthly_index` (`monthly`),
+ KEY `Payroll_Record_user_id_index` (`user_id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪资发放记录';
+
+-- ----------------------------
+-- Table structure for salary_confirm
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_confirm`;
+CREATE TABLE `salary_confirm`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `salary_pool_id` bigint NOT NULL COMMENT '薪酬池id',
+ `plan_time` datetime NOT NULL COMMENT '计划推送待办时间',
+ `pushed_todo` tinyint(1) NOT NULL COMMENT '是否推送代办',
+ `todo_code` varchar(64) NOT NULL COMMENT '待办编码',
+ `deadline` datetime DEFAULT NULL COMMENT '截止日期',
+ `confirmed_status` tinyint DEFAULT NULL COMMENT '确认状态;1:待定 2:已确认 3:已取消',
+ `confirm_time` datetime DEFAULT NULL COMMENT '确认时间',
+ `self_confirm` tinyint(1) DEFAULT NULL COMMENT '是否本人确认',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`),
+ KEY `salary_confirm_salary_pool_id_index` (`salary_pool_id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪酬确认记录';
+
+-- ----------------------------
+-- Table structure for salary_extra_project
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_extra_project`;
+CREATE TABLE `salary_extra_project`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `post_id` bigint NOT NULL COMMENT '岗位id',
+ `shop_id` bigint NOT NULL COMMENT '在职门店id',
+ `user_id` bigint NOT NULL COMMENT '用户id',
+ `money` decimal(18, 4) NOT NULL COMMENT '金额',
+ `timely` tinyint(1) NOT NULL COMMENT '及时处理 为''真''时会立即推送给财务,否则会并入工资里结算',
+ `salary_type` int NOT NULL COMMENT '额外项类型 1:奖励 2:处罚 3:社保扣除项 4:福利补贴',
+ `data_id` varchar(64) NOT NULL COMMENT '业务数据id',
+ `data_name` varchar(128) NOT NULL COMMENT '业务名称 e.g 考勤扣款、活动奖金... ',
+ `data_date` date NOT NULL COMMENT '产生时间',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 2150
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='额外薪资项';
+
+-- ----------------------------
+-- Table structure for salary_general_settin
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_general_settin`;
+CREATE TABLE `salary_general_settin`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `leader_visibility` tinyint(1) DEFAULT NULL COMMENT '管理层可见',
+ `dates_of_appeal` varchar(10) NOT NULL DEFAULT '3,5' COMMENT '可申诉日期;eg: 1,20 逗号隔开只存开始和结束',
+ `payoff_date` int DEFAULT NULL COMMENT '薪资发放日期;取值1-28(每月)',
+ `payoff_limit` int DEFAULT NULL COMMENT '薪资发放公户限额;元 0元则不限制',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 10
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪酬通用设置';
+
+-- ----------------------------
+-- Table structure for salary_group
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_group`;
+CREATE TABLE `salary_group`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `name` varchar(255) DEFAULT NULL COMMENT '薪酬组名称',
+ `sgc` varchar(60) NOT NULL COMMENT '薪酬组编码',
+ `post_id` bigint NOT NULL COMMENT '岗位id',
+ `post_name` varchar(255) DEFAULT NULL COMMENT '岗位名称',
+ `shop_ids` varchar(255) NOT NULL COMMENT '适用门店ids',
+ `shop_names` varchar(1024) DEFAULT NULL COMMENT '适用门店名称',
+ `pre_id` bigint DEFAULT NULL COMMENT '前次配置id',
+ `begin_time` date DEFAULT NULL COMMENT '生效时间',
+ `over_time` date DEFAULT NULL COMMENT '失效时间',
+ `reason` varchar(900) DEFAULT NULL COMMENT '调整原因',
+ `attachment` varchar(512) DEFAULT NULL COMMENT '附件ids',
+ `status` int NOT NULL COMMENT '状态;1:审批中 2:待生效 3:生效中 4:已失效',
+ `project_num` int DEFAULT NULL COMMENT '包薪酬项数量;只统计可配置的的项目数',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 41
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪酬组配置';
+
+-- ----------------------------
+-- Table structure for salary_group_project
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_group_project`;
+CREATE TABLE `salary_group_project`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `salary_group_id` bigint NOT NULL COMMENT '薪酬组id',
+ `name` varchar(255) DEFAULT NULL COMMENT '薪酬项目名称',
+ `cal_method` int NOT NULL COMMENT '计算方式;1:员工星级 2:固定金额 3:台阶提成 4:车系提成',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 212
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪酬组薪酬项目';
+
+-- ----------------------------
+-- Table structure for salary_group_project_hit_log
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_group_project_hit_log`;
+CREATE TABLE `salary_group_project_hit_log`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `salary_project_id` bigint NOT NULL COMMENT '薪酬项id',
+ `salary_pool_id` bigint NOT NULL COMMENT '薪酬池id',
+ `salary_group_project_settin_id` bigint DEFAULT NULL COMMENT '命中具体配置项id',
+ `salary_value` decimal(18, 2) DEFAULT NULL COMMENT '薪酬值',
+ `data_date` date NOT NULL COMMENT '数据日期',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `create_time` datetime DEFAULT NULL,
+ `update_time` datetime DEFAULT NULL,
+ `yn` tinyint(1) DEFAULT '1',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `salary_project_hit_log_index` (`salary_project_id`, `salary_pool_id`, `data_date`,
+ `salary_group_project_settin_id`) USING BTREE
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 3617
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='用户薪酬项命中记录';
+
+-- ----------------------------
+-- Table structure for salary_group_project_param
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_group_project_param`;
+CREATE TABLE `salary_group_project_param`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `salary_group_id` bigint NOT NULL COMMENT '薪酬组id',
+ `salary_group_project_id` bigint NOT NULL COMMENT '薪酬组项目id',
+ `param_type` tinyint DEFAULT NULL COMMENT '参数类型(1.台阶指标,2,计算指标)',
+ `indicator_code` varchar(255) NOT NULL COMMENT '指标编码',
+ `indicator_name` varchar(255) DEFAULT NULL COMMENT '指标库名称',
+ `target_calc_type` tinyint(4) DEFAULT NULL COMMENT '目标计算类型;1: 目标值计算 2:最低要求计算',
+ `target_type` tinyint(4) DEFAULT '1' COMMENT '目标值类型; 1:无 2:百分比 3:金额 4:台数',
+ `target_value` decimal(10, 4) DEFAULT NULL COMMENT '目标值',
+ `proportion` decimal(10, 4) DEFAULT NULL COMMENT '占比',
+ `cap` tinyint(1) DEFAULT '1' COMMENT '是否封顶',
+ `sort` int DEFAULT NULL COMMENT '排序',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪酬组薪酬项目参数';
+
+-- ----------------------------
+-- Table structure for salary_group_project_precondition
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_group_project_precondition`;
+CREATE TABLE `salary_group_project_precondition`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `salary_group_id` bigint NOT NULL COMMENT '薪酬组id',
+ `salary_group_project_id` bigint NOT NULL COMMENT '薪酬组项目id',
+ `indicator_code` varchar(255) NOT NULL COMMENT '指标编码',
+ `indicator_name` varchar(255) DEFAULT NULL COMMENT '指标库名称',
+ `target_calc_type` tinyint(4) DEFAULT NULL COMMENT '目标计算类型;1: 目标值计算 2:最低要求计算',
+ `target_type` tinyint(4) DEFAULT '1' COMMENT '条件值类型; 1:无 2:百分比 3:金额 4:台数',
+ `target_value` decimal(10, 4) DEFAULT NULL COMMENT '目标值',
+ `cond_value` decimal(10, 4) DEFAULT NULL COMMENT '条件值',
+ `sort` int DEFAULT NULL COMMENT '排序',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪酬组薪酬项目前置条件';
+
+-- ----------------------------
+-- Table structure for salary_group_project_precondition_log
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_group_project_precondition_log`;
+CREATE TABLE `salary_group_project_precondition_log`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `salary_group_project_id` bigint NOT NULL COMMENT '薪酬组项目id',
+ `precondition_id` bigint DEFAULT NULL COMMENT '薪酬组薪酬项目前置条件id',
+ `value` decimal(18, 2) DEFAULT NULL COMMENT '值',
+ `data_date` date NOT NULL COMMENT '数据日期',
+ `create_time` datetime DEFAULT NULL,
+ `update_time` datetime DEFAULT NULL,
+ `yn` tinyint(1) DEFAULT '1',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪酬指标条件记录';
+
+-- ----------------------------
+-- Table structure for salary_group_project_settin
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_group_project_settin`;
+CREATE TABLE `salary_group_project_settin`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `salary_group_project_id` bigint NOT NULL COMMENT '薪酬项目配置id',
+ `stair_key` bigint DEFAULT NULL COMMENT '阶梯key;星级名称/新车销售按车系计算是 对应车系id',
+ `stair_key_desc` varchar(255) DEFAULT NULL COMMENT '阶梯key对应描述',
+ `stair_value` decimal(18, 2) NOT NULL COMMENT '计算相关值',
+ `stair_min` int DEFAULT NULL COMMENT '阶梯值下限',
+ `stair_max` int DEFAULT NULL COMMENT '阶梯值上限;阶梯值上限',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 444
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪酬项目配置';
+
+-- ----------------------------
+-- Table structure for salary_group_project_target_hit_log
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_group_project_target_hit_log`;
+CREATE TABLE `salary_group_project_target_hit_log`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `refer_id` bigint DEFAULT NULL COMMENT '薪酬项目、前置条件 配置id',
+ `target_type` tinyint DEFAULT NULL COMMENT '1:薪酬项目 2:前置条件',
+ `value` decimal(18, 2) DEFAULT NULL COMMENT '原始值',
+ `reach_value` decimal(18, 2) DEFAULT NULL COMMENT '达成目标',
+ `data_date` date NOT NULL COMMENT '数据日期',
+ `group_id` bigint NOT NULL COMMENT '集团',
+ `create_time` datetime DEFAULT NULL,
+ `update_time` datetime DEFAULT NULL,
+ `yn` tinyint(1) DEFAULT '1',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪酬指标达成目标记录';
+
+-- ----------------------------
+-- Table structure for salary_group_user
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_group_user`;
+CREATE TABLE `salary_group_user`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `sgc` varchar(60) NOT NULL COMMENT '薪酬组编码',
+ `salary_group_id` bigint NOT NULL COMMENT '薪酬组id',
+ `user_id` bigint NOT NULL COMMENT '人员id',
+ `user_name` varchar(255) DEFAULT NULL COMMENT '人员名称',
+ `post_id` bigint NOT NULL COMMENT '岗位id',
+ `post_name` varchar(255) DEFAULT NULL COMMENT '岗位名称',
+ `shop_id` bigint NOT NULL COMMENT '门店id',
+ `shop_name` varchar(255) DEFAULT NULL COMMENT '门店名称',
+ `probationer` tinyint(1) NOT NULL COMMENT '试用人员',
+ `frozen` tinyint(1) NOT NULL COMMENT '冻结状态',
+ `data_date` date DEFAULT NULL COMMENT '数据日期',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`),
+ KEY `salary_group_user_data_date_index` (`data_date`),
+ KEY `salary_group_user_salary_group_id_index` (`salary_group_id`),
+ KEY `salary_group_user_user_id_index` (`user_id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 3320
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪酬组人员';
+
+-- ----------------------------
+-- Table structure for salary_pay_notice
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_pay_notice`;
+CREATE TABLE `salary_pay_notice`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `salary_pool_id` bigint NOT NULL COMMENT '薪酬池id',
+ `plan_time` datetime NOT NULL COMMENT '计划推送待办时间',
+ `pushed_todo` tinyint(1) NOT NULL COMMENT '是否推送代办',
+ `todo_code` varchar(64) NOT NULL COMMENT '待办编码',
+ `deadline` datetime DEFAULT NULL COMMENT '截止日期',
+ `confirmed_status` tinyint DEFAULT NULL COMMENT '确认状态;1:待定 2:已确认 3:已取消',
+ `confirm_time` datetime DEFAULT NULL COMMENT '确认时间',
+ `self_confirm` tinyint(1) DEFAULT NULL COMMENT '是否本人确认',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`),
+ KEY `salary_confirm_salary_pool_id_index` (`salary_pool_id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪酬确认记录';
+
+-- ----------------------------
+-- Table structure for salary_pool
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_pool`;
+CREATE TABLE `salary_pool`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `sgc` varchar(60) NOT NULL COMMENT '薪酬组编码',
+ `salary_group_id` bigint NOT NULL COMMENT '薪酬组id',
+ `user_id` bigint NOT NULL COMMENT '用户id',
+ `user_name` varchar(255) DEFAULT NULL COMMENT '用户名称',
+ `post_id` bigint NOT NULL COMMENT '岗位id',
+ `post_name` varchar(255) DEFAULT NULL COMMENT '岗位名称',
+ `shop_id` bigint NOT NULL COMMENT '门店id',
+ `shop_name` varchar(255) DEFAULT NULL COMMENT '门店名称',
+ `fund_shop_id` bigint DEFAULT NULL COMMENT '社保公积金门店id',
+ `fund_shop_name` varchar(255) DEFAULT NULL COMMENT '社保公积金门店名称',
+ `star_level` tinyint NOT NULL COMMENT '星级; 1:A 2:B 3:C 4:D',
+ `reward` decimal(18, 2) NOT NULL COMMENT '薪资报酬',
+ `monthly` varchar(8) NOT NULL COMMENT '月度',
+ `regular` tinyint(1) NOT NULL COMMENT '固定的',
+ `signature_file` varchar(255) DEFAULT NULL COMMENT '签名文件',
+ `paid` tinyint(1) DEFAULT NULL COMMENT '是否已发放',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`),
+ KEY `salary_pool_monthly_index` (`monthly`),
+ KEY `salary_pool_salary_group_id_index` (`salary_group_id`),
+ KEY `salary_pool_user_id_index` (`user_id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 116
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪酬池';
+
+-- ----------------------------
+-- Table structure for salary_pool_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_pool_detail`;
+CREATE TABLE `salary_pool_detail`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `salary_pool_id` bigint NOT NULL COMMENT '薪酬池id',
+ `salary_project_id` bigint DEFAULT NULL COMMENT '薪酬项id',
+ `salary_project_name` varchar(255) DEFAULT NULL COMMENT '薪酬项名称',
+ `type` int NOT NULL COMMENT '薪酬类型 1:绩效提成 2:内部奖励 3:内部罚款 4:社保扣款 5:福利补贴 6:试用期工资',
+ `salary_amount` decimal(18, 2) DEFAULT NULL COMMENT '预计收入',
+ `processed_amount` decimal(18, 2) NOT NULL COMMENT '已处理金额',
+ `actual_salary_amount` decimal(18, 2) DEFAULT NULL COMMENT '实际收入',
+ `salary_date` date NOT NULL COMMENT '薪资日期',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`),
+ KEY `salary_pool_detail_salary_pool_id_index` (`salary_pool_id`),
+ KEY `salary_pool_detail_salary_date_index` (`salary_date`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 4219870
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪资明细';
+
+-- ----------------------------
+-- Table structure for salary_raw_data
+-- ----------------------------
+DROP TABLE IF EXISTS `salary_raw_data`;
+CREATE TABLE `salary_raw_data`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `salary_project_code` varchar(255) DEFAULT NULL COMMENT '薪酬项编码',
+ `salary_project_value` varchar(2000) NOT NULL COMMENT '薪酬项具体值;jons字符串 map类型',
+ `value_type` tinyint NOT NULL COMMENT '类型;1: 百分比 2:数量 3:条件值 4:金额 5:工龄',
+ `user_id` bigint NOT NULL COMMENT '人员id',
+ `data_date` date NOT NULL COMMENT '数据对应日期',
+ `group_id` bigint NOT NULL COMMENT '集团id',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`),
+ KEY `salary_raw_data_user_id_index` (`user_id`),
+ KEY `salary_raw_data_data_date_index` (`data_date`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 9967
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='薪酬提成原始数据';
+
+-- ----------------------------
+-- Table structure for setting_draft
+-- ----------------------------
+DROP TABLE IF EXISTS `setting_draft`;
+CREATE TABLE `setting_draft`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `type` tinyint DEFAULT '1' COMMENT '类型; 1:考评组 ',
+ `union_id` bigint NOT NULL COMMENT '关联id',
+ `content` text COMMENT '内容【json】',
+ `yn` tinyint(1) DEFAULT '1' COMMENT '逻辑删除',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci COMMENT ='草稿';
+
+SET FOREIGN_KEY_CHECKS = 1;
diff --git a/doc/霏微-绩效薪酬.chnr.json b/doc/霏微-绩效薪酬.chnr.json
index 2877975..4882bf1 100644
--- a/doc/霏微-绩效薪酬.chnr.json
+++ b/doc/霏微-绩效薪酬.chnr.json
@@ -3653,7 +3653,7 @@
"primaryKey": false,
"notNull": true,
"autoIncrement": false,
- "defaultValue": "1,5",
+ "defaultValue": "3,5",
"hideInGraph": false,
"refDict": "",
"domain": "",
diff --git a/fw-morax-common/pom.xml b/fw-morax-common/pom.xml
index 23c5d14..3043169 100644
--- a/fw-morax-common/pom.xml
+++ b/fw-morax-common/pom.xml
@@ -5,7 +5,7 @@
fw-morax
cn.fw
- 1.0.0
+ 2.0.0
../pom.xml
4.0.0
diff --git a/fw-morax-common/src/main/java/cn/fw/morax/common/config/FlowVal.java b/fw-morax-common/src/main/java/cn/fw/morax/common/config/FlowVal.java
index c609c59..abc57e0 100644
--- a/fw-morax-common/src/main/java/cn/fw/morax/common/config/FlowVal.java
+++ b/fw-morax-common/src/main/java/cn/fw/morax/common/config/FlowVal.java
@@ -22,4 +22,9 @@ public class FlowVal {
*/
private String kpiStarAdjustment;
+ /**
+ * 绩效组修改审批
+ */
+ private String incomeCompensationConfig;
+
}
diff --git a/fw-morax-common/src/main/java/cn/fw/morax/common/constant/TimeTaskConstant.java b/fw-morax-common/src/main/java/cn/fw/morax/common/constant/TimeTaskConstant.java
index ed8646b..a635e7e 100644
--- a/fw-morax-common/src/main/java/cn/fw/morax/common/constant/TimeTaskConstant.java
+++ b/fw-morax-common/src/main/java/cn/fw/morax/common/constant/TimeTaskConstant.java
@@ -20,15 +20,11 @@ public class TimeTaskConstant {
*/
public static final String KPI_STAR_SPECIAL_RULE = "0 0 6 1 * ?";
- /**
- * 绩效组发送业务上报mq通知 每天凌晨40分,绩效组人员更新后
- */
- public static final String KPI_GROUP_REPORT_NOTICE = "0 40 0 * * ?";
/**
* 缓存计算绩效组得分定时器 绩效组人员数据上报完成后
*/
- public static final String CACHE_CALCULATE_KPI_GROUP = "0 10 4 * * ?";
+ public static final String CACHE_CALCULATE_KPI_GROUP = "0 0 4 * * ?";
/**
* 缓存计算绩效排名包定时器 绩效组人员数据上报完成后
@@ -41,9 +37,9 @@ public class TimeTaskConstant {
public static final String SALARY_GROUP_USER = "0 0 1 * * ?";
/**
- * 缓存计算薪酬组得分定时器 每天凌晨5点40,绩效得分计算完成后
+ * 缓存计算薪酬组得分定时器 每天凌晨5点,绩效得分计算完成后
*/
- public static final String CACHE_CALCULATE_SALARY_GROUP = "0 40 5 * * ?";
+ public static final String CACHE_CALCULATE_SALARY_GROUP = "0 0 6 * * ?";
/**
* 薪酬组定时器 每个月1号凌晨3点
@@ -61,11 +57,6 @@ public class TimeTaskConstant {
public static final String SALARY_CONFIRM_TODO = "1 0 0/2 * * ?";
/**
- * 薪酬确认推送检查 每隔两小时
- */
- public static final String SALARY_CONFIRM_TODO_CHECK = "1 0 0/2 * * ?";
-
- /**
* 绩效报表定时器 每天凌晨8点
*/
public static final String KPI_REPORT = "0 0 8 * * ?";
diff --git a/fw-morax-common/src/main/java/cn/fw/morax/common/pojo/event/KpiStarAdjustmentEvent.java b/fw-morax-common/src/main/java/cn/fw/morax/common/pojo/event/KpiStarAdjustmentEvent.java
index 244f8f3..8c186c1 100644
--- a/fw-morax-common/src/main/java/cn/fw/morax/common/pojo/event/KpiStarAdjustmentEvent.java
+++ b/fw-morax-common/src/main/java/cn/fw/morax/common/pojo/event/KpiStarAdjustmentEvent.java
@@ -12,16 +12,12 @@ import java.time.YearMonth;
@AllArgsConstructor
@NoArgsConstructor
public class KpiStarAdjustmentEvent {
-
/**
* 用户id
*/
private Long userId;
-
-
/**
* 调整月份
*/
private YearMonth yearMonth;
-
}
diff --git a/fw-morax-common/src/main/java/cn/fw/morax/common/pojo/event/PaySalaryEvent.java b/fw-morax-common/src/main/java/cn/fw/morax/common/pojo/event/PaySalaryEvent.java
index 3e65286..36a689e 100644
--- a/fw-morax-common/src/main/java/cn/fw/morax/common/pojo/event/PaySalaryEvent.java
+++ b/fw-morax-common/src/main/java/cn/fw/morax/common/pojo/event/PaySalaryEvent.java
@@ -5,7 +5,6 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.math.BigDecimal;
import java.time.YearMonth;
@Data
diff --git a/fw-morax-dao/pom.xml b/fw-morax-dao/pom.xml
index dee4e5b..8b77c03 100644
--- a/fw-morax-dao/pom.xml
+++ b/fw-morax-dao/pom.xml
@@ -5,7 +5,7 @@
fw-morax
cn.fw
- 1.0.0
+ 2.0.0
../pom.xml
4.0.0
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryRawDataDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/SettingDraftDao.java
index aa37127..c715dd0 100644
--- a/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryRawDataDao.java
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/SettingDraftDao.java
@@ -1,15 +1,13 @@
-package cn.fw.morax.dao.salary;
+package cn.fw.morax.dao;
-import cn.fw.morax.domain.db.salary.SalaryRawData;
+import cn.fw.morax.domain.db.SettingDraft;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
- * @author : kurisu
- * @className : SalaryRawDataDao
- * @description : 薪酬原始数据
- * @date: 2022-04-06 14:56
+ * 草稿
+ *
*/
@Repository
-public interface SalaryRawDataDao extends BaseMapper {
+public interface SettingDraftDao extends BaseMapper {
}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/UserResignExamineDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/UserResignExamineDao.java
new file mode 100644
index 0000000..4697417
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/UserResignExamineDao.java
@@ -0,0 +1,18 @@
+package cn.fw.morax.dao;
+
+import cn.fw.morax.domain.db.UserResignExamine;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 绩效校验离职记录
+ *
+ * @author : kurisu
+ * @version : 2.0
+ * @className : UserResignExamineDao
+ * @description : 绩效校验离职记录
+ * @date : 2022-12-29 16:58
+ */
+@Repository
+public interface UserResignExamineDao extends BaseMapper {
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalDao.java
new file mode 100644
index 0000000..3f83853
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalDao.java
@@ -0,0 +1,18 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.Eval;
+import cn.fw.morax.domain.db.eval.EvalGroup;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 考评组 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupDao.java
new file mode 100644
index 0000000..c79cd11
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalGroup;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 考评组 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalGroupDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorDao.java
new file mode 100644
index 0000000..ae3ccc7
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalGroupIndicator;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 绩效组指标项 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalGroupIndicatorDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorLaddersDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorLaddersDao.java
new file mode 100644
index 0000000..0fcbf14
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorLaddersDao.java
@@ -0,0 +1,18 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalGroupIndicator;
+import cn.fw.morax.domain.db.eval.EvalGroupIndicatorLadders;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 绩效组指标项 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalGroupIndicatorLaddersDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorParamDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorParamDao.java
new file mode 100644
index 0000000..e0eba90
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorParamDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalGroupIndicatorParam;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 考评组指标参数 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalGroupIndicatorParamDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorPreconditionDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorPreconditionDao.java
new file mode 100644
index 0000000..82a08ff
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorPreconditionDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalGroupIndicatorPrecondition;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 考评组指标条件 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalGroupIndicatorPreconditionDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorPreconditionHitLogDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorPreconditionHitLogDao.java
new file mode 100644
index 0000000..f2166f2
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorPreconditionHitLogDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalGroupIndicatorPreconditionHitLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 考评指标条件记录 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalGroupIndicatorPreconditionHitLogDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorPreconditionLaddersDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorPreconditionLaddersDao.java
new file mode 100644
index 0000000..b5a3022
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorPreconditionLaddersDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalGroupIndicatorPreconditionLadders;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 考评组指标条件得分阶梯 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalGroupIndicatorPreconditionLaddersDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorTargetHitLogDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorTargetHitLogDao.java
new file mode 100644
index 0000000..d85af85
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorTargetHitLogDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalGroupIndicatorTargetHitLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 考评指标达成目标记录 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalGroupIndicatorTargetHitLogDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardDao.java
new file mode 100644
index 0000000..5312609
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalGroupReward;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 考评奖惩 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalGroupRewardDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardLaddersDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardLaddersDao.java
new file mode 100644
index 0000000..95fadc0
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardLaddersDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalGroupRewardLadders;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 考评奖惩阶梯 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalGroupRewardLaddersDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardParamDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardParamDao.java
new file mode 100644
index 0000000..f448493
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardParamDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalGroupRewardParam;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 考评奖惩参数 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalGroupRewardParamDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardPreconditionDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardPreconditionDao.java
new file mode 100644
index 0000000..41ffb6f
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardPreconditionDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalGroupRewardPrecondition;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 考评奖惩前置条件 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalGroupRewardPreconditionDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardPreconditionHitLogDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardPreconditionHitLogDao.java
new file mode 100644
index 0000000..ae13789
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardPreconditionHitLogDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalGroupRewardPreconditionHitLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 考评奖惩条件记录 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalGroupRewardPreconditionHitLogDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalIndicatorDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalIndicatorDao.java
new file mode 100644
index 0000000..fda9131
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalIndicatorDao.java
@@ -0,0 +1,22 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalIndicator;
+import cn.fw.morax.domain.db.salary.IncomeCompensation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 考评指标 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-11-09
+ */
+public interface EvalIndicatorDao extends BaseMapper {
+
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalPoolDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalPoolDao.java
new file mode 100644
index 0000000..490dc48
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalPoolDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalPool;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 考评池 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalPoolDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalPoolIndicatorDetailDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalPoolIndicatorDetailDao.java
new file mode 100644
index 0000000..d9fb064
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalPoolIndicatorDetailDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.eval;
+
+
+import cn.fw.morax.domain.db.eval.EvalPoolIndicatorDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 考评指标明细 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+public interface EvalPoolIndicatorDetailDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/IndicatorUserValueDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/IndicatorUserValueDao.java
new file mode 100644
index 0000000..8058bf6
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/IndicatorUserValueDao.java
@@ -0,0 +1,38 @@
+package cn.fw.morax.dao.kpi;
+
+import cn.fw.morax.domain.db.kpi.IndicatorUserValue;
+import cn.fw.morax.domain.vo.kpi.IndicatorUserValueVO;
+import cn.fw.morax.domain.vo.kpi.KpiIndicatorRankStaffVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.time.LocalDate;
+import java.time.YearMonth;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 用户指标上报数据
+ *
+ * @author : kurisu
+ * @version : 2.0
+ * @className : IndicatorUserValueDao
+ * @description : 用户指标上报数据
+ * @date : 2022-12-15 11:22
+ */
+@Repository
+public interface IndicatorUserValueDao extends BaseMapper {
+
+ /**
+ * 获取指标原始上报记录
+ *
+ * @param indicatorCode
+ * @param monthly
+ * @param userIds
+ * @return
+ */
+ List getIndicatorReportData(@Param("indicatorCode") String indicatorCode,
+ @Param("monthly") YearMonth monthly,
+ @Param("userIds") Set userIds);
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupDao.java
index 1f1f8c0..ad382b5 100644
--- a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupDao.java
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupDao.java
@@ -100,10 +100,10 @@ public interface KpiGroupDao extends BaseMapper {
* @param preId
* @return
*/
- List getApprovingKpis(@Param("postId") Long postId,
- @Param("shopIds") List shopIds,
- @Param("preId") Long preId,
- @Param("beginTime") LocalDate beginTime);
+ List getRepeatKpis(@Param("postId") Long postId,
+ @Param("shopIds") List shopIds,
+ @Param("preId") Long preId,
+ @Param("beginTime") LocalDate beginTime);
/**
* 根据时间查询当时生效的绩效组
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorDao.java
index c21ca9c..b37753a 100644
--- a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorDao.java
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorDao.java
@@ -21,7 +21,8 @@ public interface KpiGroupIndicatorDao extends BaseMapper {
* 查询所有使用中的指标集合
*
* @param dataDate 查询日期
+ * @param kpiGroupId 绩效组id
* @return
*/
- Set allIndicators(@Param("dataDate") final Date dataDate);
+ Set allIndicators(@Param("dataDate") final Date dataDate,@Param("kpiGroupId") final Long kpiGroupId);
}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiIndicatorHitLogDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorHitLogDao.java
index ddab7a9..20bafdb 100644
--- a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiIndicatorHitLogDao.java
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorHitLogDao.java
@@ -1,16 +1,18 @@
package cn.fw.morax.dao.kpi;
-import cn.fw.morax.domain.db.kpi.KpiIndicatorHitLog;
-import cn.fw.morax.domain.db.kpi.KpiStarSpecialRule;
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorHitLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
+ * 指标命中记录
+ *
* @author : kurisu
- * @className : KpiStarSpecialRuleDao
- * @description : 特殊星级规则
- * @date: 2022-04-06 14:40
+ * @version : 2.0
+ * @className : KpiGroupIndicatorHitLogDao
+ * @description : 指标命中记录
+ * @date : 2022-12-13 17:54
*/
@Repository
-public interface KpiIndicatorHitLogDao extends BaseMapper {
+public interface KpiGroupIndicatorHitLogDao extends BaseMapper {
}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorParamDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorParamDao.java
new file mode 100644
index 0000000..fc29fa7
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorParamDao.java
@@ -0,0 +1,25 @@
+package cn.fw.morax.dao.kpi;
+
+
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorParam;
+import cn.fw.morax.domain.vo.kpi.KpiGroupIndicatorParamVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ *
+ * 绩效组指标参数 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Repository
+public interface KpiGroupIndicatorParamDao extends BaseMapper {
+
+ List getParamVos(@Param("kpiGroupIndicatorId") Long kpiGroupIndicatorId);
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorPreconditionDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorPreconditionDao.java
new file mode 100644
index 0000000..c60f265
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorPreconditionDao.java
@@ -0,0 +1,28 @@
+package cn.fw.morax.dao.kpi;
+
+
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorPrecondition;
+import cn.fw.morax.domain.vo.kpi.KpiGroupIndicatorPreconditionVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ *
+ * 绩效组指标条件 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Repository
+public interface KpiGroupIndicatorPreconditionDao extends BaseMapper {
+
+
+ List getHitVos(@Param("kpiGroupIndicatorId") Long kpiGroupIndicatorId,
+ @Param("userId") Long userId,
+ @Param("dataDate") LocalDate dataDate);
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiMqLogDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorPreconditionHitLogDao.java
index 0454de9..48b70e4 100644
--- a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiMqLogDao.java
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorPreconditionHitLogDao.java
@@ -1,16 +1,18 @@
package cn.fw.morax.dao.kpi;
-import cn.fw.morax.domain.db.kpi.KpiMqLog;
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorPreconditionHitLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
+ * 绩效组指标前置条件命中记录
+ *
* @author : kurisu
- * @version : 1.0
- * @className : KpiMqLogDao
- * @description : 绩效mq发送记录
- * @date : 2022-04-12 18:19
+ * @version : 2.0
+ * @className : KpiGroupIndicatorPreconditionHitLogDao
+ * @description : 绩效组指标前置条件命中记录
+ * @date : 2022-12-13 17:58
*/
@Repository
-public interface KpiMqLogDao extends BaseMapper {
+public interface KpiGroupIndicatorPreconditionHitLogDao extends BaseMapper {
}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorPreconditionLaddersDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorPreconditionLaddersDao.java
new file mode 100644
index 0000000..f974b82
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorPreconditionLaddersDao.java
@@ -0,0 +1,19 @@
+package cn.fw.morax.dao.kpi;
+
+
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorPreconditionLadders;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ *
+ * 绩效组指标条件得分阶梯 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Repository
+public interface KpiGroupIndicatorPreconditionLaddersDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorTargetHitLogDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorTargetHitLogDao.java
new file mode 100644
index 0000000..3ebc49e
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupIndicatorTargetHitLogDao.java
@@ -0,0 +1,39 @@
+package cn.fw.morax.dao.kpi;
+
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorTargetHitLog;
+import cn.fw.morax.domain.enums.IndicatorTypeEnum;
+import cn.fw.morax.domain.vo.kpi.KpiGroupIndicatorTargetHitLogVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.time.YearMonth;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 绩效组配置目标命中记录
+ *
+ * @author : kurisu
+ * @version : 2.0
+ * @className : KpiGroupIndicatorTargetHitLogDao
+ * @description : 绩效组配置目标命中记录
+ * @date : 2022-12-14 10:45
+ */
+@Repository
+public interface KpiGroupIndicatorTargetHitLogDao extends BaseMapper {
+
+ /**
+ * 查找指标目标值
+ *
+ * @param referId
+ * @param monthly
+ * @param targetType
+ * @param userIds
+ * @return
+ */
+ List getIndicatorData(@Param("referId") Long referId,
+ @Param("monthly") YearMonth monthly,
+ @Param("targetType") IndicatorTypeEnum targetType,
+ @Param("userIds") Set userIds);
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiPoolIndicatorValueDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiPoolIndicatorValueDao.java
index dcdf115..76e4153 100644
--- a/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiPoolIndicatorValueDao.java
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiPoolIndicatorValueDao.java
@@ -1,6 +1,7 @@
package cn.fw.morax.dao.kpi;
import cn.fw.morax.domain.db.kpi.KpiPoolIndicatorValue;
+import cn.fw.morax.domain.vo.kpi.KpiIndicatorRankStaffVO;
import cn.fw.morax.domain.vo.kpi.KpiPoolIndicatorValueVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
@@ -8,6 +9,7 @@ import org.springframework.stereotype.Repository;
import java.time.LocalDate;
import java.util.List;
+import java.util.Set;
/**
* @author : kurisu
@@ -28,4 +30,5 @@ public interface KpiPoolIndicatorValueDao extends BaseMapper getStaffIndicatorValue(@Param("kpiPoolId") Long kpiPoolId,
@Param("kpiGroupId") Long kpiGroupId,
@Param("dataDate") LocalDate localDate);
+
}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/IncomeCompensationDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/IncomeCompensationDao.java
new file mode 100644
index 0000000..370f57d
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/IncomeCompensationDao.java
@@ -0,0 +1,32 @@
+package cn.fw.morax.dao.salary;
+
+
+import cn.fw.morax.domain.db.salary.IncomeCompensation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ *
+ * 收入补偿 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-11-09
+ */
+public interface IncomeCompensationDao extends BaseMapper {
+
+ /**
+ * 获取重复配置
+ *
+ * @param postId
+ * @param shopIds
+ * @return
+ */
+ List getRepeatConfigs(@Param("postId") Long postId,
+ @Param("shopIds") List shopIds,
+ @Param("approveStatus") Integer approveStatus);
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/IncomeCompensationListDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/IncomeCompensationListDao.java
new file mode 100644
index 0000000..4e1829a
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/IncomeCompensationListDao.java
@@ -0,0 +1,33 @@
+package cn.fw.morax.dao.salary;
+
+
+import cn.fw.morax.domain.db.salary.IncomeCompensation;
+import cn.fw.morax.domain.db.salary.IncomeCompensationList;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.time.YearMonth;
+import java.util.List;
+
+/**
+ *
+ * 收入补偿 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-11-09
+ */
+public interface IncomeCompensationListDao extends BaseMapper {
+
+ /**
+ * 获取重复配置
+ *
+ * @param postId
+ * @param shopIds
+ * @return
+ */
+ List getRepeatConfigs(@Param("postId") Long postId,
+ @Param("shopIds") List shopIds,
+ @Param("yearMonths") List yearMonths);
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupDao.java
index 251cfc2..c907781 100644
--- a/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupDao.java
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupDao.java
@@ -68,8 +68,8 @@ public interface SalaryGroupDao extends BaseMapper {
* @param beginTime
* @return
*/
- List getApprovingConfigs(@Param("postId") Long postId,
- @Param("shopIds") List shopIds,
- @Param("preId") Long preId,
- @Param("beginTime") LocalDate beginTime);
+ List getRepeatConfigs(@Param("postId") Long postId,
+ @Param("shopIds") List shopIds,
+ @Param("preId") Long preId,
+ @Param("beginTime") LocalDate beginTime);
}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryProjectHitLogDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupProjectHitLogDao.java
index ab5a7a6..501d027 100644
--- a/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryProjectHitLogDao.java
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupProjectHitLogDao.java
@@ -1,6 +1,6 @@
package cn.fw.morax.dao.salary;
-import cn.fw.morax.domain.db.salary.SalaryProjectHitLog;
+import cn.fw.morax.domain.db.salary.SalaryGroupProjectHitLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
@@ -9,10 +9,10 @@ import org.springframework.stereotype.Repository;
*
* @author : kurisu
* @version : 1.0
- * @className : SalaryProjectHitLogDao
+ * @className : SalaryGroupProjectHitLogDao
* @description : 用户薪酬命中记录
* @date : 2022-05-19 10:49
*/
@Repository
-public interface SalaryProjectHitLogDao extends BaseMapper {
+public interface SalaryGroupProjectHitLogDao extends BaseMapper {
}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupProjectParamDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupProjectParamDao.java
new file mode 100644
index 0000000..b34c304
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupProjectParamDao.java
@@ -0,0 +1,29 @@
+package cn.fw.morax.dao.salary;
+
+
+import cn.fw.morax.domain.db.salary.SalaryGroupProjectParam;
+import cn.fw.morax.domain.vo.salary.SalaryGroupProjectParamVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 薪酬组薪酬项目参数 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+public interface SalaryGroupProjectParamDao extends BaseMapper {
+
+ /**
+ * 获取
+ * @param salaryGroupId
+ * @return
+ */
+ List getParams(@Param("salaryGroupId") Long salaryGroupId,
+ @Param("salaryGroupProjectId") Long salaryGroupProjectId);
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupProjectPreconditionDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupProjectPreconditionDao.java
new file mode 100644
index 0000000..27bf1f7
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupProjectPreconditionDao.java
@@ -0,0 +1,35 @@
+package cn.fw.morax.dao.salary;
+
+
+import cn.fw.morax.domain.db.salary.SalaryGroupProjectPrecondition;
+import cn.fw.morax.domain.vo.salary.SalaryGroupProjectPreconditionVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ *
+ * 薪酬组薪酬项目前置条件 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+public interface SalaryGroupProjectPreconditionDao extends BaseMapper {
+
+ List getConds(@Param("salaryGroupId") Long SalaryGroupProject);
+
+ /**
+ * 条件命中记录
+ *
+ * @param salaryGroupProjectId
+ * @param userId
+ * @param dataDate
+ * @return
+ */
+ List getHitVos(@Param("salaryGroupProjectId") Long salaryGroupProjectId,
+ @Param("userId") Long userId,
+ @Param("dataDate") LocalDate dataDate);
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupProjectPreconditionLogDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupProjectPreconditionLogDao.java
new file mode 100644
index 0000000..c1ac239
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupProjectPreconditionLogDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.salary;
+
+
+import cn.fw.morax.domain.db.salary.SalaryGroupProjectPreconditionLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 薪酬指标条件记录 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-13
+ */
+public interface SalaryGroupProjectPreconditionLogDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupProjectTargetHitLogDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupProjectTargetHitLogDao.java
new file mode 100644
index 0000000..eeeea23
--- /dev/null
+++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupProjectTargetHitLogDao.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.dao.salary;
+
+
+import cn.fw.morax.domain.db.salary.SalaryGroupProjectTargetHitLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 薪酬指标达成目标记录 Mapper 接口
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-13
+ */
+public interface SalaryGroupProjectTargetHitLogDao extends BaseMapper {
+
+}
diff --git a/fw-morax-dao/src/main/resources/mapper/SettingDraftMapper.xml b/fw-morax-dao/src/main/resources/mapper/SettingDraftMapper.xml
new file mode 100644
index 0000000..56c16b9
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/SettingDraftMapper.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/kpi/KpiMqLogMapper.xml b/fw-morax-dao/src/main/resources/mapper/UserResignExamineMapper.xml
index b9cea4c..da7e727 100644
--- a/fw-morax-dao/src/main/resources/mapper/kpi/KpiMqLogMapper.xml
+++ b/fw-morax-dao/src/main/resources/mapper/UserResignExamineMapper.xml
@@ -1,5 +1,5 @@
-
+
-
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorMapper.xml
new file mode 100644
index 0000000..7f086d4
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorParamMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorParamMapper.xml
new file mode 100644
index 0000000..570fda7
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorParamMapper.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorPreconditionHitLogMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorPreconditionHitLogMapper.xml
new file mode 100644
index 0000000..84236fa
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorPreconditionHitLogMapper.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorPreconditionLaddersMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorPreconditionLaddersMapper.xml
new file mode 100644
index 0000000..5dd08fc
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorPreconditionLaddersMapper.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorPreconditionMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorPreconditionMapper.xml
new file mode 100644
index 0000000..220316f
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorPreconditionMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorTargetHitLogMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorTargetHitLogMapper.xml
new file mode 100644
index 0000000..9e84452
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorTargetHitLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupMapper.xml
new file mode 100644
index 0000000..bb23ab5
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupMapper.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardLaddersMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardLaddersMapper.xml
new file mode 100644
index 0000000..130cc48
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardLaddersMapper.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardMapper.xml
new file mode 100644
index 0000000..87e9f34
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardMapper.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardParamMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardParamMapper.xml
new file mode 100644
index 0000000..2972651
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardParamMapper.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardPreconditionHitLogMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardPreconditionHitLogMapper.xml
new file mode 100644
index 0000000..5266b71
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardPreconditionHitLogMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardPreconditionMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardPreconditionMapper.xml
new file mode 100644
index 0000000..8220535
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardPreconditionMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalIndicatorMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalIndicatorMapper.xml
new file mode 100644
index 0000000..1bbe521
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalIndicatorMapper.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, post_id, post_name, shop_ids, shop_names, months, money, max_money,
+ attachment, status, project_num, group_id, yn,create_time,update_time
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalMapper.xml
new file mode 100644
index 0000000..865753b
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalMapper.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalPoolIndicatorDetailMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalPoolIndicatorDetailMapper.xml
new file mode 100644
index 0000000..04948e8
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalPoolIndicatorDetailMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalPoolMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalPoolMapper.xml
new file mode 100644
index 0000000..d8a278e
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalPoolMapper.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/kpi/IndicatorUserValueMapper.xml b/fw-morax-dao/src/main/resources/mapper/kpi/IndicatorUserValueMapper.xml
new file mode 100644
index 0000000..ecbb223
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/kpi/IndicatorUserValueMapper.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/fw-morax-dao/src/main/resources/mapper/kpi/IndicatorsMapper.xml b/fw-morax-dao/src/main/resources/mapper/kpi/IndicatorsMapper.xml
index 345b4f5..f9c6bde 100644
--- a/fw-morax-dao/src/main/resources/mapper/kpi/IndicatorsMapper.xml
+++ b/fw-morax-dao/src/main/resources/mapper/kpi/IndicatorsMapper.xml
@@ -11,9 +11,13 @@
+
+
+
+
@@ -28,14 +32,18 @@
+
+
+
+
- id, indicator_code, indicator_name, sys_id, sys_name, sys_prefix, role_type, target_type, role_codes,
- role_names, enable, create_time, update_time, yn
+ id, indicator_code, indicator_name, sys_id, sys_name, sys_prefix, role_type, target_type, role_codes,data_type,apply_types,
+ inner_indicator,role_names, enable, report_path, create_time, update_time, yn
@@ -107,13 +115,13 @@
FROM indicators i
WHERE
- (i.yn = 1 AND i.role_type = #{allRoleType} AND i.enable = #{enable})
+ (i.yn = 1 AND i.role_type = #{allRoleType} AND i.enable = #{enable} AND FIND_IN_SET(#{applicableType}, apply_types))
- OR (i.yn = 1 AND i.role_type = #{managerRoleType} AND i.enable = #{enable})
+ OR (i.yn = 1 AND i.role_type = #{managerRoleType} AND i.enable = #{enable} AND FIND_IN_SET(#{applicableType}, apply_types))
OR (
- i.yn = 1 AND i.role_type = #{portionRoleType} AND i.enable = #{enable}
+ i.yn = 1 AND i.role_type = #{portionRoleType} AND i.enable = #{enable} AND FIND_IN_SET(#{applicableType}, apply_types)
AND
FIND_IN_SET(#{roleCode}, role_codes)
diff --git a/fw-morax-dao/src/main/resources/mapper/salary/SalaryProjectHitLogMapper.xml b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorHitLogMapper.xml
index 77b9bb3..37e8bad 100644
--- a/fw-morax-dao/src/main/resources/mapper/salary/SalaryProjectHitLogMapper.xml
+++ b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorHitLogMapper.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorMapper.xml b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorMapper.xml
index 7284143..373a1a6 100644
--- a/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorMapper.xml
+++ b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorMapper.xml
@@ -3,17 +3,24 @@
diff --git a/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorParamDao.xml b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorParamDao.xml
new file mode 100644
index 0000000..469f3bc
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorParamDao.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorPreconditionDao.xml b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorPreconditionDao.xml
new file mode 100644
index 0000000..b03ac83
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorPreconditionDao.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/salary/SalaryRawDataMapper.xml b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorPreconditionHitLogMapper.xml
index 86cab19..98baa0b 100644
--- a/fw-morax-dao/src/main/resources/mapper/salary/SalaryRawDataMapper.xml
+++ b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorPreconditionHitLogMapper.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorPreconditionLaddersDao.xml b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorPreconditionLaddersDao.xml
new file mode 100644
index 0000000..7cea854
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorPreconditionLaddersDao.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorTargetHitLogMapper.xml b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorTargetHitLogMapper.xml
new file mode 100644
index 0000000..157c713
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupIndicatorTargetHitLogMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
diff --git a/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupMapper.xml b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupMapper.xml
index 944850e..15989d5 100644
--- a/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupMapper.xml
+++ b/fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupMapper.xml
@@ -148,18 +148,21 @@
and status in (3, 4)
-
diff --git a/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectHitLogMapper.xml b/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectHitLogMapper.xml
new file mode 100644
index 0000000..99f8330
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectHitLogMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectParamMapper.xml b/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectParamMapper.xml
new file mode 100644
index 0000000..3581a62
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectParamMapper.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT
+ t1.`id`,
+ t1.`salary_group_id`,
+ t1.`salary_group_project_id`,
+ t1.`param_type`,
+ t1.`indicator_code`,
+ t1.`indicator_name`,
+ t1.`target_calc_type`,
+ t1.`target_type`,
+ t1.`target_value`,
+ t1.`proportion`,
+ t1.`cap`,
+ t1.`sort`,
+ t2.`data_type`
+ FROM
+ `salary_group_project_param` t1
+ LEFT JOIN indicators t2 ON t1.indicator_code = t2.indicator_code
+ AND t2.yn = 1
+ WHERE
+ t1.yn = 1
+
+ AND t1.salary_group_id = #{salaryGroupId}
+
+
+ AND t1.salary_group_project_id = #{salaryGroupProjectId}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectPreconditionDao.xml b/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectPreconditionDao.xml
new file mode 100644
index 0000000..e59e793
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectPreconditionDao.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT
+ t1.`id`,
+ t1.`salary_group_id`,
+ t1.`salary_group_project_id`,
+ t1.`indicator_code`,
+ t1.`indicator_name`,
+ t1.`target_calc_type`,
+ t1.`target_type`,
+ t1.`target_value`,
+ t1.`cond_value`,
+ t1.`sort`,
+ t2.`data_type`
+ FROM
+ `salary_group_project_precondition` t1
+ LEFT JOIN indicators t2 ON t1.indicator_code = t2.indicator_code
+ AND t2.yn = 1
+ WHERE
+ t1.yn = 1
+ AND t1.salary_group_id = #{salaryGroupId}
+
+
+
+ SELECT
+ t1.`id`,
+ t1.`salary_group_id`,
+ t1.`salary_group_project_id`,
+ t1.`indicator_code`,
+ t1.`indicator_name`,
+ t1.`target_calc_type`,
+ t1.`target_type`,
+ t1.`target_value`,
+ t1.`cond_value`,
+ t1.`sort`,
+ t2.`value` AS `indicatorValue`,
+ t3.`data_type` AS `dataType`
+ FROM
+ `salary_group_project_precondition` t1
+ LEFT JOIN salary_group_project_precondition_log t2 ON t1.id = t2.precondition_id
+ AND t2.yn = 1 AND t2.data_date = #{dataDate} AND t2.user_id = #{userId}
+ LEFT JOIN indicators t3 ON t1.indicator_code = t3.indicator_code
+ AND t3.yn = 1
+ WHERE
+ t1.yn = 1
+ AND t1.salary_group_project_id = #{salaryGroupProjectId}
+ ORDER BY t1.`sort` ASC
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectPreconditionLogMapper.xml b/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectPreconditionLogMapper.xml
new file mode 100644
index 0000000..0d7fff4
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectPreconditionLogMapper.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectTargetHitLogMapper.xml b/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectTargetHitLogMapper.xml
new file mode 100644
index 0000000..415e0de
--- /dev/null
+++ b/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupProjectTargetHitLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fw-morax-dao/src/main/resources/mapper/salary/SalaryPoolDetailMapper.xml b/fw-morax-dao/src/main/resources/mapper/salary/SalaryPoolDetailMapper.xml
index 02d6638..2ec7922 100644
--- a/fw-morax-dao/src/main/resources/mapper/salary/SalaryPoolDetailMapper.xml
+++ b/fw-morax-dao/src/main/resources/mapper/salary/SalaryPoolDetailMapper.xml
@@ -5,20 +5,18 @@
select
t1.salary_pool_id,
- t1.salary_project_id,
- t1.salary_project_name,
+ t1.salary_group_project_id,
+ t1.salary_group_project_name,
t1.type,
t1.salary_amount,
t1.processed_amount,
t1.actual_salary_amount,
t1.salary_date,
t2.id AS salaryProjectGroupId,
- t2.cal_method AS calMethod,
- t2.salary_project_code AS salaryProjectCode
+ t2.cal_method AS calMethod
from salary_pool_detail t1
- left join salary_group_project t2 on t1.salary_project_id =t2.salary_project_id
+ left join salary_group_project t2 on t1.salary_group_project_id = t2.id
and t2.yn = 1
- and t2.salary_group_id = #{salaryGroupId}
where t1.yn = 1
and t1.salary_pool_id = #{salaryPoolId}
and t1.salary_date = #{dataDate}
diff --git a/fw-morax-domain/pom.xml b/fw-morax-domain/pom.xml
index 4ff38dd..1fad47c 100644
--- a/fw-morax-domain/pom.xml
+++ b/fw-morax-domain/pom.xml
@@ -5,7 +5,7 @@
fw-morax
cn.fw
- 1.0.0
+ 2.0.0
../pom.xml
4.0.0
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/kpi/KpiGroupCalculableRankBO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/kpi/KpiGroupCalculableRankBO.java
index 2c6bbc8..72c7b02 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/kpi/KpiGroupCalculableRankBO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/kpi/KpiGroupCalculableRankBO.java
@@ -5,6 +5,7 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
+import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
@@ -24,8 +25,24 @@ public class KpiGroupCalculableRankBO {
* 单个绩效组计算
*/
private Boolean calculateSeparately;
+ /**
+ * 绩效排名组id
+ */
private Long kpiGroupRankId;
+ /**
+ * D级免责得分率要求
+ */
+ private BigDecimal revokedScoreRatio;
+ /**
+ * 集团id
+ */
private Long groupId;
+ /**
+ * 绩效组ids
+ */
private List kpiGroupIds;
+ /**
+ * 日期
+ */
private LocalDate localDate;
}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/kpi/KpiIndicatorBO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/kpi/KpiIndicatorBO.java
index aab691a..68e567c 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/kpi/KpiIndicatorBO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/kpi/KpiIndicatorBO.java
@@ -1,10 +1,8 @@
package cn.fw.morax.domain.bo.kpi;
-import cn.fw.morax.domain.enums.KpiTargetTypeEnum;
+import cn.fw.morax.domain.enums.ScoreWayEnum;
import lombok.*;
-import java.math.BigDecimal;
-
/**
* @author : kurisu
* @version : 1.0
@@ -19,6 +17,14 @@ import java.math.BigDecimal;
@Builder
public class KpiIndicatorBO {
/**
+ * 绩效组指标配置id
+ */
+ private Long kpiGroupIndicatorId;
+ /**
+ * 绩效组id
+ */
+ private Long kpiGroupId;
+ /**
* 岗位id
*/
private Long postId;
@@ -27,13 +33,13 @@ public class KpiIndicatorBO {
*/
private String postName;
/**
- * 指标编码
+ * 基础绩效分
*/
- private String indicatorCode;
+ private Integer baseScore;
/**
- * 指标名称
+ * 得分方式;1: 阶梯得分 2:普通得分
*/
- private String indicatorName;
+ private ScoreWayEnum scoreWay;
/**
* 集团id
*/
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/kpi/UserIndicatorBO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/kpi/UserIndicatorBO.java
index 109184a..9a271a0 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/kpi/UserIndicatorBO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/kpi/UserIndicatorBO.java
@@ -4,10 +4,11 @@ import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
+import java.util.Map;
/**
* @author : kurisu
- * @version : 1.0
+ * @version : 2.0
* @className : UserIndicatorBO
* @description : 人员绩效值
* @date : 2022-04-13 17:21
@@ -19,27 +20,23 @@ public class UserIndicatorBO {
*/
private String indicatorCode;
/**
- * 岗位id
- */
- private Long postId;
- /**
* 人员id
*/
private Long userId;
/**
- * 指标对应值
+ * 指标值类型
*/
- private BigDecimal value;
+ private Integer valueType;
/**
- * 门店id
+ * 指标对应值
*/
- private Long shopId;
+ private Map value;
/**
* 数据日期
*/
private Date dataDate;
/**
- * 唯一标识
+ * 集团id
*/
- private Long uid;
+ private Long groupId;
}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/SettingDraft.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/SettingDraft.java
new file mode 100644
index 0000000..0f18000
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/SettingDraft.java
@@ -0,0 +1,52 @@
+package cn.fw.morax.domain.db;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.db.salary.SalaryGroupProjectTargetHitLog;
+import cn.fw.morax.domain.enums.SettingDraftTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 草稿
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class SettingDraft extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 类型; 1:考评组
+ */
+ private SettingDraftTypeEnum type;
+
+ /**
+ * 关联id
+ */
+ private Long unionId;
+
+ /**
+ * 内容【json】
+ */
+ private String content;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/UserResignExamine.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/UserResignExamine.java
new file mode 100644
index 0000000..1e10a97
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/UserResignExamine.java
@@ -0,0 +1,42 @@
+package cn.fw.morax.domain.db;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.enums.ResignExamineStatusEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.YearMonth;
+
+/**
+ * 绩效校验离职员工数据
+ *
+ * @author : kurisu
+ * @version : 2.0
+ * @className : UserResignExamine
+ * @description : 绩效校验离职员工数据
+ * @date : 2022-12-29 16:38
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class UserResignExamine extends BaseAuditableTimeEntity {
+ /**
+ * 用户id
+ */
+ private Long userId;
+ /**
+ * 用户名称
+ */
+ private String userName;
+ /**
+ * 在职门店
+ */
+ private Long shopId;
+ /**
+ * 数据月度
+ */
+ private YearMonth monthly;
+ /**
+ * 处理状态
+ */
+ private ResignExamineStatusEnum status;
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/Eval.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/Eval.java
new file mode 100644
index 0000000..13257ce
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/Eval.java
@@ -0,0 +1,59 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.common.data.mybatis.handler.LongListTypeHandler;
+import cn.fw.common.data.mybatis.handler.StringListTypeHandler;
+import cn.fw.morax.domain.enums.EvalTypeEnum;
+import cn.fw.morax.domain.enums.SettingStatusEnum;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ *
+ * 考评组
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class Eval extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+
+ /**
+ * 考评,活动名称
+ */
+ private String name;
+
+ /**
+ * 考评类型; 1:活动考评 2:其他考评
+ */
+ private EvalTypeEnum type;
+
+ /**
+ * 状态;1:审批中 2:审批拒绝 3:生效中 4:草稿
+ */
+ private SettingStatusEnum status;
+
+ /**
+ * 集团id
+ */
+ private Long groupId;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroup.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroup.java
new file mode 100644
index 0000000..b305078
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroup.java
@@ -0,0 +1,128 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.common.data.mybatis.handler.LongListTypeHandler;
+import cn.fw.common.data.mybatis.handler.StringListTypeHandler;
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorLadders;
+import cn.fw.morax.domain.enums.EvalScopeEnum;
+import cn.fw.morax.domain.enums.EvalTypeEnum;
+import cn.fw.morax.domain.enums.SettingStatusEnum;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.Future;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ *
+ * 考评组
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroup extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评id
+ */
+ private Long evalId;
+
+ /**
+ * 考评组编码
+ */
+ private String egc;
+
+ /**
+ * 考评,活动名称
+ */
+ private String name;
+
+ /**
+ * 考评范围; 1:门店考评 2:人员考评
+ */
+ private EvalScopeEnum scopeType;
+
+ /**
+ * 考评类型; 1:活动考评 2:其他考评
+ */
+// private EvalTypeEnum type;
+
+ /**
+ * 岗位id
+ */
+ private Long postId;
+
+ /**
+ * 岗位名称
+ */
+ private String postName;
+
+ /**
+ * 适用门店ids
+ */
+ @TableField(typeHandler = LongListTypeHandler.class)
+ private List shopIds;
+
+ /**
+ * 适用门店名称
+ */
+ @TableField(typeHandler = StringListTypeHandler.class)
+ private List shopNames;
+
+ /**
+ * 调整原因
+ */
+ private String reason;
+
+ /**
+ * 附件;fid逗号隔开
+ */
+ private String attachment;
+
+ /**
+ * 生效时间
+ */
+ private LocalDate beginTime;
+
+ /**
+ * 结束时间
+ */
+ private LocalDate overTime;
+
+ /**
+ * 状态;1:审批中 2:审批拒绝 3:生效中 4:草稿
+ */
+// private SettingStatusEnum status;
+
+ /**
+ * 包含指标数量
+ */
+ private Integer indicatorNum;
+
+ /**
+ * 集团id
+ */
+ private Long groupId;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicator.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicator.java
new file mode 100644
index 0000000..69dcd82
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicator.java
@@ -0,0 +1,66 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 绩效组指标项
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroupIndicator extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评组配置id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 指标名称
+ */
+ private String name;
+
+ /**
+ * 基础绩效分
+ */
+ private Integer baseScore;
+
+ /**
+ * 得分方式;1: 阶梯得分 2:普通得分
+ */
+ private Integer scoreWay;
+
+ /**
+ * 考评项别名
+ */
+ private String paramAlias;
+
+ /**
+ * 前置考评项别名(目前预留)
+ */
+ private String preconditionAlias;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorLadders.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorLadders.java
new file mode 100644
index 0000000..0e6ff8e
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorLadders.java
@@ -0,0 +1,39 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ * @author : kurisu
+ * @date : 2022-4-6
+ * @desc : 指标项得分阶梯
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class EvalGroupIndicatorLadders extends BaseAuditableTimeEntity {
+ /**
+ * 绩效组指标项id
+ */
+ private Long evalGroupIndicatorId;
+ /**
+ * 阶梯下限;大于等于
+ */
+ private BigDecimal lower;
+ /**
+ * 阶梯上限;小于; 无上限的情况值为 2<<15
+ */
+ private BigDecimal upper;
+ /**
+ * 标准分;本阶梯对应标准分
+ */
+ private Integer standardScore;
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+}
\ No newline at end of file
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorParam.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorParam.java
new file mode 100644
index 0000000..58775fe
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorParam.java
@@ -0,0 +1,92 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.enums.IndicatorCodeTypeEnum;
+import cn.fw.morax.domain.enums.ParamTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 考评组指标参数
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroupIndicatorParam extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评组配置id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 考评组指标id
+ */
+ private Long evalGroupIndicatorId;
+
+ /**
+ * 条件类型(1.台阶条件,2,提成条件)
+ */
+ private ParamTypeEnum paramType;
+
+ /**
+ * 指标类型(1.指标,2,考评指标)
+ */
+ private IndicatorCodeTypeEnum codeType;
+
+ /**
+ * 指标编码
+ */
+ private String code;
+
+ /**
+ * 指标库名称
+ */
+ private String name;
+
+ /**
+ * 占比
+ */
+ private BigDecimal proportion;
+
+ /**
+ * 是否封顶
+ */
+ private Boolean cap;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorPrecondition.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorPrecondition.java
new file mode 100644
index 0000000..73b5123
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorPrecondition.java
@@ -0,0 +1,82 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.enums.IndicatorCodeTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 考评组指标条件
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroupIndicatorPrecondition extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评组配置id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 考评组指标id
+ */
+ private Long evalGroupIndicatorId;
+
+ /**
+ * 指标类型(1.指标,2,考评指标)
+ */
+ private IndicatorCodeTypeEnum codeType;
+
+ /**
+ * 指标编码
+ */
+ private String code;
+
+ /**
+ * 指标库名称
+ */
+ private String name;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 排序
+ */
+ private Integer sort;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorPreconditionHitLog.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorPreconditionHitLog.java
new file mode 100644
index 0000000..8c12a0b
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorPreconditionHitLog.java
@@ -0,0 +1,59 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 考评指标条件记录
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroupIndicatorPreconditionHitLog extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评组指标条件id
+ */
+ private Long preconditionId;
+
+ /**
+ * 考评组指标条件阶梯id
+ */
+ private Long preconditionLaddersId;
+
+ /**
+ * 原始值
+ */
+ private BigDecimal value;
+
+ /**
+ * 数据日期
+ */
+ private LocalDate dataDate;
+
+ /**
+ * 集团id
+ */
+ private Long groupId;
+
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorPreconditionLadders.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorPreconditionLadders.java
new file mode 100644
index 0000000..78f45e4
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorPreconditionLadders.java
@@ -0,0 +1,56 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 考评组指标条件得分阶梯
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroupIndicatorPreconditionLadders extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评组指标条件id
+ */
+ private Long preconditionId;
+
+ /**
+ * 阶梯下限;大于等于
+ */
+ private BigDecimal lower;
+
+ /**
+ * 阶梯上限;小于; 无上限的情况值为 2<<15
+ */
+ private BigDecimal upper;
+
+ /**
+ * 得分百分比
+ */
+ private BigDecimal scorePercent;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorTargetHitLog.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorTargetHitLog.java
new file mode 100644
index 0000000..015f598
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorTargetHitLog.java
@@ -0,0 +1,64 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 考评指标达成目标记录
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroupIndicatorTargetHitLog extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评组指标/前置条件 id
+ */
+ private Long referId;
+
+ /**
+ * 类型 1:考评组指标 2:前置条件指标
+ */
+ private Integer targetType;
+
+ /**
+ * 原始值
+ */
+ private BigDecimal value;
+
+ /**
+ * 达成目标
+ */
+ private BigDecimal reachValue;
+
+ /**
+ * 数据日期
+ */
+ private LocalDate dataDate;
+
+ /**
+ * 集团id
+ */
+ private Long groupId;
+
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupReward.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupReward.java
new file mode 100644
index 0000000..eb8f47a
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupReward.java
@@ -0,0 +1,68 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.enums.EvalRewardCalMethodEnum;
+import cn.fw.morax.domain.enums.RankTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 考评奖惩
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroupReward extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评组配置id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 考评,活动名称
+ */
+ private String name;
+
+ /**
+ * 计算方式; 1: 排名正负激励 2:阶梯奖励(翻倍) 3:总金额X达成率占比 4:固定值X达成率 5: 固定值+超额部分追加奖励
+ */
+ private EvalRewardCalMethodEnum calMethod;
+
+ /**
+ * 排名方式;1:排名序号 2:排名人数百分比
+ */
+ private RankTypeEnum rankType;
+
+ /**
+ * 金额
+ */
+ private BigDecimal money;
+
+ /**
+ * 追加奖励 XX 元/台,超额奖励用
+ */
+ private BigDecimal extraMoney;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardLadders.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardLadders.java
new file mode 100644
index 0000000..df8f830
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardLadders.java
@@ -0,0 +1,66 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 考评奖惩阶梯
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroupRewardLadders extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评组指标条件id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 考评组奖励id
+ */
+ private Long evalGroupRewardId;
+
+ /**
+ * 阶梯下限;大于等于
+ */
+ private BigDecimal lower;
+
+ /**
+ * 阶梯上限;小于; 无上限的情况值为 2<<15
+ */
+ private BigDecimal upper;
+
+ /**
+ * 金额
+ */
+ private BigDecimal money;
+
+ /**
+ * 封顶金额/台
+ */
+ private BigDecimal capMoney;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardParam.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardParam.java
new file mode 100644
index 0000000..ec50a34
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardParam.java
@@ -0,0 +1,96 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.enums.IndicatorCodeTypeEnum;
+import cn.fw.morax.domain.enums.ParamTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 考评奖惩参数
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroupRewardParam extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评组id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 考评奖惩id
+ */
+ private Long evalGroupRewardId;
+
+ /**
+ * 参数类型(1.台阶,2,提成)
+ */
+ private ParamTypeEnum paramType;
+
+ /**
+ * 编码类型(1.指标,2.考评指标)
+ */
+ private IndicatorCodeTypeEnum codeType;
+
+ /**
+ * 项目编码
+ */
+ private String code;
+
+ /**
+ * 项目名称
+ */
+ private String name;
+
+ /**
+ * 占比
+ */
+ private BigDecimal proportion;
+
+ /**
+ * 是否封顶
+ */
+ private Boolean cap;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 金额
+ */
+ private BigDecimal money;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardPrecondition.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardPrecondition.java
new file mode 100644
index 0000000..f2aa20c
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardPrecondition.java
@@ -0,0 +1,92 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.enums.ConditionTypeEnum;
+import cn.fw.morax.domain.enums.IndicatorCodeTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 考评奖惩前置条件
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroupRewardPrecondition extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评组id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 考评奖惩id
+ */
+ private Long evalGroupRewardId;
+
+ /**
+ * 条件值类型; 1:满足目标 2:满足排名率 3:金额
+ */
+ private ConditionTypeEnum condType;
+
+ /**
+ * 编码类型(1. 指标,2.考评指标)
+ */
+ private IndicatorCodeTypeEnum codeType;
+
+ /**
+ * 项目编码
+ */
+ private String code;
+
+ /**
+ * 项目名称
+ */
+ private String name;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 条件值
+ */
+ private BigDecimal condValue;
+
+ /**
+ * 排序
+ */
+ private Integer sort;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardPreconditionHitLog.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardPreconditionHitLog.java
new file mode 100644
index 0000000..7a32b1d
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardPreconditionHitLog.java
@@ -0,0 +1,69 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 考评奖惩条件记录
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroupRewardPreconditionHitLog extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评组配置id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 考评组奖惩id
+ */
+ private Long evalGroupRewardId;
+
+ /**
+ * 考评组奖惩条件id
+ */
+ private Long preconditionId;
+
+ /**
+ * 原始值
+ */
+ private BigDecimal value;
+
+ /**
+ * 达成目标
+ */
+ private BigDecimal reachValue;
+
+ /**
+ * 数据日期
+ */
+ private LocalDate dataDate;
+
+ /**
+ * 集团id
+ */
+ private Long groupId;
+
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalIndicator.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalIndicator.java
new file mode 100644
index 0000000..d3a9e69
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalIndicator.java
@@ -0,0 +1,103 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 考评指标
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class EvalIndicator extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评指标编码
+ */
+ private String code;
+
+ /**
+ * 考评指标名称
+ */
+ private String name;
+
+ /**
+ * 归属系统id
+ */
+ private Long sysId;
+
+ /**
+ * 归属系统前缀
+ */
+ private String sysPrefix;
+
+ /**
+ * 归属系统名称
+ */
+ private String sysName;
+
+ /**
+ * 导入操作人员角色码
+ */
+ private String roleCode;
+
+ /**
+ * 导入操作人员角色名称
+ */
+ private String roleName;
+
+ /**
+ * 频率类型; 1:按滚动天 2:按星期 3:按月指定日期 4:按滚动月
+ */
+ private Integer ruleType;
+
+ /**
+ * 频率值 ,号分隔(按星期、按月指定日期使用)
+ */
+ private String ruleValues;
+
+ /**
+ * 按滚动月计算顺序; 1:正序 2:倒序
+ */
+ private Integer orderType;
+
+ /**
+ * 开始日期
+ */
+ private LocalDate startTime;
+
+ /**
+ * 目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private Integer targetType;
+
+ /**
+ * 启用/禁用;0:禁用 1:启用
+ */
+ private Boolean enable;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalPool.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalPool.java
new file mode 100644
index 0000000..5c21e52
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalPool.java
@@ -0,0 +1,115 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 考评池
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalPool extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评组编码
+ */
+ private String egc;
+
+ /**
+ * 考评组id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 用户id
+ */
+ private Long userId;
+
+ /**
+ * 用户名称
+ */
+ private String userName;
+
+ /**
+ * 岗位id
+ */
+ private Long postId;
+
+ /**
+ * 岗位名称
+ */
+ private String postName;
+
+ /**
+ * 门店id
+ */
+ private Long shopId;
+
+ /**
+ * 门店名称
+ */
+ private String shopName;
+
+ /**
+ * 社保公积金门店id
+ */
+ private Long fundShopId;
+
+ /**
+ * 社保公积金门店名称
+ */
+ private String fundShopName;
+
+ /**
+ * 考评奖惩
+ */
+ private BigDecimal reward;
+
+ /**
+ * 考评得分
+ */
+ private BigDecimal score;
+
+ /**
+ * 考评得分率
+ */
+ private BigDecimal scoreRatio;
+
+ /**
+ * 月度
+ */
+ private String monthly;
+
+ /**
+ * 固定的
+ */
+ private Boolean regular;
+
+ /**
+ * 集团id
+ */
+ private Long groupId;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalPoolIndicatorDetail.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalPoolIndicatorDetail.java
new file mode 100644
index 0000000..745e3a0
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalPoolIndicatorDetail.java
@@ -0,0 +1,75 @@
+package cn.fw.morax.domain.db.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 考评指标明细
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalPoolIndicatorDetail extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评池id
+ */
+ private Long evalPoolId;
+
+ /**
+ * 考评项id
+ */
+ private Long evalGroupIndicatorId;
+
+ /**
+ * 指标名称
+ */
+ private String name;
+
+ /**
+ * 基础绩效分
+ */
+ private Integer baseScore;
+
+ /**
+ * 考评得分
+ */
+ private BigDecimal score;
+
+ /**
+ * 考评得分率
+ */
+ private BigDecimal scoreRatio;
+
+ /**
+ * 月度
+ */
+ private String monthly;
+
+ /**
+ * 集团id
+ */
+ private Long groupId;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryRawData.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/IndicatorUserValue.java
index d074ff3..77a055f 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryRawData.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/IndicatorUserValue.java
@@ -1,40 +1,49 @@
-package cn.fw.morax.domain.db.salary;
+package cn.fw.morax.domain.db.kpi;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
-import cn.fw.morax.domain.enums.SalaryValueTypeEnum;
+import cn.fw.morax.domain.enums.IndicatorValueTypeEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDate;
/**
+ * 用户绩效指标上报数据类
+ *
* @author : kurisu
- * @date : 2022-4-6
- * @description : 薪酬提成原始数据
+ * @version : 2.0
+ * @className : IndicatorUserValue
+ * @description : 用户绩效指标上报数据类
+ * @date : 2022-12-15 11:19
*/
@Data
@EqualsAndHashCode(callSuper = true)
-public class SalaryRawData extends BaseAuditableTimeEntity {
+public class IndicatorUserValue extends BaseAuditableTimeEntity {
/**
- * 薪酬项编码
+ * 人员id
*/
- private String salaryProjectCode;
+ private Long userId;
/**
- * 薪酬项具体值;jons字符串 map类型
+ * 指标编码
*/
- private String salaryProjectValue;
+ private String indicatorCode;
+ /**
+ * 指标名称
+ */
+ private String indicatorName;
/**
* 类型;1: 百分比 2:数量 3:条件值 4:金额 5:工龄
*/
- private SalaryValueTypeEnum valueType;
+ private IndicatorValueTypeEnum valueType;
/**
- * 数据日期
+ * 指标业务值
+ * 指标值;jons字符串 map类型
*/
- private LocalDate dataDate;
+ private String indicatorValue;
/**
- * 人员id
+ * 数据日期
*/
- private Long userId;
+ private LocalDate dataDate;
/**
* 集团id
*/
@@ -43,4 +52,4 @@ public class SalaryRawData extends BaseAuditableTimeEntity
* 逻辑删除
*/
private Boolean yn;
-}
\ No newline at end of file
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/Indicators.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/Indicators.java
index ccc22cb..9bb4992 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/Indicators.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/Indicators.java
@@ -1,9 +1,11 @@
package cn.fw.morax.domain.db.kpi;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.common.data.mybatis.handler.IntegerListTypeHandler;
import cn.fw.common.data.mybatis.handler.StringListTypeHandler;
import cn.fw.morax.domain.enums.ApplicableRoleEnum;
-import cn.fw.morax.domain.enums.KpiTargetTypeEnum;
+import cn.fw.morax.domain.enums.DataTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
@@ -43,6 +45,10 @@ public class Indicators extends BaseAuditableTimeEntity {
*/
private String sysPrefix;
/**
+ * 数据类型;1:台数 2:百分比 3:金额
+ */
+ private DataTypeEnum dataType;
+ /**
* 适用角色类型;1: 全部角色 2:全部管理角色 3:自定义
*/
private ApplicableRoleEnum roleType;
@@ -62,11 +68,28 @@ public class Indicators extends BaseAuditableTimeEntity {
*/
private Boolean enable;
/**
+ * 内部指标
+ * 0:否 1:是
+ */
+ private Boolean innerIndicator;
+ /**
* 逻辑删除
*/
private Boolean yn;
/**
* 绩效目标值类型; 1:无 2:百分比 3:金额
*/
- private KpiTargetTypeEnum targetType;
+ private TargetTypeEnum targetType;
+
+ /**
+ * 适用范围类型; 1. 绩效组, 2.薪酬组, 3. 考评组
+ */
+ @TableField(typeHandler = IntegerListTypeHandler.class)
+ private List applyTypes;
+
+ /**
+ * 报表路径
+ */
+ private String reportPath;
+
}
\ No newline at end of file
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicator.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicator.java
index 3756dd3..3e3a31e 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicator.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicator.java
@@ -1,14 +1,12 @@
package cn.fw.morax.domain.db.kpi;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
-import cn.fw.morax.domain.enums.KpiTargetTypeEnum;
import cn.fw.morax.domain.enums.ScoreWayEnum;
import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import java.math.BigDecimal;
-
/**
* @author : kurisu
* @date : 2022-4-6
@@ -16,23 +14,21 @@ import java.math.BigDecimal;
*/
@Data
@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
public class KpiGroupIndicator extends BaseAuditableTimeEntity {
/**
* 绩效组配置id
*/
private Long kpiGroupId;
/**
- * 指标库id
- */
- private Long indicatorId;
- /**
- * 指标编码
+ * 指标库名称
*/
- private String indicatorCode;
+ private String name;
+
/**
- * 指标库名称
+ * 参数别名
*/
- private String indicatorName;
+ private String paramAlias;
/**
* 基础绩效分
*/
@@ -46,13 +42,5 @@ public class KpiGroupIndicator extends BaseAuditableTimeEntity {
+@TableName(autoResultMap = true)
+public class KpiGroupIndicatorHitLog extends BaseAuditableTimeEntity {
/**
- * 绩效池id
- */
- private Long kpiPoolId;
- /**
- * 绩效项id
+ * 绩效组指标id
*/
private Long kpiGroupIndicatorId;
/**
- * 命中的绩效配置项
+ * 绩效组指标阶梯id
*/
private Long kpiGroupIndicatorLaddersId;
/**
- * 薪酬值
+ * 员工id
+ */
+ private Long userId;
+ /**
+ * 绩效值
*/
private BigDecimal kpiValue;
/**
@@ -46,9 +45,5 @@ public class KpiIndicatorHitLog extends BaseAuditableTimeEntity
+ * 绩效组指标参数
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class KpiGroupIndicatorParam extends BaseAuditableTimeEntity {
+
+ /**
+ * 绩效组配置id
+ */
+ private Long kpiGroupId;
+
+ /**
+ * 绩效组指标id
+ */
+ private Long kpiGroupIndicatorId;
+
+ /**
+ * 条件类型(1.台阶条件,2,提成条件)
+ */
+ private ParamTypeEnum paramType;
+
+ /**
+ * 指标编码
+ */
+ private String indicatorCode;
+
+ /**
+ * 指标库名称
+ */
+ private String indicatorName;
+
+ /**
+ * 占比
+ */
+ private BigDecimal proportion;
+
+ /**
+ * 是否封顶
+ */
+ private Boolean cap;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicatorPrecondition.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicatorPrecondition.java
new file mode 100644
index 0000000..7327dda
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicatorPrecondition.java
@@ -0,0 +1,76 @@
+package cn.fw.morax.domain.db.kpi;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 绩效组指标条件
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName(autoResultMap = true)
+public class KpiGroupIndicatorPrecondition extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 绩效组配置id
+ */
+ private Long kpiGroupId;
+
+ /**
+ * 绩效组指标id
+ */
+ private Long kpiGroupIndicatorId;
+
+ /**
+ * 指标编码
+ */
+ private String indicatorCode;
+
+ /**
+ * 指标库名称
+ */
+ private String indicatorName;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 排序
+ */
+ private Integer sort;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryRawDataDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicatorPreconditionHitLog.java
index 9c6c338..6796985 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryRawDataDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicatorPreconditionHitLog.java
@@ -1,42 +1,51 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.db.kpi;
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
+import lombok.EqualsAndHashCode;
-import java.util.Date;
+import java.math.BigDecimal;
+import java.time.LocalDate;
/**
+ * 绩效组指标前置条件命中记录
+ *
* @author : kurisu
- * @version : 1.0
- * @className : SalaryRawDataDTO
- * @description : 提成薪酬数据
- * @date : 2022-04-25 10:33
+ * @version : 2.0
+ * @className : KpiGroupIndicatorPreconditionHitLog
+ * @description : 绩效组指标前置条件命中记录
+ * @date : 2022-12-13 10:44
*/
@Data
-public class SalaryRawDataDTO {
+@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
+public class KpiGroupIndicatorPreconditionHitLog extends BaseAuditableTimeEntity {
/**
- * 薪酬项编码
+ * 前置条件id
*/
- private String salaryProjectCode;
+ private Long preconditionId;
/**
- * 用户id
+ * 前置条件配置阶梯id
*/
- private Long userId;
+ private Long preconditionLaddersId;
/**
- * 上报日期
+ * 人员id
*/
- private Date dataDate;
+ private Long userId;
/**
- * 集团id
+ * 值
*/
- private Long groupId;
+ private BigDecimal value;
/**
- * 计算方式
- *
- * @see cn.fw.morax.domain.enums.SalaryValueTypeEnum
+ * 数据日期
*/
- private Integer valueType;
+ private LocalDate dataDate;
/**
- * 薪酬项对应值
+ * 集团id
*/
- private String salaryProjectValue;
+ private Long groupId;
+ @TableLogic
+ private Boolean yn;
}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicatorPreconditionLadders.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicatorPreconditionLadders.java
new file mode 100644
index 0000000..f86ce85
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicatorPreconditionLadders.java
@@ -0,0 +1,54 @@
+package cn.fw.morax.domain.db.kpi;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 绩效组指标条件得分阶梯
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName(autoResultMap = true)
+public class KpiGroupIndicatorPreconditionLadders extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 绩效组指标条件id
+ */
+ private Long preconditionId;
+
+ /**
+ * 阶梯下限;大于等于
+ */
+ private BigDecimal lower;
+
+ /**
+ * 阶梯上限;小于; 无上限的情况值为 2<<15
+ */
+ private BigDecimal upper;
+
+ /**
+ * 得分百分比
+ */
+ private BigDecimal scorePercent;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicatorTargetHitLog.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicatorTargetHitLog.java
new file mode 100644
index 0000000..2d45be1
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupIndicatorTargetHitLog.java
@@ -0,0 +1,58 @@
+package cn.fw.morax.domain.db.kpi;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.enums.IndicatorTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * 绩效组指标得分命中记录
+ *
+ * @author : kurisu
+ * @version : 2.0
+ * @className : KpiGroupIndicatorTargetHitLog
+ * @description : 绩效组指标目标命中记录
+ * @date : 2022-12-13 15:09
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
+public class KpiGroupIndicatorTargetHitLog extends BaseAuditableTimeEntity {
+ /**
+ * 指标类型对应id
+ * 即paramId或者preconditionId
+ */
+ private Long referId;
+ /**
+ * 指标类型
+ */
+ private IndicatorTypeEnum targetType;
+ /**
+ * 人员id
+ */
+ private Long userId;
+ /**
+ * 原始值
+ */
+ private BigDecimal value;
+ /**
+ * 达成值
+ */
+ private BigDecimal reachValue;
+ /**
+ * 数据日期
+ */
+ private LocalDate dataDate;
+ /**
+ * 集团id
+ */
+ private Long groupId;
+ /**
+ * yn
+ */
+ private Boolean yn;
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupUser.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupUser.java
index 5881c2b..557efcc 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupUser.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiGroupUser.java
@@ -2,6 +2,7 @@ package cn.fw.morax.domain.db.kpi;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
import cn.fw.morax.domain.enums.KpiIgnoreCauseEnum;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.time.LocalDate;
@@ -16,6 +17,7 @@ import java.time.LocalDate;
@Builder
@NoArgsConstructor
@AllArgsConstructor
+@TableName(autoResultMap = true)
public class KpiGroupUser extends BaseAuditableTimeEntity {
/**
* 绩效组编码
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiMqLog.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiMqLog.java
deleted file mode 100644
index dbc1ac1..0000000
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiMqLog.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package cn.fw.morax.domain.db.kpi;
-
-import com.baomidou.mybatisplus.annotation.*;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-import java.time.LocalDate;
-import java.util.Date;
-
-/**
- * @author : kurisu
- * @version : 1.0
- * @className : KpiMqLog
- * @description : 绩效上报mq发送记录
- * @date : 2022-04-12 18:10
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class KpiMqLog extends Model {
- @TableId(type = IdType.ASSIGN_ID)
- private Long id;
- /**
- * 指标编号
- */
- private String indicatorCode;
- /**
- * 岗位id
- */
- private Long postId;
- /**
- * 发送时间
- * 可能为过去时间
- */
- private LocalDate sendDate;
- /**
- * 集团id
- */
- private Long groupId;
- /**
- * 创建时间
- */
- @TableField(insertStrategy = FieldStrategy.NOT_NULL, fill = FieldFill.INSERT)
- private Date createTime;
-}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiPool.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiPool.java
index ce64575..75c12a3 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiPool.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiPool.java
@@ -2,6 +2,7 @@ package cn.fw.morax.domain.db.kpi;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
import cn.fw.morax.domain.enums.StarLevelEnum;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.math.BigDecimal;
@@ -17,6 +18,7 @@ import java.time.YearMonth;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
public class KpiPool extends BaseAuditableTimeEntity {
/**
* 绩效组编码
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiPoolIndicatorValue.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiPoolIndicatorValue.java
index a06493c..8a14c7e 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiPoolIndicatorValue.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiPoolIndicatorValue.java
@@ -1,6 +1,7 @@
package cn.fw.morax.domain.db.kpi;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -14,23 +15,20 @@ import java.time.LocalDate;
*/
@Data
@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
public class KpiPoolIndicatorValue extends BaseAuditableTimeEntity {
/**
* 绩效池id
*/
private Long kpiPoolId;
/**
- * 人员id
- */
- private Long userId;
- /**
- * 指标编码
+ * 绩效组指标配置id
*/
- private String indicatorCode;
+ private Long kpiGroupIndicatorId;
/**
- * 指标业务值
+ * 人员id
*/
- private BigDecimal indicatorValue;
+ private Long userId;
/**
* 指标得分
*/
@@ -40,10 +38,6 @@ public class KpiPoolIndicatorValue extends BaseAuditableTimeEntity {
/**
* 用户id
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiStarLadders.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiStarLadders.java
index f8f9e8f..55b2b92 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiStarLadders.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiStarLadders.java
@@ -3,6 +3,7 @@ package cn.fw.morax.domain.db.kpi;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
import cn.fw.morax.domain.enums.StarLevelEnum;
import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -15,6 +16,7 @@ import java.math.BigDecimal;
*/
@Data
@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
public class KpiStarLadders extends BaseAuditableTimeEntity {
/**
* 绩效组配置id
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiStarRule.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiStarRule.java
index 94ed04c..ae73a84 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiStarRule.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiStarRule.java
@@ -1,6 +1,7 @@
package cn.fw.morax.domain.db.kpi;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,6 +14,7 @@ import java.math.BigDecimal;
*/
@Data
@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
public class KpiStarRule extends BaseAuditableTimeEntity {
/**
* 滚动月数
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/IncomeCompensation.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/IncomeCompensation.java
new file mode 100644
index 0000000..a2c0139
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/IncomeCompensation.java
@@ -0,0 +1,86 @@
+package cn.fw.morax.domain.db.salary;
+
+import cn.fw.common.data.entity.BaseAuditableEntity;
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.common.data.mybatis.handler.LongListTypeHandler;
+import cn.fw.common.data.mybatis.handler.StringListTypeHandler;
+import cn.fw.morax.domain.enums.SettingStatusEnum;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ *
+ * 收入补偿
+ *
+ *
+ * @author jiangchao
+ * @since 2022-11-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName(autoResultMap = true)
+public class IncomeCompensation extends BaseAuditableEntity {
+
+ /**
+ * 岗位id
+ */
+ private Long postId;
+
+ /**
+ * 岗位名称
+ */
+ private String postName;
+
+ /**
+ * 适用门店ids
+ */
+ @TableField(typeHandler = LongListTypeHandler.class)
+ private List shopIds;
+
+ /**
+ * 适用门店名称
+ */
+ @TableField(typeHandler = StringListTypeHandler.class)
+ private List shopNames;
+
+ /**
+ * 多个生效月份
+ */
+ @TableField(typeHandler = StringListTypeHandler.class)
+ private List months;
+
+ /**
+ * 单人补偿金额
+ */
+ private BigDecimal money;
+
+ /**
+ * 单人最高补偿金额
+ */
+ private BigDecimal maxMoney;
+
+ /**
+ * 状态;1:审批中 3:生效中 4:已失效
+ */
+ private SettingStatusEnum status;
+
+ /**
+ * 集团id
+ */
+ private Long groupId;
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/IncomeCompensationList.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/IncomeCompensationList.java
new file mode 100644
index 0000000..0e1c98c
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/IncomeCompensationList.java
@@ -0,0 +1,68 @@
+package cn.fw.morax.domain.db.salary;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.YearMonth;
+
+/**
+ *
+ * 收入补偿清单
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName(autoResultMap = true)
+public class IncomeCompensationList extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 补偿id
+ */
+ private Long incomeCompensationId;
+
+ /**
+ * 岗位id
+ */
+ private Long postId;
+
+ /**
+ * 门店id
+ */
+ private Long shopId;
+
+ /**
+ * 生效月份
+ */
+ private YearMonth dataMonth;
+
+ /**
+ * 有效性;0:生效 1:失效
+ */
+ private Boolean effective;
+
+ /**
+ * 失效时间
+ */
+ private LocalDate ineffectiveDate;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryConfirm.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryConfirm.java
index 3f4d01d..d2dd77b 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryConfirm.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryConfirm.java
@@ -2,6 +2,7 @@ package cn.fw.morax.domain.db.salary;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
import cn.fw.morax.domain.enums.SalaryConfirmStatusEnum;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -14,6 +15,7 @@ import java.time.LocalDateTime;
*/
@Data
@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
public class SalaryConfirm extends BaseAuditableTimeEntity {
/**
* 薪酬池id
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryExtraProject.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryExtraProject.java
index ef88529..39fa3d0 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryExtraProject.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryExtraProject.java
@@ -2,6 +2,7 @@ package cn.fw.morax.domain.db.salary;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
import cn.fw.morax.domain.enums.ExtraSalaryTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -17,6 +18,7 @@ import java.time.LocalDate;
*/
@Data
@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
public class SalaryExtraProject extends BaseAuditableTimeEntity {
/**
* 岗位id
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGeneralSettin.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGeneralSettin.java
index bcd365b..1fa3b37 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGeneralSettin.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGeneralSettin.java
@@ -2,6 +2,7 @@ package cn.fw.morax.domain.db.salary;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -12,6 +13,7 @@ import lombok.EqualsAndHashCode;
*/
@Data
@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
public class SalaryGeneralSettin extends BaseAuditableTimeEntity {
/**
* 管理层可见
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProject.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProject.java
index f1a537a..b5d493f 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProject.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProject.java
@@ -1,7 +1,9 @@
package cn.fw.morax.domain.db.salary;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.enums.DataTypeEnum;
import cn.fw.morax.domain.enums.SalaryCalMethodEnum;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -12,28 +14,41 @@ import lombok.EqualsAndHashCode;
*/
@Data
@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
public class SalaryGroupProject extends BaseAuditableTimeEntity {
/**
* 薪酬组id
*/
private Long salaryGroupId;
/**
- * 薪酬项目id
+ * 名称
*/
- private Long salaryProjectId;
+ private String name;
+
+ /**
+ * 台阶参数别名
+ */
+ public String ladderParamAlias;
+
/**
- * 薪酬项目编码
+ * 提成参数别名
*/
- private String salaryProjectCode;
+ public String commissionParamAlias;
+
/**
- * 薪酬项目名称
+ * 前置条件别名
*/
- private String salaryProjectName;
+ public String preconditionAlias;
+
/**
- * 计算方式;1: 星级 2:固定金额 3:阶梯(单) 4:按量 5: 固定提成 6:阶梯(总) 7:动态
+ * 计算方式;1: 星级 2:固定金额 3:阶梯 4:车系
*/
private SalaryCalMethodEnum calMethod;
/**
+ * 数据类型;1:数量 2:百分比 3:金额
+ */
+ private DataTypeEnum laddersType;
+ /**
* 唯一值;是否允许有多个相同项目
*/
private Boolean single;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryProjectHitLog.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProjectHitLog.java
index f56506b..95605ea 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryProjectHitLog.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProjectHitLog.java
@@ -1,7 +1,7 @@
package cn.fw.morax.domain.db.salary;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
-import com.baomidou.mybatisplus.annotation.TableLogic;
+import cn.fw.morax.domain.enums.StarLevelEnum;
import lombok.*;
import java.math.BigDecimal;
@@ -12,7 +12,7 @@ import java.time.LocalDate;
*
* @author : kurisu
* @version : 1.0
- * @className : SalaryProjectHitLog
+ * @className : SalaryGroupProjectHitLog
* @description : 用户薪酬项命中记录
* @date : 2022-05-19 10:47
*/
@@ -21,24 +21,36 @@ import java.time.LocalDate;
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
-public class SalaryProjectHitLog extends BaseAuditableTimeEntity {
+public class SalaryGroupProjectHitLog extends BaseAuditableTimeEntity {
/**
- * 薪酬池id
+ * 用户id
*/
- private Long salaryPoolId;
+ private Long userId;
/**
* 薪酬项id
*/
- private Long salaryProjectId;
+ private Long salaryGroupProjectId;
/**
* 命中的薪酬配置项
*/
private Long salaryGroupProjectSettinId;
/**
+ * 星级
+ */
+ private StarLevelEnum starLevel;
+ /**
* 薪酬值
*/
private BigDecimal salaryValue;
/**
+ * 命中的台阶指标值
+ */
+ private BigDecimal hitLadderValue;
+ /**
+ * 命中的提成指标值
+ */
+ private BigDecimal hitCommissionValue;
+ /**
* 数据日期
*/
private LocalDate dataDate;
@@ -49,6 +61,5 @@ public class SalaryProjectHitLog extends BaseAuditableTimeEntity
+ * 薪酬组薪酬项目参数
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName(autoResultMap = true)
+public class SalaryGroupProjectParam extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 薪酬组id
+ */
+ private Long salaryGroupId;
+
+ /**
+ * 薪酬组项目id
+ */
+ private Long salaryGroupProjectId;
+
+ /**
+ * 参数类型(1.台阶,2,提成)
+ */
+ private ParamTypeEnum paramType;
+
+ /**
+ * 指标编码
+ */
+ private String indicatorCode;
+
+ /**
+ * 指标库名称
+ */
+ private String indicatorName;
+
+ /**
+ * 目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 占比
+ */
+ private BigDecimal proportion;
+
+ /**
+ * 是否封顶
+ */
+ private Boolean cap;
+
+ /**
+ * 排序
+ */
+ private Integer sort;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProjectPrecondition.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProjectPrecondition.java
new file mode 100644
index 0000000..0fbb738
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProjectPrecondition.java
@@ -0,0 +1,82 @@
+package cn.fw.morax.domain.db.salary;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 薪酬组薪酬项目前置条件
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName(autoResultMap = true)
+public class SalaryGroupProjectPrecondition extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 薪酬组id
+ */
+ private Long salaryGroupId;
+
+ /**
+ * 薪酬组项目id
+ */
+ private Long salaryGroupProjectId;
+
+ /**
+ * 指标编码
+ */
+ private String indicatorCode;
+
+ /**
+ * 指标库名称
+ */
+ private String indicatorName;
+
+ /**
+ * 目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 条件值
+ */
+ private BigDecimal condValue;
+
+ /**
+ * 排序
+ */
+ private Integer sort;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProjectPreconditionLog.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProjectPreconditionLog.java
new file mode 100644
index 0000000..06720e0
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProjectPreconditionLog.java
@@ -0,0 +1,52 @@
+package cn.fw.morax.domain.db.salary;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ *
+ * 薪酬指标条件记录
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class SalaryGroupProjectPreconditionLog extends BaseAuditableTimeEntity {
+
+ /**
+ * 薪酬组项目id
+ */
+ private Long salaryGroupProjectId;
+
+ /**
+ * 薪酬组薪酬项目前置条件id
+ */
+ private Long preconditionId;
+ /**
+ * 用户id
+ */
+ private Long userId;
+ /**
+ * 值
+ */
+ private BigDecimal value;
+
+ /**
+ * 数据日期
+ */
+ private LocalDate dataDate;
+
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProjectSettin.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProjectSettin.java
index 7a6d18c..237856c 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProjectSettin.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupProjectSettin.java
@@ -1,6 +1,7 @@
package cn.fw.morax.domain.db.salary;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,6 +14,7 @@ import java.math.BigDecimal;
*/
@Data
@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
public class SalaryGroupProjectSettin extends BaseAuditableTimeEntity {
/**
* 薪酬项目配置id
@@ -35,11 +37,11 @@ public class SalaryGroupProjectSettin extends BaseAuditableTimeEntity
+ * 薪酬指标达成目标记录
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class SalaryGroupProjectTargetHitLog extends BaseAuditableTimeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 薪酬项目、前置条件 配置id
+ */
+ private Long referId;
+
+ /**
+ * 1:薪酬项目 2:前置条件
+ */
+ private IndicatorTypeEnum targetType;
+ /**
+ * 用户id
+ */
+ private Long userId;
+ /**
+ * 原始值
+ */
+ private BigDecimal value;
+ /**
+ * 达成目标
+ */
+ private BigDecimal reachValue;
+
+ /**
+ * 数据日期
+ */
+ private LocalDate dataDate;
+
+ /**
+ * 集团
+ */
+ private Long groupId;
+
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupUser.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupUser.java
index 01477fe..31dcb0c 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupUser.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryGroupUser.java
@@ -1,6 +1,7 @@
package cn.fw.morax.domain.db.salary;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.time.LocalDate;
@@ -15,6 +16,7 @@ import java.time.LocalDate;
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
public class SalaryGroupUser extends BaseAuditableTimeEntity {
/**
* 薪酬组编码
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryPool.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryPool.java
index e6f721a..f29ad64 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryPool.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryPool.java
@@ -2,10 +2,12 @@ package cn.fw.morax.domain.db.salary;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
import cn.fw.morax.domain.enums.StarLevelEnum;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
+import java.time.LocalDate;
import java.time.YearMonth;
/**
@@ -15,6 +17,7 @@ import java.time.YearMonth;
*/
@Data
@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
public class SalaryPool extends BaseAuditableTimeEntity {
/**
* 薪酬组编码
@@ -65,6 +68,10 @@ public class SalaryPool extends BaseAuditableTimeEntity {
*/
private BigDecimal reward;
/**
+ * 数据日期
+ */
+ private LocalDate dataDate;
+ /**
* 月度
*/
private YearMonth monthly;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryPoolDetail.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryPoolDetail.java
index cfedfad..ff16791 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryPoolDetail.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/salary/SalaryPoolDetail.java
@@ -2,6 +2,7 @@ package cn.fw.morax.domain.db.salary;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
import cn.fw.morax.domain.enums.SalaryTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -15,19 +16,20 @@ import java.time.LocalDate;
*/
@Data
@EqualsAndHashCode(callSuper = true)
+@TableName(autoResultMap = true)
public class SalaryPoolDetail extends BaseAuditableTimeEntity {
/**
* 薪酬池id
*/
private Long salaryPoolId;
/**
- * 薪酬项id
+ * 薪酬项配置id
*/
- private Long salaryProjectId;
+ private Long salaryGroupProjectId;
/**
- * 薪酬项名称
+ * 薪酬项配置名称
*/
- private String salaryProjectName;
+ private String salaryGroupProjectName;
/**
* 薪资类型
*/
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/EvalIndicatorDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/EvalIndicatorDTO.java
new file mode 100644
index 0000000..fd8df02
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/EvalIndicatorDTO.java
@@ -0,0 +1,129 @@
+package cn.fw.morax.domain.dto;
+
+import cn.fw.morax.common.utils.PublicUtil;
+import cn.fw.morax.domain.db.eval.EvalIndicator;
+import cn.fw.morax.domain.enums.DataTypeEnum;
+import cn.fw.morax.domain.enums.EvalRuleTypeEnum;
+import cn.fw.morax.domain.enums.MonthDayTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * @author : kurisu
+ * @date : 2022-4-2
+ * @desc : 指标库
+ */
+@Data
+public class EvalIndicatorDTO {
+
+ private Long id;
+
+ /**
+ * 指标名称
+ */
+ @NotBlank(message = "指标名称不能为空")
+ @Length(max = 255, message = "指标名称超出最大长度限制")
+ private String name;
+
+ /**
+ * 归属系统id
+ */
+ @NotNull(message = "归属系统不能为空")
+ private Long sysId;
+
+ /**
+ * 归属系统名称
+ */
+ @NotNull(message = "归属系统名称不能为空")
+ private String sysName;
+
+ /**
+ * 数据类型;1:台数 2:百分比 3:金额
+ */
+ @NotNull(message = "数据类型不能为空")
+ private DataTypeEnum dataType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额
+ */
+ @NotNull(message = "绩效目标值类型不能为空")
+ private TargetTypeEnum targetType;
+
+ /**
+ * 导入操作角色编码
+ */
+ @NotBlank(message = "导入操作角色编码不能为空")
+ private String roleCode;
+
+ /**
+ * 导入操作角色名称
+ */
+ @NotBlank(message = "导入操作角色名称不能为空")
+ private String roleName;
+
+ /**
+ * 频率类型; 1:按滚动天 2:按星期 3:按月指定日期 4:按滚动月
+ */
+ @NotNull(message = "频率类型不能为空")
+ private EvalRuleTypeEnum ruleType;
+
+ /**
+ * 频率值 ,号分隔(按星期、按月指定日期使用)
+ */
+ private List ruleValues;
+
+ /**
+ * 滚动月数/滚动天数
+ */
+ private Integer rollValue;
+
+ /**
+ * 开始日期
+ */
+ private LocalDate startTime;
+
+ /**
+ * 月天; 1:月第几天 2:月倒数第几天
+ */
+ private MonthDayTypeEnum monthDayType;
+
+ /**
+ * 月天数
+ */
+ private Integer monthDay;
+
+ /**
+ * 转换为db对象
+ *
+ * 1. 滚动天数 rule_values(滚动天数),start_time(开始日期)
+ * 2. 按星期 rule_values(星期)
+ * 3. 按月指定日期 rule_values(滚动月数、滚动开始日)
+ * 4. 按滚动月 rule_values(滚动月数、滚动开始日),start_time(开始日期),
+ * order_type(按滚动月计算顺序)
+ * @return
+ */
+ public EvalIndicator convertToDB(){
+ EvalIndicator indicators = EvalIndicator.builder()
+ .name(this.getName())
+ .enable(Boolean.FALSE)
+// .dataType(this.getDataType())
+// .targetType(this.targetType)
+ .sysId(this.getSysId())
+ .sysName(this.getSysName())
+ .roleCode(this.getRoleCode())
+ .roleName(this.getRoleName())
+ .build();
+ if (PublicUtil.isEmpty(this.getId())) {
+ indicators.setId(this.getId());
+ }
+ return indicators;
+ }
+
+
+}
\ No newline at end of file
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/IncomeCompensationDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/IncomeCompensationDTO.java
new file mode 100644
index 0000000..2ce3862
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/IncomeCompensationDTO.java
@@ -0,0 +1,76 @@
+package cn.fw.morax.domain.dto;
+
+import cn.fw.common.data.mybatis.handler.LongListTypeHandler;
+import cn.fw.common.data.mybatis.handler.StringListTypeHandler;
+import cn.fw.morax.domain.enums.SettingStatusEnum;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.time.YearMonth;
+import java.util.List;
+
+/**
+ *
+ * 收入补偿
+ *
+ *
+ * @author jiangchao
+ * @since 2022-11-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class IncomeCompensationDTO {
+
+ /**
+ * 岗位id
+ */
+ @NotNull(message = "岗位id不能为空")
+ private Long postId;
+
+ /**
+ * 岗位名称
+ */
+ @NotNull(message = "岗位名称不能为空")
+ private String postName;
+
+ /**
+ * 适用门店ids
+ */
+ @NotNull(message = "门店不能为空")
+ private List shopIds;
+
+ /**
+ * 适用门店名称
+ */
+ @NotNull(message = "适用门店名称不能为空")
+ private List shopNames;
+
+ /**
+ * 多个生效月份
+ */
+ @NotNull(message = "多个生效月份不能为空")
+ private List months;
+
+ /**
+ * 单人补偿金额
+ */
+ @NotNull(message = "单人补偿金额不能为空")
+ private BigDecimal money;
+
+ /**
+ * 单人最高补偿金额
+ */
+ @NotNull(message = "单人最高补偿金额不能为空")
+ private BigDecimal maxMoney;
+
+ /**
+ * 状态;1:审批中 3:生效中 4:已失效
+ */
+// private SettingStatusEnum status;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalDTO.java
new file mode 100644
index 0000000..ecff3f1
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalDTO.java
@@ -0,0 +1,75 @@
+package cn.fw.morax.domain.dto.eval;
+
+import cn.fw.common.web.annotation.LoginContextField;
+import cn.fw.morax.domain.db.eval.EvalGroup;
+import cn.fw.morax.domain.enums.EvalTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.Valid;
+import javax.validation.constraints.Future;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ *
+ * 考评组
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalDTO {
+
+ /**
+ * 考评组id(前一次)
+ */
+ private Long id;
+
+ /**
+ * 考评,活动名称
+ */
+ @NotBlank(message = "名称不能为空")
+ @Length(max = 255, message = "名称超出最大限制")
+ private String name;
+
+ /**
+ * 考评类型; 1:活动考评 2:其他考评
+ */
+ @NotNull(message = "考评类型不能为空")
+ private EvalTypeEnum type;
+
+ /**
+ * 集团id
+ force */
+ @LoginContextField(LoginContextField.Name.GROUP_ID)
+ private Long groupId;
+
+ /**
+ * 用户名
+ force */
+ @LoginContextField(LoginContextField.Name.USER_NAME)
+ private String userName;
+
+ /**
+ * 用户名
+ force */
+ @LoginContextField(LoginContextField.Name.USER_ID)
+ private Long userId;
+
+ /**
+ * 考评组
+ */
+ @NotNull(message = "考评组不能为空")
+ @Size(min = 1, message = "考评组不能为空")
+ @Valid
+ private List evalGroups;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupDTO.java
new file mode 100644
index 0000000..9fb6575
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupDTO.java
@@ -0,0 +1,155 @@
+package cn.fw.morax.domain.dto.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.common.web.annotation.LoginContextField;
+import cn.fw.morax.domain.enums.EvalScopeEnum;
+import cn.fw.morax.domain.enums.EvalTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.Valid;
+import javax.validation.constraints.Future;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ *
+ * 考评组
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupDTO {
+
+ private static final long serialVersionUID = 1L;
+ /**
+ * 考评组id(前一次)
+ */
+ private Long id;
+
+ /**
+ * 考评组编码
+ */
+ private String egc;
+
+ /**
+ * 考评,活动名称
+ */
+ @NotBlank(message = "名称不能为空")
+ @Length(max = 255, message = "名称超出最大限制")
+ private String name;
+
+ /**
+ * 考评范围; 1:门店考评 2:人员考评
+ */
+ @NotNull(message = "考评范围不能为空")
+ private EvalScopeEnum scopeType;
+
+// /**
+// * 考评类型; 1:活动考评 2:其他考评
+// */
+// @NotNull(message = "考评类型不能为空")
+// private EvalTypeEnum type;
+
+ /**
+ * 岗位id
+ */
+ @NotNull(message = "岗位id不能为空")
+ private Long postId;
+
+ /**
+ * 岗位名称
+ */
+ @NotBlank(message = "岗位名称不能为空")
+ private String postName;
+
+ /**
+ * 适用门店ids
+ */
+ @NotNull(message = "适用门店id不能为空")
+ @Size(min = 1, message = "适用门店id不能为空")
+ private List shopIds;
+
+ /**
+ * 适用门店名称
+ */
+ @NotNull(message = "适用门店名称不能为空")
+ @Size(min = 1, message = "适用门店名称不能为空")
+ private List shopNames;
+
+ /**
+ * 调整原因
+ */
+ @NotBlank(message = "调整原因不能为空")
+ @Length(max = 512, message = "调整原因超出最大限制")
+ private String reason;
+
+ /**
+ * 附件;fid逗号隔开
+ */
+ private List attachment;
+
+ /**
+ * 集团id
+ force */
+ @LoginContextField(LoginContextField.Name.GROUP_ID)
+ private Long groupId;
+
+ /**
+ * 用户名
+ force */
+ @LoginContextField(LoginContextField.Name.USER_NAME)
+ private String userName;
+
+ /**
+ * 用户名
+ force */
+ @LoginContextField(LoginContextField.Name.USER_ID)
+ private Long userId;
+
+ /**
+ * 生效时间
+ */
+ @Future(message = "生效时间不能在当前时间之前")
+ @NotNull(message = "生效时间不能为空")
+ private LocalDate beginTime;
+
+ /**
+ * 结束时间
+ */
+ @NotNull(message = "结束时间不能为空")
+ @Future(message = "结束时间不能在当前时间之前")
+ private LocalDate overTime;
+
+ /**
+ * 考评指标
+ */
+ @Valid
+ private List indicators;
+
+ /**
+ * 考评奖惩
+ */
+ @Valid
+ private List rewards;
+
+// /**
+// * 状态;1:审批中 2:审批拒绝 3:生效中 4:草稿
+// */
+// private Integer status;
+//
+// /**
+// * 包含指标数量
+// */
+// private Integer indicatorNum;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorDTO.java
new file mode 100644
index 0000000..1d55276
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorDTO.java
@@ -0,0 +1,92 @@
+package cn.fw.morax.domain.dto.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.db.eval.EvalGroupIndicator;
+import cn.fw.morax.domain.db.eval.EvalGroupIndicatorPreconditionLadders;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ *
+ * 绩效组指标项
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupIndicatorDTO {
+
+ private static final long serialVersionUID = 1L;
+
+// /**
+// * 考评组配置id
+// */
+// private Long evalGroupId;
+
+ /**
+ * 指标名称
+ */
+ @NotBlank(message = "指标名称不能为空")
+ @Length(max = 255, message = "指标名称超出最大长度限制")
+ private String name;
+
+ /**
+ * 考评项别名
+ */
+ @NotBlank(message = "考评项别名不能为空")
+ @Length(max = 255, message = "考评项别名超出最大长度限制")
+ private String paramAlias;
+
+ /**
+ * 基础绩效分
+ */
+ @NotNull(message = "基础绩效分不能为空")
+ private Integer baseScore;
+
+ /**
+ * 得分方式;1: 阶梯得分 2:普通得分
+ */
+ @NotNull(message = "得分方式不能为空")
+ private Integer scoreWay;
+
+ /**
+ * 前置考评项别名(目前预留)
+ */
+ private String preconditionAlias;
+
+ /**
+ * 提成参数
+ */
+ @Valid
+ private List commissionParams;
+
+ /**
+ * 台阶参数
+ */
+ @Valid
+ private List ladderParams;
+
+ /**
+ * 条件
+ */
+ @Valid
+ private List conds;
+
+ /**
+ * 指标阶梯
+ */
+ @Valid
+ private List ladders;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorLaddersDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorLaddersDTO.java
new file mode 100644
index 0000000..04f2f4e
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorLaddersDTO.java
@@ -0,0 +1,52 @@
+package cn.fw.morax.domain.dto.eval;
+
+import cn.fw.morax.common.utils.PublicUtil;
+import cn.fw.morax.domain.dto.AbstractLaddersDto;
+import lombok.Data;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author : kurisu
+ * @date : 2022-4-6
+ * @desc : 指标项得分阶梯
+ */
+@Data
+public class EvalGroupIndicatorLaddersDTO extends AbstractLaddersDto implements Comparable{
+
+ /**
+ * 标准分;本阶梯对应标准分
+ */
+ @NotNull(message = "标准分不能为空")
+ @Min(value = 0, message = "标准分不能小于0")
+ private Integer standardScore;
+
+
+ /**
+ * 正序排列
+ *
+ * @param other
+ * @return
+ */
+ @Override
+ public int compareTo(EvalGroupIndicatorLaddersDTO other) {
+ int result = this.standardScore - other.getStandardScore();
+ if (result == 0) {
+ //优先通过下限比较,上限与下限
+ if (PublicUtil.isEmpty(this.upper) || PublicUtil.isEmpty(other.getUpper())) {
+ result = this.lower.compareTo(other.getLower());
+ } else {
+ result = this.upper.compareTo(other.getUpper());
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public String getBusinessName() {
+ return "指标项得分阶梯";
+ }
+
+
+}
\ No newline at end of file
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorParamDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorParamDTO.java
new file mode 100644
index 0000000..b2ad8fb
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorParamDTO.java
@@ -0,0 +1,75 @@
+package cn.fw.morax.domain.dto.eval;
+
+import cn.fw.morax.domain.enums.IndicatorCodeTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ *
+ * 考评组指标参数
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupIndicatorParamDTO {
+
+ /**
+ * 条件类型(1.台阶条件,2,提成条件)
+ */
+// @NotNull(message = "条件类型不能为空")
+// private ParamTypeEnum paramType;
+
+ /**
+ * 指标类型(1.指标,2,考评指标)
+ */
+ @NotNull(message = "指标类型不能为空")
+ private IndicatorCodeTypeEnum codeType;
+
+ /**
+ * 指标编码
+ */
+ @NotNull(message = "指标编码不能为空")
+ private String code;
+
+ /**
+ * 指标库名称
+ */
+ @NotNull(message = "指标库名称不能为空")
+ private String name;
+
+ /**
+ * 占比
+ */
+ @NotNull(message = "占比不能为空")
+ private BigDecimal proportion;
+
+ /**
+ * 是否封顶
+ */
+ @NotNull(message = "是否封顶不能为空")
+ private Boolean cap;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorPreconditionDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorPreconditionDTO.java
new file mode 100644
index 0000000..c7efdc8
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorPreconditionDTO.java
@@ -0,0 +1,73 @@
+package cn.fw.morax.domain.dto.eval;
+
+import cn.fw.morax.domain.enums.IndicatorCodeTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ *
+ * 考评组指标条件
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupIndicatorPreconditionDTO {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 指标类型(1.指标,2,考评指标)
+ */
+ @NotNull(message = "指标类型不能为空")
+ private IndicatorCodeTypeEnum codeType;
+
+ /**
+ * 指标编码
+ */
+ @NotNull(message = "指标编码不能为空")
+ private String code;
+
+ /**
+ * 指标库名称
+ */
+ @NotNull(message = "指标库名称不能为空")
+ private String name;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 排序
+ */
+ @NotNull(message = "排序不能为空")
+ private Integer sort;
+
+ /**
+ * 条件阶梯
+ */
+ @Valid
+ private List ladders;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorPreconditionLaddersDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorPreconditionLaddersDTO.java
new file mode 100644
index 0000000..e3926bb
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupIndicatorPreconditionLaddersDTO.java
@@ -0,0 +1,56 @@
+package cn.fw.morax.domain.dto.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.common.utils.PublicUtil;
+import cn.fw.morax.domain.dto.AbstractLaddersDto;
+import cn.fw.morax.domain.dto.kpi.KpiGroupIndicatorLaddersDTO;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ *
+ * 考评组指标条件得分阶梯
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupIndicatorPreconditionLaddersDTO extends AbstractLaddersDto implements Comparable{
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 得分百分比
+ */
+ @NotNull(message = "得分百分比不能为空")
+ private BigDecimal scorePercent;
+
+ /**
+ * 正序排列
+ *
+ * @param other
+ * @return
+ */
+ @Override
+ public int compareTo(EvalGroupIndicatorPreconditionLaddersDTO other) {
+ //优先通过下限比较,上限与下限
+ if (PublicUtil.isEmpty(this.upper) || PublicUtil.isEmpty(other.getUpper())) {
+ return this.lower.compareTo(other.getLower());
+ } else {
+ return this.upper.compareTo(other.getUpper());
+ }
+ }
+
+ @Override
+ public String getBusinessName() {
+ return "指标项得分阶梯";
+ }
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupRewardDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupRewardDTO.java
new file mode 100644
index 0000000..c498b35
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupRewardDTO.java
@@ -0,0 +1,86 @@
+package cn.fw.morax.domain.dto.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.db.eval.EvalGroupRewardParam;
+import cn.fw.morax.domain.enums.EvalRewardCalMethodEnum;
+import cn.fw.morax.domain.enums.RankTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ *
+ * 考评奖惩
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupRewardDTO {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 考评奖惩指标名称
+ */
+ @NotBlank(message = "考评奖惩指标名称不能为空")
+ @Length(max = 255, message = "考评奖惩指标名称超出最大限制")
+ private String name;
+
+ /**
+ * 计算方式; 1: 排名正负激励 2:阶梯奖励(翻倍) 3:总金额X达成率占比 4:固定值X达成率 5: 固定值+超额部分追加奖励
+ */
+ @NotNull(message = "计算方式不能为空")
+ private EvalRewardCalMethodEnum calMethod;
+
+ /**
+ * 排名方式;1:排名序号 2:排名人数百分比
+ */
+ private RankTypeEnum rankType;
+
+ /**
+ * 金额
+ */
+// @NotNull(message = "金额不能为空")
+ private BigDecimal money;
+
+ /**
+ * 追加奖励 XX 元/台,超额奖励用
+ */
+ private BigDecimal extraMoney;
+
+ /**
+ * 提成参数
+ */
+ @Valid
+ private List commissionParams;
+
+ /**
+ * 台阶参数
+ */
+ @Valid
+ private List ladderParams;
+
+ /**
+ * 阶梯
+ */
+ @Valid
+ private List ladders;
+
+ /**
+ * 条件
+ */
+ @Valid
+ private List conds;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupRewardLaddersDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupRewardLaddersDTO.java
new file mode 100644
index 0000000..fe1d140
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupRewardLaddersDTO.java
@@ -0,0 +1,71 @@
+package cn.fw.morax.domain.dto.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.common.utils.PublicUtil;
+import cn.fw.morax.domain.dto.AbstractLaddersDto;
+import cn.fw.morax.domain.dto.kpi.KpiGroupIndicatorLaddersDTO;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ *
+ * 考评奖惩阶梯
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupRewardLaddersDTO extends AbstractLaddersDto implements Comparable{
+
+ private static final long serialVersionUID = 1L;
+
+
+// /**
+// * 阶梯下限;大于等于
+// */
+// private BigDecimal lower;
+//
+// /**
+// * 阶梯上限;小于; 无上限的情况值为 2<<15
+// */
+// private BigDecimal upper;
+
+ /**
+ * 金额
+ */
+ @NotNull(message = "金额不能为空")
+ private BigDecimal money;
+
+ /**
+ * 封顶金额/台
+ */
+ private BigDecimal capMoney;
+
+ /**
+ * 正序排列
+ *
+ * @param other
+ * @return
+ */
+ @Override
+ public int compareTo(EvalGroupRewardLaddersDTO other) {
+ if (PublicUtil.isEmpty(this.upper) || PublicUtil.isEmpty(other.getUpper())) {
+ return this.lower.compareTo(other.getLower());
+ } else {
+ return this.upper.compareTo(other.getUpper());
+ }
+ }
+
+ @Override
+ public String getBusinessName() {
+ return "奖励项阶梯";
+ }
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupRewardParamDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupRewardParamDTO.java
new file mode 100644
index 0000000..8552fda
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupRewardParamDTO.java
@@ -0,0 +1,75 @@
+package cn.fw.morax.domain.dto.eval;
+
+import cn.fw.morax.domain.enums.IndicatorCodeTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ *
+ * 考评奖惩参数
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupRewardParamDTO {
+
+ /**
+ * 编码类型(1.指标,2.考评指标)
+ */
+ @NotNull(message = "编码类型不能为空")
+ private IndicatorCodeTypeEnum codeType;
+
+ /**
+ * 项目编码
+ */
+ @NotNull(message = "项目编码不能为空")
+ private String code;
+
+ /**
+ * 项目名称
+ */
+ @NotNull(message = "项目名称不能为空")
+ private String name;
+
+ /**
+ * 占比
+ */
+ @NotNull(message = "占比不能为空")
+ private BigDecimal proportion;
+
+ /**
+ * 是否封顶
+ */
+ @NotNull(message = "是否封顶不能为空")
+ private Boolean cap;
+
+ /**
+ * 目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 金额
+ */
+ private BigDecimal money;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupRewardPreconditionDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupRewardPreconditionDTO.java
new file mode 100644
index 0000000..f08924d
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalGroupRewardPreconditionDTO.java
@@ -0,0 +1,78 @@
+package cn.fw.morax.domain.dto.eval;
+
+import cn.fw.morax.domain.enums.ConditionTypeEnum;
+import cn.fw.morax.domain.enums.IndicatorCodeTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ *
+ * 考评奖惩前置条件
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupRewardPreconditionDTO {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 条件值类型; 1:满足目标 2:满足排名率 3:金额
+ */
+ @NotNull(message = "条件值类型不能为空")
+ private ConditionTypeEnum condType;
+
+ /**
+ * 编码类型(1. 指标,2.考评指标)
+ */
+ @NotNull(message = "编码类型不能为空")
+ private IndicatorCodeTypeEnum codeType;
+
+ /**
+ * 项目编码
+ */
+ @NotNull(message = "项目编码不能为空")
+ private String code;
+
+ /**
+ * 项目名称
+ */
+ @NotNull(message = "项目名称不能为空")
+ private String name;
+
+ /**
+ * 目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 条件值
+ */
+ @NotNull(message = "条件值不能为空")
+ private BigDecimal condValue;
+
+ /**
+ * 排序
+ */
+ @NotNull(message = "排序不能为空")
+ private Integer sort;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/IndicatorAbleDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/IndicatorAbleDTO.java
index f04d16a..2d7deb4 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/IndicatorAbleDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/IndicatorAbleDTO.java
@@ -1,4 +1,4 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.kpi;
import cn.fw.morax.domain.enums.ApplicableRoleEnum;
import lombok.Data;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/IndicatorsDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/IndicatorsDTO.java
index 40269dd..821b481 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/IndicatorsDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/IndicatorsDTO.java
@@ -1,15 +1,19 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.kpi;
import cn.fw.morax.common.utils.PublicUtil;
import cn.fw.morax.domain.db.kpi.Indicators;
import cn.fw.morax.domain.enums.ApplicableRoleEnum;
-import cn.fw.morax.domain.enums.KpiTargetTypeEnum;
+import cn.fw.morax.domain.enums.ApplicableTypeEnum;
+import cn.fw.morax.domain.enums.DataTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
import java.util.List;
+import java.util.stream.Collectors;
/**
* @author : kurisu
@@ -47,10 +51,30 @@ public class IndicatorsDTO {
private ApplicableRoleEnum roleType;
/**
+ * 数据类型;1:台数 2:百分比 3:金额
+ */
+ @NotNull(message = "数据类型不能为空")
+ private DataTypeEnum dataType;
+
+ /**
* 绩效目标值类型; 1:无 2:百分比 3:金额
*/
@NotNull(message = "绩效目标值类型不能为空")
- private KpiTargetTypeEnum targetType;
+ private TargetTypeEnum targetType;
+
+ /**
+ * 适用范围类型; 1. 绩效组, 2.薪酬组, 3. 考评组
+ */
+ @NotNull(message = "适用范围类型不能为空")
+ @Size(min = 1, message = "适用范围不能为空")
+ private List applyTypes;
+
+ /**
+ * 内部指标
+ * 0:否 1:是
+ */
+// @NotNull(message = "内部指标不能为空")
+// private Boolean innerIndicator;
/**
* 适用角色编码
@@ -67,6 +91,12 @@ public class IndicatorsDTO {
private List roleNames;
/**
+ * 报表路径
+ */
+ @Length(max = 255, message = "报表路径超出最大长度限制")
+ private String reportPath;
+
+ /**
* 转换为db对象
* @return
*/
@@ -75,8 +105,10 @@ public class IndicatorsDTO {
.indicatorName(this.getIndicatorName())
.enable(Boolean.FALSE)
.roleType(this.getRoleType())
+ .dataType(this.getDataType())
.targetType(this.targetType)
.sysId(this.getSysId())
+// .innerIndicator(this.innerIndicator)
.sysName(this.getSysName())
.build();
if (ApplicableRoleEnum.PORTION.equals(this.getRoleType())) {
@@ -90,6 +122,8 @@ public class IndicatorsDTO {
if (PublicUtil.isEmpty(this.getId())) {
indicators.setId(this.getId());
}
+ List applyTypes = this.applyTypes.stream().map(applyType -> applyType.getValue()).collect(Collectors.toList());
+ indicators.setApplyTypes(applyTypes);
return indicators;
}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiGroupDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupDTO.java
index 4ae3026..81dccc8 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiGroupDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupDTO.java
@@ -1,4 +1,4 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.kpi;
import cn.fw.common.web.annotation.LoginContextField;
import cn.fw.morax.domain.enums.EffectMonthEnum;
@@ -12,7 +12,6 @@ import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;
import java.time.LocalDate;
-import java.time.YearMonth;
import java.util.List;
/**
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiGroupIndicatorDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorDTO.java
index 27d6a0b..4f8315e 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiGroupIndicatorDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorDTO.java
@@ -1,6 +1,5 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.kpi;
-import cn.fw.morax.domain.enums.KpiTargetTypeEnum;
import cn.fw.morax.domain.enums.ScoreWayEnum;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
@@ -8,7 +7,7 @@ import org.hibernate.validator.constraints.Length;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
-import java.math.BigDecimal;
+import javax.validation.constraints.Size;
import java.util.List;
/**
@@ -20,24 +19,18 @@ import java.util.List;
public class KpiGroupIndicatorDTO {
/**
- * 指标库id
- */
- @NotNull(message = "绩效组指标项不能为空")
- private Long indicatorId;
-
- /**
* 指标库名称
*/
@NotBlank(message = "指标名称不能为空")
@Length(max = 255, message = "指标名称超出最大长度限制")
- private String indicatorName;
+ private String name;
/**
* 指标库名称
*/
- @NotBlank(message = "指标编码不能为空")
- @Length(max = 32, message = "指标编码超出最大长度限制")
- private String indicatorCode;
+ @NotBlank(message = "指标名称不能为空")
+ @Length(max = 255, message = "指标名称超出最大长度限制")
+ private String paramAlias;
/**
* 基础绩效分
@@ -52,14 +45,25 @@ public class KpiGroupIndicatorDTO {
private ScoreWayEnum scoreWay;
/**
- * 绩效目标值类型; 1:无 2:百分比 3:金额
+ * 台阶参数
*/
- @NotNull(message = "绩效目标值类型不能为空")
- private KpiTargetTypeEnum targetType;
+ @Valid
+ private List ladderParams;
+
/**
- * 绩效目标值
+ * 提成参数(非台阶使用)
*/
- private BigDecimal targetValue;
+// @NotNull(message = "提成参数不能为空")
+// @Size(min = 1, message = "提成参数不能为空")
+ @Valid
+ private List commissionParams;
+
+ /**
+ * 前置条件配置
+ */
+ @Valid
+ private List conds;
+
/**
* 得分阶梯
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiGroupIndicatorLaddersDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorLaddersDTO.java
index 69911bb..bfb9b2a 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiGroupIndicatorLaddersDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorLaddersDTO.java
@@ -1,6 +1,7 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.kpi;
import cn.fw.morax.common.utils.PublicUtil;
+import cn.fw.morax.domain.dto.AbstractLaddersDto;
import lombok.Data;
import javax.validation.constraints.Min;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorParamDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorParamDTO.java
new file mode 100644
index 0000000..64626f6
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorParamDTO.java
@@ -0,0 +1,64 @@
+package cn.fw.morax.domain.dto.kpi;
+
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * @author jiangchao
+ * @des:
+ * @date 2022/12/5 9:29
+ */
+@Data
+public class KpiGroupIndicatorParamDTO {
+
+ /**
+ * 指标库id
+ */
+// @NotNull(message = "绩效组指标项不能为空")
+// private Long indicatorId;
+
+ /**
+ * 指标编码
+ */
+ @NotNull(message = "指标编码不能为空")
+ private String indicatorCode;
+
+ /**
+ * 指标库名称
+ */
+ @NotNull(message = "指标库名称不能为空")
+ private String indicatorName;
+
+ /**
+ * 占比
+ */
+ @NotNull(message = "占比不能为空")
+ private BigDecimal proportion;
+
+ /**
+ * 是否封顶
+ */
+ @NotNull(message = "是否封顶不能为空")
+ private Boolean cap;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ @NotNull(message = "绩效目标值类型不能为空")
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorPreconditionDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorPreconditionDTO.java
new file mode 100644
index 0000000..39048d1
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorPreconditionDTO.java
@@ -0,0 +1,71 @@
+package cn.fw.morax.domain.dto.kpi;
+
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ *
+ * 绩效组指标条件
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class KpiGroupIndicatorPreconditionDTO {
+
+ /**
+ * 指标库id
+ */
+// @NotNull(message = "绩效组指标项不能为空")
+// private Long indicatorId;
+
+ /**
+ * 指标编码
+ */
+ @NotNull(message = "目标计算类型不能为空")
+ private String indicatorCode;
+
+ /**
+ * 指标库名称
+ */
+ @NotNull(message = "目标计算类型不能为空")
+ private String indicatorName;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ @NotNull(message = "绩效目标值类型不能为空")
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 排序
+ */
+ @NotNull(message = "排序值不能为空")
+ private Integer sort;
+
+ /**
+ * 前置条件台阶
+ */
+ private List condLadders;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorPreconditionLaddersDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorPreconditionLaddersDTO.java
new file mode 100644
index 0000000..b2ba9ec
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorPreconditionLaddersDTO.java
@@ -0,0 +1,65 @@
+package cn.fw.morax.domain.dto.kpi;
+
+import cn.fw.morax.common.utils.PublicUtil;
+import cn.fw.morax.domain.dto.AbstractLaddersDto;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ *
+ * 绩效组指标条件得分阶梯
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class KpiGroupIndicatorPreconditionLaddersDTO extends AbstractLaddersDto
+ implements Comparable{
+
+ private static final long serialVersionUID = 1L;
+
+// /**
+// * 绩效组指标条件id
+// */
+// private Long kpiGroupIndicatorCondId;
+
+// /**
+// * 阶梯下限;大于等于
+// */
+// private BigDecimal lower;
+//
+// /**
+// * 阶梯上限;小于; 无上限的情况值为 2<<15
+// */
+// private BigDecimal upper;
+
+ /**
+ * 得分百分比
+ */
+ @NotNull(message = "得分百分比不能为空")
+ private BigDecimal scorePercent;
+
+ /**
+ * 正序排列
+ *
+ * @param other
+ * @return
+ */
+ @Override
+ public int compareTo(KpiGroupIndicatorPreconditionLaddersDTO other) {
+ //优先通过下限比较,上限与下限
+ if (PublicUtil.isEmpty(this.upper) || PublicUtil.isEmpty(other.getUpper())) {
+ return this.lower.compareTo(other.getLower());
+ } else {
+ return this.upper.compareTo(other.getUpper());
+ }
+ }
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorRankDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorRankDTO.java
new file mode 100644
index 0000000..c087d38
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupIndicatorRankDTO.java
@@ -0,0 +1,56 @@
+package cn.fw.morax.domain.dto.kpi;
+
+import cn.fw.common.web.annotation.LoginContextField;
+import cn.fw.morax.domain.enums.StarEvaluationEnum;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.hibernate.validator.constraints.Length;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.math.BigDecimal;
+import java.time.YearMonth;
+import java.util.List;
+
+/**
+ *
+ * 绩效组排名配置
+ *
+ *
+ * @author jiangchao
+ * @since 2022-09-26
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class KpiGroupIndicatorRankDTO {
+
+ /**
+ * 绩效组id
+ */
+ @NotNull(message = "绩效组id不能为空")
+ private Long kpiGroupId;
+
+ /**
+ * 指标参数id
+ */
+ private Long kpiGroupIndicatorParamId;
+
+ /**
+ * 指标条件id
+ */
+ private Long kpiGroupIndicatorPreconditionId;
+
+ /**
+ * 月份
+ */
+ @NotNull(message = "月份不能为空")
+ private YearMonth monthly;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiGroupNoticeDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupNoticeDTO.java
index 4f7a6c6..d31bb3a 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiGroupNoticeDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupNoticeDTO.java
@@ -1,4 +1,4 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.kpi;
import cn.fw.common.web.annotation.LoginContextField;
import cn.fw.morax.domain.enums.EffectMonthEnum;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiGroupRankDto.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupRankDto.java
index ee8114b..7de8d9f 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiGroupRankDto.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupRankDto.java
@@ -1,10 +1,7 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.kpi;
-import cn.fw.common.data.entity.BaseAuditableEntity;
-import cn.fw.common.data.mybatis.handler.StringListTypeHandler;
import cn.fw.common.web.annotation.LoginContextField;
import cn.fw.morax.domain.enums.StarEvaluationEnum;
-import com.baomidou.mybatisplus.annotation.TableField;
import lombok.*;
import org.hibernate.validator.constraints.Length;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiGroupRankStarLaddersDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupRankStarLaddersDTO.java
index 1c86476..725b757 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiGroupRankStarLaddersDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiGroupRankStarLaddersDTO.java
@@ -1,5 +1,6 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.kpi;
+import cn.fw.morax.domain.dto.AbstractLaddersDto;
import cn.fw.morax.domain.enums.StarLevelEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiStarLaddersDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiStarLaddersDTO.java
index 58cb92b..ede2475 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiStarLaddersDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiStarLaddersDTO.java
@@ -1,5 +1,6 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.kpi;
+import cn.fw.morax.domain.dto.AbstractLaddersDto;
import cn.fw.morax.domain.enums.StarLevelEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiStarRuleDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiStarRuleDTO.java
index ebfea07..f42107f 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiStarRuleDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiStarRuleDTO.java
@@ -1,4 +1,4 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.kpi;
import cn.fw.common.web.annotation.LoginContextField;
import lombok.Data;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiStarSpecialRuleDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiStarSpecialRuleDTO.java
index d1a0645..00aa1d3 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/KpiStarSpecialRuleDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/KpiStarSpecialRuleDTO.java
@@ -1,4 +1,4 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.kpi;
import cn.fw.common.data.mybatis.handler.StringListTypeHandler;
import cn.fw.common.web.annotation.LoginContextField;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/UserIndicatorDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/UserIndicatorDTO.java
new file mode 100644
index 0000000..e9189b6
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/kpi/UserIndicatorDTO.java
@@ -0,0 +1,64 @@
+package cn.fw.morax.domain.dto.kpi;
+
+import cn.fw.common.validator.EnumValue;
+import cn.fw.morax.domain.enums.IndicatorValueTypeEnum;
+import lombok.Data;
+import org.hibernate.validator.constraints.ScriptAssert;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Past;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 人员指标值
+ *
+ * @author : kurisu
+ * @version : 2.0
+ * @className : UserIndicatorDTO
+ * @description : 人员指标值
+ * @date : 2022-12-22 14:42
+ */
+@Data
+@ScriptAssert.List({
+ @ScriptAssert(lang = "javascript", script = "_this.checkValueType()", message = "只支持简单类型的指标"),
+})
+public class UserIndicatorDTO {
+ /**
+ * 指标编码
+ */
+ @NotEmpty(message = "指标编码不能为空")
+ private String indicatorCode;
+ /**
+ * 人员id
+ */
+ @NotNull(message = "人员id不能为空")
+ private Long userId;
+ /**
+ * 指标值类型
+ */
+ @NotNull(message = "指标值类型不能为空")
+ @EnumValue(enumClass = IndicatorValueTypeEnum.class, message = "指标值枚举值不正确")
+ private Integer valueType;
+ /**
+ * 指标对应值
+ */
+ @NotNull(message = "指标值不能为空")
+ private BigDecimal value;
+ /**
+ * 数据日期
+ */
+ @NotNull(message = "数据日期不能为空")
+ @Past(message = "数据日期必须为过去的时间")
+ private Date dataDate;
+ /**
+ * 集团id
+ */
+ @NotNull(message = "集团id不能为空")
+ private Long groupId;
+
+ public boolean checkValueType() {
+ return IndicatorValueTypeEnum.CONDITION.getValue().equals(valueType) || IndicatorValueTypeEnum.WORK_AGE.getValue().equals(valueType);
+ }
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/CompensationStaffQueryDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/CompensationStaffQueryDTO.java
new file mode 100644
index 0000000..e293a29
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/CompensationStaffQueryDTO.java
@@ -0,0 +1,46 @@
+package cn.fw.morax.domain.dto.query;
+
+import cn.fw.common.web.annotation.LoginContextField;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.util.List;
+
+/**
+ * 岗位最低收入 适用人员
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class CompensationStaffQueryDTO {
+
+ /**
+ * 门店id
+ */
+ @NotNull(message = "门店id不能为空")
+ @Size(min = 1, message = "适用门店id不能为空")
+ private List shopIds;
+
+ /**
+ * 岗位id
+ */
+ @NotNull(message = "岗位id不能为空")
+ private Long postId;
+
+ /**
+ * 员工名称
+ */
+ private String staffName;
+
+ /**
+ * 集团id
+ */
+ @LoginContextField(LoginContextField.Name.GROUP_ID)
+ private Long groupId;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/EvalIndicatorQueryDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/EvalIndicatorQueryDTO.java
new file mode 100644
index 0000000..ff20ae3
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/EvalIndicatorQueryDTO.java
@@ -0,0 +1,46 @@
+package cn.fw.morax.domain.dto.query;
+
+import cn.fw.common.page.BasePageQuery;
+import cn.fw.common.validator.EnumValue;
+import cn.fw.common.web.annotation.LoginContextField;
+import cn.fw.morax.domain.enums.ApplicableRoleEnum;
+import cn.fw.morax.domain.enums.SettingStatusEnum;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class EvalIndicatorQueryDTO extends BasePageQuery {
+
+ /**
+ * 角色编码
+ */
+ private String roleCode;
+ /**
+ * 归属系统id
+ */
+ private Long sysId;
+
+ /**
+ * 启用/禁用;
+ * 0:禁用 1:启用
+ */
+ private Boolean enable;
+
+ /**
+ * 指标名称或编码
+ */
+ private String keyword;
+
+ /**
+ * 全部角色类型
+ */
+ private List allRoleTypes;
+
+ /**
+ * 集团id
+ */
+ @LoginContextField(LoginContextField.Name.GROUP_ID)
+ private Long groupId;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/IncomeCompensationQueryDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/IncomeCompensationQueryDTO.java
new file mode 100644
index 0000000..d1580cf
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/IncomeCompensationQueryDTO.java
@@ -0,0 +1,29 @@
+package cn.fw.morax.domain.dto.query;
+
+import cn.fw.common.page.BasePageQuery;
+import cn.fw.common.validator.EnumValue;
+import cn.fw.common.web.annotation.LoginContextField;
+import cn.fw.morax.domain.enums.SettingStatusEnum;
+import lombok.Data;
+
+@Data
+public class IncomeCompensationQueryDTO extends BasePageQuery {
+
+ /**
+ * 状态;1:审批中 2:待生效 3:生效中 4:已失效
+ */
+ @EnumValue(enumClass = SettingStatusEnum.class, valueMethod = "getValue", message = "薪酬状态枚举值不正确")
+ private Integer status;
+
+ /**
+ * 岗位id
+ */
+ private Long postId;
+
+ /**
+ * 集团id
+ */
+ @LoginContextField(LoginContextField.Name.GROUP_ID)
+ private Long groupId;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/IndicatorPostQueryDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/IndicatorPostQueryDTO.java
index 0a0f136..8a5e926 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/IndicatorPostQueryDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/IndicatorPostQueryDTO.java
@@ -3,6 +3,7 @@ package cn.fw.morax.domain.dto.query;
import cn.fw.common.page.BasePageQuery;
import cn.fw.common.web.annotation.LoginContextField;
import cn.fw.morax.domain.enums.ApplicableRoleEnum;
+import cn.fw.morax.domain.enums.ApplicableTypeEnum;
import lombok.Data;
import java.util.List;
@@ -41,6 +42,11 @@ public class IndicatorPostQueryDTO {
*/
private ApplicableRoleEnum managerRoleType;
+ /**
+ * 适用范围类型; 1. 绩效组, 2.薪酬组, 3. 考评组
+ */
+ private ApplicableTypeEnum applicableType;
+
public IndicatorPostQueryDTO() {
}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/KpiGroupRepeatQueryDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/KpiGroupRepeatQueryDTO.java
index f0c4ec1..da38688 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/KpiGroupRepeatQueryDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/KpiGroupRepeatQueryDTO.java
@@ -1,26 +1,15 @@
package cn.fw.morax.domain.dto.query;
-import cn.fw.common.web.annotation.LoginContextField;
import cn.fw.morax.common.utils.PublicUtil;
import cn.fw.morax.domain.db.kpi.KpiGroup;
-import cn.fw.morax.domain.dto.KpiGroupDTO;
-import cn.fw.morax.domain.dto.KpiGroupIndicatorDTO;
-import cn.fw.morax.domain.dto.KpiStarLaddersDTO;
+import cn.fw.morax.domain.dto.kpi.KpiGroupDTO;
import cn.fw.morax.domain.enums.SettingStatusEnum;
-import cn.fw.morax.domain.enums.StarEvaluationEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.hibernate.validator.constraints.Length;
-import javax.validation.Valid;
-import javax.validation.constraints.Future;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
import java.time.LocalDate;
-import java.time.YearMonth;
import java.util.ArrayList;
import java.util.List;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/SalaryGroupRepeatQueryDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/SalaryGroupRepeatQueryDTO.java
index d06676c..3d484bc 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/SalaryGroupRepeatQueryDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/SalaryGroupRepeatQueryDTO.java
@@ -1,8 +1,6 @@
package cn.fw.morax.domain.dto.query;
-import cn.fw.morax.common.utils.PublicUtil;
import cn.fw.morax.domain.db.salary.SalaryGroup;
-import cn.fw.morax.domain.dto.SalaryGroupDTO;
import cn.fw.morax.domain.enums.SettingStatusEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/SalaryPoolQueryDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/SalaryPoolQueryDTO.java
index 5c23244..c41e4a5 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/SalaryPoolQueryDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/SalaryPoolQueryDTO.java
@@ -38,14 +38,10 @@ public class SalaryPoolQueryDTO extends BasePageQuery {
private Integer startLevel;
/**
* 月度
- *
- * @ignore
*/
private YearMonth monthly;
/**
- * 月度
- *
- * @ignore
+ * 月度(报表使用)
*/
private YearMonth yearMonth;
/**
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryExtraDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryExtraDTO.java
index 2df0986..447b84c 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryExtraDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryExtraDTO.java
@@ -1,4 +1,4 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.salary;
import cn.fw.morax.domain.enums.ExtraSalaryTypeEnum;
import lombok.Data;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryGeneralSettinDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryGeneralSettinDTO.java
index 797ecdb..7c5e728 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryGeneralSettinDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryGeneralSettinDTO.java
@@ -1,4 +1,4 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.salary;
import cn.fw.common.web.annotation.LoginContextField;
import lombok.Data;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryGroupDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryGroupDTO.java
index 1d5a01f..bd4624b 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryGroupDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryGroupDTO.java
@@ -1,12 +1,8 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.salary;
import cn.fw.common.web.annotation.LoginContextField;
import cn.fw.morax.domain.enums.EffectMonthEnum;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.datatype.jsr310.deser.YearMonthDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.YearMonthSerializer;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
@@ -16,7 +12,6 @@ import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDate;
-import java.time.YearMonth;
import java.util.List;
/**
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryGroupProjectDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryGroupProjectDTO.java
index ecfae85..225f509 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryGroupProjectDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryGroupProjectDTO.java
@@ -1,5 +1,6 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.salary;
+import cn.fw.morax.domain.enums.DataTypeEnum;
import cn.fw.morax.domain.enums.SalaryCalMethodEnum;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
@@ -8,6 +9,7 @@ import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
import java.util.List;
/**
@@ -18,29 +20,37 @@ import java.util.List;
@Data
public class SalaryGroupProjectDTO {
/**
- * 薪酬项目id
+ * 名称
*/
- @NotNull(message = "薪酬项目id不能为空")
- private Long salaryProjectId;
+ @NotBlank(message = "名称不能为空")
+ private String name;
/**
- * 薪酬项目编码
+ * 计算方式;1: 星级 2:固定金额 3:阶梯提成 4:车系提成 99:动态
*/
- @NotBlank(message = "薪酬项目编码不能为空")
- @Length(max = 32, message = "薪酬项目编码超出最大长度限制")
- private String salaryProjectCode;
+ @NotNull(message = "计算方式不能为空")
+ private SalaryCalMethodEnum calMethod;
/**
- * 薪酬项目名称
+ * 数据类型;1:数量 2:百分比 3:金额
*/
- @NotBlank(message = "薪酬项目名称不能为空")
- private String salaryProjectName;
+ @NotNull(message = "数据类型不能为空")
+ private DataTypeEnum laddersType;
/**
- * 计算方式;1: 星级 2:固定金额 3:阶梯(单) 4:按量 5: 固定提成 6:阶梯(总) 7:动态
+ * 台阶参数别名
*/
- @NotNull(message = "计算方式不能为空")
- private SalaryCalMethodEnum calMethod;
+ public String ladderParamAlias;
+
+ /**
+ * 提成参数别名
+ */
+ public String commissionParamAlias;
+
+ /**
+ * 前置条件别名
+ */
+ public String preconditionAlias;
/**
* 薪酬项配置
@@ -48,4 +58,25 @@ public class SalaryGroupProjectDTO {
@NotEmpty(message = "薪酬项配置不能为空")
@Valid
private List settings;
+
+ /**
+ * 台阶参数
+ */
+ @Valid
+ private List ladderParams;
+
+ /**
+ * 提成参数
+ */
+// @NotNull(message = "提成参数不能为空")
+// @Size(min = 1, message = "提成参数不能为空")
+ @Valid
+ private List commissionParams;
+
+ /**
+ * 条件
+ */
+ @Valid
+ private List conds;
+
}
\ No newline at end of file
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryGroupProjectParamDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryGroupProjectParamDTO.java
new file mode 100644
index 0000000..3ff6e40
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryGroupProjectParamDTO.java
@@ -0,0 +1,83 @@
+package cn.fw.morax.domain.dto.salary;
+
+import cn.fw.morax.domain.enums.ParamTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ *
+ * 薪酬组薪酬项目参数
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SalaryGroupProjectParamDTO {
+
+ private static final long serialVersionUID = 1L;
+
+
+ /**
+ * 参数类型(1.台阶,2,提成)
+ */
+// @NotNull(message = "参数类型不能为空")
+// private ParamTypeEnum paramType;
+
+ /**
+ * 指标编码
+ */
+ @NotBlank(message = "指标编码不能为空")
+ private String indicatorCode;
+
+ /**
+ * 指标库名称
+ */
+ @NotBlank(message = "指标名称不能为空")
+ private String indicatorName;
+
+ /**
+ * 目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ @NotNull(message = "绩效目标值类型不能为空")
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 占比
+ */
+ @NotNull(message = "占比不能为空")
+ private BigDecimal proportion;
+
+ /**
+ * 是否封顶
+ */
+ @NotNull(message = "是否封顶不能为空")
+ private Boolean cap;
+
+ /**
+ * 排序
+ */
+ @NotNull(message = "排序不能为空")
+ private Integer sort;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryGroupProjectPreconditionDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryGroupProjectPreconditionDTO.java
new file mode 100644
index 0000000..2d4c94b
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryGroupProjectPreconditionDTO.java
@@ -0,0 +1,67 @@
+package cn.fw.morax.domain.dto.salary;
+
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ *
+ * 薪酬组薪酬项目前置条件
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SalaryGroupProjectPreconditionDTO {
+
+ /**
+ * 指标编码
+ */
+ @NotBlank(message = "指标编码不能为空")
+ private String indicatorCode;
+
+ /**
+ * 指标库名称
+ */
+ @NotBlank(message = "指标名称不能为空")
+ private String indicatorName;
+
+ /**
+ * 目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ @NotNull(message = "绩效目标值类型不能为空")
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 条件值
+ */
+ @NotNull(message = "条件值不能为空")
+ private BigDecimal condValue;
+
+ /**
+ * 排序
+ */
+ @NotNull(message = "排序值不能为空")
+ private Integer sort;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryGroupProjectSettinDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryGroupProjectSettinDTO.java
index fd9ab62..c56d69b 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryGroupProjectSettinDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryGroupProjectSettinDTO.java
@@ -1,4 +1,4 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.salary;
import lombok.Data;
@@ -19,13 +19,13 @@ public class SalaryGroupProjectSettinDTO {
* 星级则是对应星级枚举
* 阶梯等则是对应指标id
*/
- @NotNull(message = "阶梯key不能为空")
+// @NotNull(message = "阶梯key不能为空")
private Long stairKey;
/**
* 阶梯key对应描述 同上
*/
- @NotBlank(message = "阶梯对应描述不能为空")
+// @NotBlank(message = "阶梯对应描述不能为空")
private String stairKeyDesc;
/**
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryPayNoticeDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryPayNoticeDTO.java
index caed36c..17b6a9c 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryPayNoticeDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryPayNoticeDTO.java
@@ -1,4 +1,4 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.salary;
import cn.fw.common.web.annotation.LoginContextField;
import cn.fw.morax.domain.enums.EffectMonthEnum;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryProjectAbleDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryProjectAbleDTO.java
index 723fedf..5a2421b 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryProjectAbleDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryProjectAbleDTO.java
@@ -1,4 +1,4 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.salary;
import lombok.Data;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryProjectDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryProjectDTO.java
index 30f0e7f..8f133a0 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/SalaryProjectDTO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/salary/SalaryProjectDTO.java
@@ -1,4 +1,4 @@
-package cn.fw.morax.domain.dto;
+package cn.fw.morax.domain.dto.salary;
import cn.fw.morax.domain.enums.ApplicableRoleEnum;
import lombok.Data;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ApplicableTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ApplicableTypeEnum.java
new file mode 100644
index 0000000..9199149
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ApplicableTypeEnum.java
@@ -0,0 +1,75 @@
+package cn.fw.morax.domain.enums;
+
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 适用范围类型
+ *
+ * @author kurisu
+ */
+public enum ApplicableTypeEnum implements IEnum {
+ /**
+ * 适用范围类型; 1. 绩效组, 2.薪酬组, 3. 考评组
+ */
+ KPI(1, "绩效组"),
+ SALARY(2, "薪酬组"),
+ EVAL(3, "考评组"),
+ ;
+
+ /**
+ * 值
+ */
+ private final Integer value;
+ /**
+ * 名称
+ */
+ @Getter
+ private final String name;
+
+ ApplicableTypeEnum(final Integer value, final String name) {
+ this.value = value;
+ this.name = name;
+ }
+
+ /**
+ * 根据枚举值获取枚举对象
+ */
+ @JsonCreator
+ public static ApplicableTypeEnum ofValue(final Integer value) {
+ for (final ApplicableTypeEnum _enum : ApplicableTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取值
+ *
+ * @return 值
+ */
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * 获取描述
+ *
+ * @return 值
+ */
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final ApplicableTypeEnum _enum : ApplicableTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
+ }
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ApprovalTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ApprovalTypeEnum.java
index fe2472d..4a86852 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ApprovalTypeEnum.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ApprovalTypeEnum.java
@@ -13,11 +13,13 @@ import lombok.Getter;
*/
public enum ApprovalTypeEnum implements IEnum {
/**
- * 审批业务类型;1:绩效配置 2:薪酬配置 3:绩效星级申诉
+ * 审批业务类型;1:绩效配置 2:薪酬配置 3:绩效星级申诉 4:岗位最低收入补偿 5:考评
*/
KPI(1, "绩效配置"),
SALARY(2, "薪酬配置"),
COMPLAIN(3, "绩效星级申诉"),
+ INCOME_COMPENSATION(4, "岗位最低收入补偿"),
+ EVAL(5, "考评"),
;
/**
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ConditionTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ConditionTypeEnum.java
new file mode 100644
index 0000000..dd26b04
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ConditionTypeEnum.java
@@ -0,0 +1,75 @@
+package cn.fw.morax.domain.enums;
+
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 指标参数类型
+ *
+ * @author kurisu
+ */
+public enum ConditionTypeEnum implements IEnum {
+ /**
+ * 条件值类型; 1:满足目标 2:满足排名率 3:金额
+ */
+ TARGET(1, "满足目标"),
+ RANK(2, "满足排名率"),
+ MONEY(3, "金额"),
+ ;
+
+ /**
+ * 值
+ */
+ private final Integer value;
+ /**
+ * 名称
+ */
+ @Getter
+ private final String name;
+
+ ConditionTypeEnum(final Integer value, final String name) {
+ this.value = value;
+ this.name = name;
+ }
+
+ /**
+ * 根据枚举值获取枚举对象
+ */
+ @JsonCreator
+ public static ConditionTypeEnum ofValue(final Integer value) {
+ for (final ConditionTypeEnum _enum : ConditionTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取值
+ *
+ * @return 值
+ */
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * 获取描述
+ *
+ * @return 值
+ */
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final ConditionTypeEnum _enum : ConditionTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
+ }
+}
diff --git a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/kpi/TargetTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/DataTypeEnum.java
index 8ef93df..9c336fc 100644
--- a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/kpi/TargetTypeEnum.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/DataTypeEnum.java
@@ -1,29 +1,21 @@
-package cn.fw.morax.sdk.dto.kpi;
+package cn.fw.morax.domain.enums;
+import com.baomidou.mybatisplus.core.enums.IEnum;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;
/**
- * @author : kurisu
- * @version : 1.0
- * @className : SalaryValueEnum
- * @description : 绩效指标目标类型
- * @date : 2022-04-24 14:37
+ * 数据类型
+ *
+ * @author kurisu
*/
-public enum TargetTypeEnum {
-
- /**
- * 无
- */
- NO(1, "无"),
+public enum DataTypeEnum implements IEnum {
/**
- * 百分比
+ * 数据类型;1:数量 2:百分比 3:金额
*/
+ QUANTITY(1, "台数"),
RATIO(2, "百分比"),
- /**
- * 金额
- */
MONEY(3, "金额"),
;
@@ -37,7 +29,7 @@ public enum TargetTypeEnum {
@Getter
private final String name;
- TargetTypeEnum(final Integer value, final String name) {
+ DataTypeEnum(final Integer value, final String name) {
this.value = value;
this.name = name;
}
@@ -46,37 +38,38 @@ public enum TargetTypeEnum {
* 根据枚举值获取枚举对象
*/
@JsonCreator
- public static TargetTypeEnum ofValue(final Integer value) {
- for (final TargetTypeEnum salaryValueEnum : TargetTypeEnum.values()) {
- if (salaryValueEnum.value.equals(value)) {
- return salaryValueEnum;
+ public static DataTypeEnum ofValue(final Integer value) {
+ for (final DataTypeEnum _enum : DataTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
}
}
return null;
}
/**
- * 获取描述
+ * 获取值
*
* @return 值
*/
- @JsonCreator
- public static String getNameByVale(final Integer value) {
- for (final TargetTypeEnum salaryValueEnum : TargetTypeEnum.values()) {
- if (salaryValueEnum.value.equals(value)) {
- return salaryValueEnum.getName();
- }
- }
- return "";
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
}
/**
- * 获取值
+ * 获取描述
*
* @return 值
*/
- @JsonValue
- public Integer getValue() {
- return value;
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final DataTypeEnum _enum : DataTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
}
}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/EvalRewardCalMethodEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/EvalRewardCalMethodEnum.java
new file mode 100644
index 0000000..e48091c
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/EvalRewardCalMethodEnum.java
@@ -0,0 +1,77 @@
+package cn.fw.morax.domain.enums;
+
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 考评周期类型
+ *
+ * @author kurisu
+ */
+public enum EvalRewardCalMethodEnum implements IEnum {
+ /**
+ * 计算方式;1: 排名正负激励 2:阶梯奖励(翻倍) 3:总金额X达成率占比 4:固定值X达成率 5: 固定值+超额部分追加奖励
+ */
+ RANK(1, "排名正负激励"),
+ LADDER_DOUBLE(2, "阶梯奖励(翻倍)"),
+ TOTAL_PROPORTION(3, "总金额X达成率占比"),
+ COMPLETE_RATIO(3, "固定值X达成率"),
+ ADDITIONAL_REWARDS(3, "固定值+超额部分追加奖励"),
+ ;
+
+ /**
+ * 值
+ */
+ private final Integer value;
+ /**
+ * 名称
+ */
+ @Getter
+ private final String name;
+
+ EvalRewardCalMethodEnum(final Integer value, final String name) {
+ this.value = value;
+ this.name = name;
+ }
+
+ /**
+ * 根据枚举值获取枚举对象
+ */
+ @JsonCreator
+ public static EvalRewardCalMethodEnum ofValue(final Integer value) {
+ for (final EvalRewardCalMethodEnum _enum : EvalRewardCalMethodEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取值
+ *
+ * @return 值
+ */
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * 获取描述
+ *
+ * @return 值
+ */
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final EvalRewardCalMethodEnum _enum : EvalRewardCalMethodEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
+ }
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/EvalRuleTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/EvalRuleTypeEnum.java
new file mode 100644
index 0000000..2018e07
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/EvalRuleTypeEnum.java
@@ -0,0 +1,76 @@
+package cn.fw.morax.domain.enums;
+
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 考评周期类型
+ *
+ * @author kurisu
+ */
+public enum EvalRuleTypeEnum implements IEnum {
+ /**
+ * 频率类型;1:按滚动天 2:按星期 3:按月指定日期 4:按滚动月
+ */
+ DAY(1, "按滚动天"),
+ WEEK_DAY(2, "按星期"),
+ MONTH_FIX_DAY(3, "按月指定日期"),
+ MONTH(3, "按滚动月"),
+ ;
+
+ /**
+ * 值
+ */
+ private final Integer value;
+ /**
+ * 名称
+ */
+ @Getter
+ private final String name;
+
+ EvalRuleTypeEnum(final Integer value, final String name) {
+ this.value = value;
+ this.name = name;
+ }
+
+ /**
+ * 根据枚举值获取枚举对象
+ */
+ @JsonCreator
+ public static EvalRuleTypeEnum ofValue(final Integer value) {
+ for (final EvalRuleTypeEnum _enum : EvalRuleTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取值
+ *
+ * @return 值
+ */
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * 获取描述
+ *
+ * @return 值
+ */
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final EvalRuleTypeEnum _enum : EvalRuleTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
+ }
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/EvalScopeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/EvalScopeEnum.java
new file mode 100644
index 0000000..e8c7dc7
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/EvalScopeEnum.java
@@ -0,0 +1,74 @@
+package cn.fw.morax.domain.enums;
+
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 考评范围
+ *
+ * @author kurisu
+ */
+public enum EvalScopeEnum implements IEnum {
+ /**
+ * 考评范围; 1:门店考评 2:人员考评
+ */
+ SHOP(1, "门店考评"),
+ STAFF(2, "人员考评"),
+ ;
+
+ /**
+ * 值
+ */
+ private final Integer value;
+ /**
+ * 名称
+ */
+ @Getter
+ private final String name;
+
+ EvalScopeEnum(final Integer value, final String name) {
+ this.value = value;
+ this.name = name;
+ }
+
+ /**
+ * 根据枚举值获取枚举对象
+ */
+ @JsonCreator
+ public static EvalScopeEnum ofValue(final Integer value) {
+ for (final EvalScopeEnum _enum : EvalScopeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取值
+ *
+ * @return 值
+ */
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * 获取描述
+ *
+ * @return 值
+ */
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final EvalScopeEnum _enum : EvalScopeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
+ }
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/EvalTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/EvalTypeEnum.java
new file mode 100644
index 0000000..8530f77
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/EvalTypeEnum.java
@@ -0,0 +1,74 @@
+package cn.fw.morax.domain.enums;
+
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 考评类型
+ *
+ * @author kurisu
+ */
+public enum EvalTypeEnum implements IEnum {
+ /**
+ * 考评类型; 1:活动考评 2:其他考评
+ */
+ ACTIVITY(1, "活动考评"),
+ OTHER(2, "其他考评"),
+ ;
+
+ /**
+ * 值
+ */
+ private final Integer value;
+ /**
+ * 名称
+ */
+ @Getter
+ private final String name;
+
+ EvalTypeEnum(final Integer value, final String name) {
+ this.value = value;
+ this.name = name;
+ }
+
+ /**
+ * 根据枚举值获取枚举对象
+ */
+ @JsonCreator
+ public static EvalTypeEnum ofValue(final Integer value) {
+ for (final EvalTypeEnum _enum : EvalTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取值
+ *
+ * @return 值
+ */
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * 获取描述
+ *
+ * @return 值
+ */
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final EvalTypeEnum _enum : EvalTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
+ }
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/IndicatorCodeTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/IndicatorCodeTypeEnum.java
new file mode 100644
index 0000000..114b962
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/IndicatorCodeTypeEnum.java
@@ -0,0 +1,74 @@
+package cn.fw.morax.domain.enums;
+
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 指标参数类型
+ *
+ * @author kurisu
+ */
+public enum IndicatorCodeTypeEnum implements IEnum {
+ /**
+ * 指标类型(1.指标,2,考评指标)
+ */
+ INDICATOR(1, "指标"),
+ EVAL_INDICATOR(2, "考评指标"),
+ ;
+
+ /**
+ * 值
+ */
+ private final Integer value;
+ /**
+ * 名称
+ */
+ @Getter
+ private final String name;
+
+ IndicatorCodeTypeEnum(final Integer value, final String name) {
+ this.value = value;
+ this.name = name;
+ }
+
+ /**
+ * 根据枚举值获取枚举对象
+ */
+ @JsonCreator
+ public static IndicatorCodeTypeEnum ofValue(final Integer value) {
+ for (final IndicatorCodeTypeEnum _enum : IndicatorCodeTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取值
+ *
+ * @return 值
+ */
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * 获取描述
+ *
+ * @return 值
+ */
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final IndicatorCodeTypeEnum _enum : IndicatorCodeTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
+ }
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/IndicatorTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/IndicatorTypeEnum.java
new file mode 100644
index 0000000..646a9ca
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/IndicatorTypeEnum.java
@@ -0,0 +1,76 @@
+package cn.fw.morax.domain.enums;
+
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 指标类型
+ *
+ * @author kurisu
+ */
+public enum IndicatorTypeEnum implements IEnum {
+ /**
+ * 指标类型
+ * 1.考核指标 如绩效组配置指标 薪酬组配置指标
+ * 2.前置条件指标
+ */
+ EXAMINE(1, "考核指标"),
+ PRE(2, "前置条件指标"),
+ ;
+
+ /**
+ * 值
+ */
+ private final Integer value;
+ /**
+ * 名称
+ */
+ @Getter
+ private final String name;
+
+ IndicatorTypeEnum(final Integer value, final String name) {
+ this.value = value;
+ this.name = name;
+ }
+
+ /**
+ * 根据枚举值获取枚举对象
+ */
+ @JsonCreator
+ public static IndicatorTypeEnum ofValue(final Integer value) {
+ for (final IndicatorTypeEnum _enum : IndicatorTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取值
+ *
+ * @return 值
+ */
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * 获取描述
+ *
+ * @return 值
+ */
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final IndicatorTypeEnum _enum : IndicatorTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
+ }
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/SalaryValueTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/IndicatorValueTypeEnum.java
index 094befe..f4483ac 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/SalaryValueTypeEnum.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/IndicatorValueTypeEnum.java
@@ -8,23 +8,18 @@ import lombok.Getter;
/**
* @author : kurisu
* @version : 1.0
- * @className : SalaryValueTypeEnum
- * @description : 薪酬数据类型枚举
+ * @className : IndicatorValueTypeEnum
+ * @description : 指标数据类型枚举
* @date : 2022-04-25 11:23
*/
-public enum SalaryValueTypeEnum implements IEnum {
+public enum IndicatorValueTypeEnum implements IEnum {
/**
- * 百分比
+ * 指标数据类型
*/
RATIO(1, "百分比"),
- /**
- * 数量
- */
- QUANTITY(2, "数量"),
- /**
- * 条件值
- */
+ QUANTITY(2, "数量/金额"),
CONDITION(3, "条件值"),
+ WORK_AGE(5, "工龄"),
;
/**
@@ -37,7 +32,7 @@ public enum SalaryValueTypeEnum implements IEnum {
@Getter
private final String name;
- SalaryValueTypeEnum(final Integer value, final String name) {
+ IndicatorValueTypeEnum(final Integer value, final String name) {
this.value = value;
this.name = name;
}
@@ -46,8 +41,8 @@ public enum SalaryValueTypeEnum implements IEnum {
* 根据枚举值获取枚举对象
*/
@JsonCreator
- public static SalaryValueTypeEnum ofValue(final Integer value) {
- for (final SalaryValueTypeEnum salaryValueEnum : SalaryValueTypeEnum.values()) {
+ public static IndicatorValueTypeEnum ofValue(final Integer value) {
+ for (final IndicatorValueTypeEnum salaryValueEnum : IndicatorValueTypeEnum.values()) {
if (salaryValueEnum.value.equals(value)) {
return salaryValueEnum;
}
@@ -62,7 +57,7 @@ public enum SalaryValueTypeEnum implements IEnum {
*/
@JsonCreator
public static String getNameByVale(final Integer value) {
- for (final SalaryValueTypeEnum salaryValueEnum : SalaryValueTypeEnum.values()) {
+ for (final IndicatorValueTypeEnum salaryValueEnum : IndicatorValueTypeEnum.values()) {
if (salaryValueEnum.value.equals(value)) {
return salaryValueEnum.getName();
}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/MonthDayTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/MonthDayTypeEnum.java
new file mode 100644
index 0000000..bdf6cd3
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/MonthDayTypeEnum.java
@@ -0,0 +1,74 @@
+package cn.fw.morax.domain.enums;
+
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 月天类型
+ *
+ * @author kurisu
+ */
+public enum MonthDayTypeEnum implements IEnum {
+ /**
+ * 滚动日类型;1.当月第几天 2. 当月倒数第几天
+ */
+ POSITIVE(1, "当月第几天"),
+ COUNTDOWN(2, "当月倒数第几天"),
+ ;
+
+ /**
+ * 值
+ */
+ private final Integer value;
+ /**
+ * 名称
+ */
+ @Getter
+ private final String name;
+
+ MonthDayTypeEnum(final Integer value, final String name) {
+ this.value = value;
+ this.name = name;
+ }
+
+ /**
+ * 根据枚举值获取枚举对象
+ */
+ @JsonCreator
+ public static MonthDayTypeEnum ofValue(final Integer value) {
+ for (final MonthDayTypeEnum _enum : MonthDayTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取值
+ *
+ * @return 值
+ */
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * 获取描述
+ *
+ * @return 值
+ */
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final MonthDayTypeEnum _enum : MonthDayTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
+ }
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ParamTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ParamTypeEnum.java
new file mode 100644
index 0000000..5d6178f
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ParamTypeEnum.java
@@ -0,0 +1,74 @@
+package cn.fw.morax.domain.enums;
+
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 指标参数类型
+ *
+ * @author kurisu
+ */
+public enum ParamTypeEnum implements IEnum {
+ /**
+ * 指标参数类型;1:台阶条件 2:提成条件
+ */
+ LADDER(1, "台阶条件"),
+ COMMISSION(2, "提成条件"),
+ ;
+
+ /**
+ * 值
+ */
+ private final Integer value;
+ /**
+ * 名称
+ */
+ @Getter
+ private final String name;
+
+ ParamTypeEnum(final Integer value, final String name) {
+ this.value = value;
+ this.name = name;
+ }
+
+ /**
+ * 根据枚举值获取枚举对象
+ */
+ @JsonCreator
+ public static ParamTypeEnum ofValue(final Integer value) {
+ for (final ParamTypeEnum _enum : ParamTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取值
+ *
+ * @return 值
+ */
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * 获取描述
+ *
+ * @return 值
+ */
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final ParamTypeEnum _enum : ParamTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
+ }
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/RankTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/RankTypeEnum.java
new file mode 100644
index 0000000..8f17fe0
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/RankTypeEnum.java
@@ -0,0 +1,74 @@
+package cn.fw.morax.domain.enums;
+
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 数据类型
+ *
+ * @author kurisu
+ */
+public enum RankTypeEnum implements IEnum {
+ /**
+ * 排名方式;1:排名序号 2:排名人数百分比
+ */
+ NUMBER(1, "排名序号"),
+ PERCENT(2, "排名人数百分比"),
+ ;
+
+ /**
+ * 值
+ */
+ private final Integer value;
+ /**
+ * 名称
+ */
+ @Getter
+ private final String name;
+
+ RankTypeEnum(final Integer value, final String name) {
+ this.value = value;
+ this.name = name;
+ }
+
+ /**
+ * 根据枚举值获取枚举对象
+ */
+ @JsonCreator
+ public static RankTypeEnum ofValue(final Integer value) {
+ for (final RankTypeEnum _enum : RankTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取值
+ *
+ * @return 值
+ */
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * 获取描述
+ *
+ * @return 值
+ */
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final RankTypeEnum _enum : RankTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
+ }
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ResignExamineStatusEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ResignExamineStatusEnum.java
new file mode 100644
index 0000000..c0273c8
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/ResignExamineStatusEnum.java
@@ -0,0 +1,79 @@
+package cn.fw.morax.domain.enums;
+
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 离职校验的处理状态
+ *
+ * @author : kurisu
+ * @version : 2.0
+ * @className : ResignExamineStatusEnum
+ * @description : 离职校验的处理状态
+ * @date : 2022-12-29 16:52
+ */
+public enum ResignExamineStatusEnum implements IEnum {
+ /**
+ * 离职校验的处理状态;1:待处理 2:已处理 3:无需处理
+ */
+ WAITING(1, "待处理"),
+ COMPLETE(2, "已处理"),
+ IGNORE(2, "无需处理"),
+ ;
+
+ /**
+ * 值
+ */
+ private final Integer value;
+ /**
+ * 名称
+ */
+ @Getter
+ private final String name;
+
+ ResignExamineStatusEnum(final Integer value, final String name) {
+ this.value = value;
+ this.name = name;
+ }
+
+ /**
+ * 根据枚举值获取枚举对象
+ */
+ @JsonCreator
+ public static ResignExamineStatusEnum ofValue(final Integer value) {
+ for (final ResignExamineStatusEnum _enum : ResignExamineStatusEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取描述
+ *
+ * @return 值
+ */
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final ResignExamineStatusEnum _enum : ResignExamineStatusEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 获取值
+ *
+ * @return 值
+ */
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/SalaryCalMethodEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/SalaryCalMethodEnum.java
index 1a9ea57..4ba55ee 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/SalaryCalMethodEnum.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/SalaryCalMethodEnum.java
@@ -13,15 +13,13 @@ import lombok.Getter;
*/
public enum SalaryCalMethodEnum implements IEnum {
/**
- * 计算方式;1: 星级 2:固定金额 3:阶梯提成(单) 4:按量 5: 固定提成 6:阶梯提成(总) 7:动态
+ * 计算方式;1: 星级 2:固定金额 3:阶梯提成 4:车系提成 99:动态
*/
STAR(1, "员工星级"),
FIXATION(2, "固定金额"),
- LADDER_SINGLE(3, "阶梯提成(单)"),
- SCALAR(4, "按量提成"),
- CONDITION(5, "固定提成"),
- LADDER_FIXED(6, "阶梯提成(总)"),
- DYNAMIC(7, "动态计算"),
+ LADDER(3, "台阶提成"),
+ CAR_SERIES(4, "车系提成"),
+ DYNAMIC(99, "动态计算"),
;
/**
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/SettingDraftTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/SettingDraftTypeEnum.java
new file mode 100644
index 0000000..2f8c01b
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/SettingDraftTypeEnum.java
@@ -0,0 +1,73 @@
+package cn.fw.morax.domain.enums;
+
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 草稿类型
+ *
+ * @author kurisu
+ */
+public enum SettingDraftTypeEnum implements IEnum {
+ /**
+ * 草稿类型; 1:考评
+ */
+ EVAL(1, "考评"),
+ ;
+
+ /**
+ * 值
+ */
+ private final Integer value;
+ /**
+ * 名称
+ */
+ @Getter
+ private final String name;
+
+ SettingDraftTypeEnum(final Integer value, final String name) {
+ this.value = value;
+ this.name = name;
+ }
+
+ /**
+ * 根据枚举值获取枚举对象
+ */
+ @JsonCreator
+ public static SettingDraftTypeEnum ofValue(final Integer value) {
+ for (final SettingDraftTypeEnum _enum : SettingDraftTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取值
+ *
+ * @return 值
+ */
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * 获取描述
+ *
+ * @return 值
+ */
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final SettingDraftTypeEnum _enum : SettingDraftTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
+ }
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/SettingStatusEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/SettingStatusEnum.java
index 851506e..8f22273 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/SettingStatusEnum.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/SettingStatusEnum.java
@@ -19,7 +19,7 @@ public enum SettingStatusEnum implements IEnum {
BE_EFFECTIVE(2, "待生效"),
EFFECTIVE(3, "生效中"),
INEFFECTIVE(4, "已失效"),
-// NO_PASS_APPROVING(5, "审批不通过"),
+ DRAFT(5, "草稿"),
;
/**
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/TargetCalcTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/TargetCalcTypeEnum.java
new file mode 100644
index 0000000..eeb816d
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/TargetCalcTypeEnum.java
@@ -0,0 +1,78 @@
+package cn.fw.morax.domain.enums;
+
+import com.baomidou.mybatisplus.core.enums.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+/**
+ * 目标计算类型
+ *
+ * @author kurisu
+ */
+public enum TargetCalcTypeEnum implements IEnum {
+
+ /**
+ * 目标值计算
+ */
+ TARGET_VALUE(1, "目标值计算"),
+ /**
+ * 最低要求计算
+ */
+ MINIMUM(2, "最低要求计算"),
+ ;
+
+ /**
+ * 值
+ */
+ private final Integer value;
+ /**
+ * 名称
+ */
+ @Getter
+ private final String name;
+
+ TargetCalcTypeEnum(final Integer value, final String name) {
+ this.value = value;
+ this.name = name;
+ }
+
+ /**
+ * 根据枚举值获取枚举对象
+ */
+ @JsonCreator
+ public static TargetCalcTypeEnum ofValue(final Integer value) {
+ for (final TargetCalcTypeEnum _enum : TargetCalcTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取值
+ *
+ * @return 值
+ */
+ @JsonValue
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * 获取描述
+ *
+ * @return 值
+ */
+ @JsonCreator
+ public static String getNameByVale(final Integer value) {
+ for (final TargetCalcTypeEnum _enum : TargetCalcTypeEnum.values()) {
+ if (_enum.value.equals(value)) {
+ return _enum.getName();
+ }
+ }
+ return "";
+ }
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/KpiTargetTypeEnum.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/TargetTypeEnum.java
index 332fc12..34d0b71 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/KpiTargetTypeEnum.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/TargetTypeEnum.java
@@ -6,13 +6,16 @@ import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;
/**
- * 绩效目标类型
+ * 目标类型
*
* @author kurisu
*/
-public enum KpiTargetTypeEnum implements IEnum {
+public enum TargetTypeEnum implements IEnum {
/**
+ * 目标类型: 1:无 2:百分比 3:金额
+ */
+ /**
* 无
*/
NO(1, "无"),
@@ -36,7 +39,7 @@ public enum KpiTargetTypeEnum implements IEnum {
@Getter
private final String name;
- KpiTargetTypeEnum(final Integer value, final String name) {
+ TargetTypeEnum(final Integer value, final String name) {
this.value = value;
this.name = name;
}
@@ -45,8 +48,8 @@ public enum KpiTargetTypeEnum implements IEnum {
* 根据枚举值获取枚举对象
*/
@JsonCreator
- public static KpiTargetTypeEnum ofValue(final Integer value) {
- for (final KpiTargetTypeEnum _enum : KpiTargetTypeEnum.values()) {
+ public static TargetTypeEnum ofValue(final Integer value) {
+ for (final TargetTypeEnum _enum : TargetTypeEnum.values()) {
if (_enum.value.equals(value)) {
return _enum;
}
@@ -72,7 +75,7 @@ public enum KpiTargetTypeEnum implements IEnum {
*/
@JsonCreator
public static String getNameByVale(final Integer value) {
- for (final KpiTargetTypeEnum _enum : KpiTargetTypeEnum.values()) {
+ for (final TargetTypeEnum _enum : TargetTypeEnum.values()) {
if (_enum.value.equals(value)) {
return _enum.getName();
}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorLaddersVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorLaddersVO.java
new file mode 100644
index 0000000..5ec941d
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorLaddersVO.java
@@ -0,0 +1,42 @@
+package cn.fw.morax.domain.vo.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ * @author : kurisu
+ * @date : 2022-4-6
+ * @desc : 指标项得分阶梯
+ */
+@Data
+public class EvalGroupIndicatorLaddersVO {
+ /**
+ * id
+ */
+ private Long id;
+ /**
+ * 绩效组指标项id
+ */
+ private Long evalGroupIndicatorId;
+ /**
+ * 阶梯下限;大于等于
+ */
+ private BigDecimal lower;
+ /**
+ * 阶梯上限;小于; 无上限的情况值为 2<<15
+ */
+ private BigDecimal upper;
+ /**
+ * 标准分;本阶梯对应标准分
+ */
+ private Integer standardScore;
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+}
\ No newline at end of file
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorParamVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorParamVO.java
new file mode 100644
index 0000000..a5f993b
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorParamVO.java
@@ -0,0 +1,91 @@
+package cn.fw.morax.domain.vo.eval;
+
+import cn.fw.morax.domain.enums.IndicatorCodeTypeEnum;
+import cn.fw.morax.domain.enums.ParamTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 考评组指标参数
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupIndicatorParamVO {
+
+ /**
+ * id
+ */
+ private Long id;
+ /**
+ * 考评组配置id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 考评组指标id
+ */
+ private Long evalGroupIndicatorId;
+
+ /**
+ * 条件类型(1.台阶条件,2,提成条件)
+ */
+ private ParamTypeEnum paramType;
+
+ /**
+ * 指标类型(1.指标,2,考评指标)
+ */
+ private IndicatorCodeTypeEnum codeType;
+
+ /**
+ * 指标编码
+ */
+ private String code;
+
+ /**
+ * 指标库名称
+ */
+ private String name;
+
+ /**
+ * 占比
+ */
+ private BigDecimal proportion;
+
+ /**
+ * 是否封顶
+ */
+ private Boolean cap;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorPreconditionLaddersVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorPreconditionLaddersVO.java
new file mode 100644
index 0000000..2b8c2ab
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorPreconditionLaddersVO.java
@@ -0,0 +1,62 @@
+package cn.fw.morax.domain.vo.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.common.constant.Constant;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 考评组指标条件得分阶梯
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupIndicatorPreconditionLaddersVO {
+
+ /**
+ * id
+ */
+ private Long id;
+ /**
+ * 考评组指标条件id
+ */
+ private Long preconditionId;
+
+ /**
+ * 阶梯下限;大于等于
+ */
+ private BigDecimal lower;
+
+ /**
+ * 阶梯上限;小于; 无上限的情况值为 2<<15
+ */
+ private BigDecimal upper;
+
+ /**
+ * 得分百分比
+ */
+ private BigDecimal scorePercent;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+ /**
+ * 转换为百分数展示
+ */
+ public void convertToPercent(){
+ this.setUpper(this.getUpper().multiply(Constant.ONE_HUNDRED));
+ this.setLower(this.getLower().multiply(Constant.ONE_HUNDRED));
+ }
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorPreconditionVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorPreconditionVO.java
new file mode 100644
index 0000000..984ede3
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorPreconditionVO.java
@@ -0,0 +1,78 @@
+package cn.fw.morax.domain.vo.eval;
+
+import cn.fw.morax.domain.enums.IndicatorCodeTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ *
+ * 考评组指标条件
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupIndicatorPreconditionVO {
+
+ /**
+ * id
+ */
+ private Long id;
+ /**
+ * 考评组配置id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 考评组指标id
+ */
+ private Long evalGroupIndicatorId;
+
+ /**
+ * 指标类型(1.指标,2,考评指标)
+ */
+ private IndicatorCodeTypeEnum codeType;
+
+ /**
+ * 指标编码
+ */
+ private String code;
+
+ /**
+ * 指标库名称
+ */
+ private String name;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 排序
+ */
+ private Integer sort;
+
+ /**
+ * 条件阶梯
+ */
+ private List ladders;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorTargetVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorTargetVO.java
new file mode 100644
index 0000000..2cbc87a
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorTargetVO.java
@@ -0,0 +1,53 @@
+package cn.fw.morax.domain.vo.eval;
+
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * @author jiangchao
+ * @des:
+ * @date 2022/12/5 9:29
+ */
+@Data
+public class EvalGroupIndicatorTargetVO {
+
+ /**
+ * 指标库id
+ */
+ @NotNull(message = "绩效组指标项不能为空")
+ private Long indicatorId;
+
+ /**
+ * 指标编码
+ */
+ @NotNull(message = "指标编码不能为空")
+ private String indicatorCode;
+
+ /**
+ * 指标库名称
+ */
+ @NotNull(message = "指标库名称不能为空")
+ private String indicatorName;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ @NotNull(message = "目标计算类型不能为空")
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorVO.java
new file mode 100644
index 0000000..d947e72
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorVO.java
@@ -0,0 +1,86 @@
+package cn.fw.morax.domain.vo.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.dto.eval.EvalGroupIndicatorLaddersDTO;
+import cn.fw.morax.domain.dto.eval.EvalGroupIndicatorParamDTO;
+import cn.fw.morax.domain.dto.eval.EvalGroupIndicatorPreconditionDTO;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ *
+ * 绩效组指标项
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroupIndicatorVO {
+
+ /**
+ * id
+ */
+ private Long id;
+ /**
+ * 考评组配置id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 指标名称
+ */
+ private String name;
+
+ /**
+ * 基础绩效分
+ */
+ private Integer baseScore;
+
+ /**
+ * 得分方式;1: 阶梯得分 2:普通得分
+ */
+ private Integer scoreWay;
+
+ /**
+ * 考评项别名
+ */
+ private String paramAlias;
+
+ /**
+ * 前置考评项别名(目前预留)
+ */
+ private String preconditionAlias;
+
+ /**
+ * 提成参数
+ */
+ private List commissionParams;
+
+ /**
+ * 台阶参数
+ */
+ private List ladderParams;
+
+ /**
+ * 条件
+ */
+ private List conds;
+
+ /**
+ * 指标阶梯
+ */
+ private List ladders;
+
+ /**
+ * 目标
+ */
+ private List targets;
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardLaddersVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardLaddersVO.java
new file mode 100644
index 0000000..52413d8
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardLaddersVO.java
@@ -0,0 +1,64 @@
+package cn.fw.morax.domain.vo.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 考评奖惩阶梯
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupRewardLaddersVO {
+
+ /**
+ * id
+ */
+ private Long id;
+ /**
+ * 考评组指标条件id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 考评组奖励id
+ */
+ private Long evalGroupRewardId;
+
+ /**
+ * 阶梯下限;大于等于
+ */
+ private BigDecimal lower;
+
+ /**
+ * 阶梯上限;小于; 无上限的情况值为 2<<15
+ */
+ private BigDecimal upper;
+
+ /**
+ * 金额
+ */
+ private BigDecimal money;
+
+ /**
+ * 封顶金额/台
+ */
+ private BigDecimal capMoney;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardParamVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardParamVO.java
new file mode 100644
index 0000000..d2f376a
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardParamVO.java
@@ -0,0 +1,96 @@
+package cn.fw.morax.domain.vo.eval;
+
+import cn.fw.morax.domain.enums.IndicatorCodeTypeEnum;
+import cn.fw.morax.domain.enums.ParamTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 考评奖惩参数
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupRewardParamVO {
+
+ /**
+ * id
+ */
+ private Long id;
+
+ /**
+ * 考评组id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 考评奖惩id
+ */
+ private Long evalGroupRewardId;
+
+ /**
+ * 参数类型(1.台阶,2,提成)
+ */
+ private ParamTypeEnum paramType;
+
+ /**
+ * 编码类型(1.指标,2.考评指标)
+ */
+ private IndicatorCodeTypeEnum codeType;
+
+ /**
+ * 项目编码
+ */
+ private String code;
+
+ /**
+ * 项目名称
+ */
+ private String name;
+
+ /**
+ * 占比
+ */
+ private BigDecimal proportion;
+
+ /**
+ * 是否封顶
+ */
+ private Boolean cap;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 金额
+ */
+ private BigDecimal money;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardPreconditionVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardPreconditionVO.java
new file mode 100644
index 0000000..59802c8
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardPreconditionVO.java
@@ -0,0 +1,93 @@
+package cn.fw.morax.domain.vo.eval;
+
+import cn.fw.morax.domain.enums.ConditionTypeEnum;
+import cn.fw.morax.domain.enums.IndicatorCodeTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 考评奖惩前置条件
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroupRewardPreconditionVO{
+
+ /**
+ * id
+ */
+ private Long id;
+ /**
+ * 考评组id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 考评奖惩id
+ */
+ private Long evalGroupRewardId;
+
+ /**
+ * 条件值类型; 1:满足目标 2:满足排名率 3:金额
+ */
+ private ConditionTypeEnum condType;
+
+ /**
+ * 编码类型(1. 指标,2.考评指标)
+ */
+ private IndicatorCodeTypeEnum codeType;
+
+ /**
+ * 项目编码
+ */
+ private String code;
+
+ /**
+ * 项目名称
+ */
+ private String name;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 条件值
+ */
+ private BigDecimal condValue;
+
+ /**
+ * 排序
+ */
+ private Integer sort;
+
+ /**
+ * 逻辑删除
+ */
+ @TableLogic
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardVO.java
new file mode 100644
index 0000000..f1c1f26
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardVO.java
@@ -0,0 +1,92 @@
+package cn.fw.morax.domain.vo.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.dto.eval.EvalGroupRewardLaddersDTO;
+import cn.fw.morax.domain.dto.eval.EvalGroupRewardParamDTO;
+import cn.fw.morax.domain.dto.eval.EvalGroupRewardPreconditionDTO;
+import cn.fw.morax.domain.enums.EvalRewardCalMethodEnum;
+import cn.fw.morax.domain.enums.RankTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ *
+ * 考评奖惩
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalGroupRewardVO {
+
+ /**
+ * id
+ */
+ private Long id;
+ /**
+ * 考评组配置id
+ */
+ private Long evalGroupId;
+
+ /**
+ * 考评,活动名称
+ */
+ private String name;
+
+ /**
+ * 计算方式; 1: 排名正负激励 2:阶梯奖励(翻倍) 3:总金额X达成率占比 4:固定值X达成率 5: 固定值+超额部分追加奖励
+ */
+ private EvalRewardCalMethodEnum calMethod;
+
+ /**
+ * 排名方式;1:排名序号 2:排名人数百分比
+ */
+ private RankTypeEnum rankType;
+
+ /**
+ * 金额
+ */
+ private BigDecimal money;
+
+ /**
+ * 追加奖励 XX 元/台,超额奖励用
+ */
+ private BigDecimal extraMoney;
+
+ /**
+ * 提成参数
+ */
+ @Valid
+ private List commissionParams;
+
+ /**
+ * 台阶参数
+ */
+ @Valid
+ private List ladderParams;
+
+ /**
+ * 阶梯
+ */
+ @Valid
+ private List ladders;
+
+ /**
+ * 条件
+ */
+ @Valid
+ private List conds;
+
+ /**
+ * 目标
+ */
+ private List targets;
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupVO.java
new file mode 100644
index 0000000..4a32963
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupVO.java
@@ -0,0 +1,116 @@
+package cn.fw.morax.domain.vo.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.common.data.mybatis.handler.LongListTypeHandler;
+import cn.fw.common.data.mybatis.handler.StringListTypeHandler;
+import cn.fw.morax.domain.dto.eval.EvalGroupIndicatorDTO;
+import cn.fw.morax.domain.dto.eval.EvalGroupRewardDTO;
+import cn.fw.morax.domain.enums.EvalScopeEnum;
+import cn.fw.morax.domain.enums.EvalTypeEnum;
+import cn.fw.morax.domain.enums.SettingStatusEnum;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ *
+ * 考评组
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName(autoResultMap = true)
+public class EvalGroupVO {
+
+ /**
+ * id
+ */
+ private Long id;
+
+ /**
+ * 考评组编码
+ */
+ private String egc;
+
+ /**
+ * 考评,活动名称
+ */
+ private String name;
+
+ /**
+ * 考评类型; 1:活动考评 2:其他考评
+ */
+// private EvalTypeEnum type;
+
+ /**
+ * 考评范围; 1:门店考评 2:人员考评
+ */
+ private EvalScopeEnum scopeType;
+
+ /**
+ * 岗位id
+ */
+ private Long postId;
+
+ /**
+ * 岗位名称
+ */
+ private String postName;
+
+ /**
+ * 适用门店ids
+ */
+ @TableField(typeHandler = LongListTypeHandler.class)
+ private List shopIds;
+
+ /**
+ * 适用门店名称
+ */
+ @TableField(typeHandler = StringListTypeHandler.class)
+ private List shopNames;
+
+ /**
+ * 调整原因
+ */
+ private String reason;
+
+ /**
+ * 附件;fid逗号隔开
+ */
+ private String attachment;
+
+ /**
+ * 状态;1:审批中 2:审批拒绝 3:生效中 4:草稿
+ */
+ private SettingStatusEnum status;
+
+ /**
+ * 包含指标数量
+ */
+ private Integer indicatorNum;
+
+ /**
+ * 集团id
+ */
+ private Long groupId;
+
+ /**
+ * 考评指标
+ */
+ private List indicators;
+
+ /**
+ * 考评奖惩
+ */
+ private List rewards;
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalIndicatorVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalIndicatorVO.java
new file mode 100644
index 0000000..90724e9
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalIndicatorVO.java
@@ -0,0 +1,108 @@
+package cn.fw.morax.domain.vo.eval;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicator;
+import cn.fw.morax.domain.enums.EvalRuleTypeEnum;
+import cn.fw.morax.domain.enums.MonthDayTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDate;
+
+/**
+ *
+ * 考评指标
+ *
+ *
+ * @author jiangchao
+ * @since 2022-11-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class EvalIndicatorVO {
+
+ /**
+ * 归属系统id
+ */
+ private Long sysId;
+
+ /**
+ * 归属系统前缀
+ */
+ private String sysPrefix;
+
+ /**
+ * 归属系统名称
+ */
+ private String sysName;
+
+ /**
+ * 导入操作人员角色码
+ */
+ private String roleCode;
+
+ /**
+ * 导入操作人员角色名称
+ */
+ private String roleName;
+
+ /**
+ * 频率类型; 1:按滚动天 2:按星期 3:按月指定日期 4:按滚动月
+ */
+ private EvalRuleTypeEnum ruleType;
+
+ /**
+ * 频率值 ,号分隔(按星期、按月指定日期使用)
+ */
+ private String ruleValue;
+
+ /**
+ * 滚动月数
+ */
+ private Integer rollMonths;
+
+ /**
+ * 开始日期
+ */
+ private LocalDate startTime;
+
+ /**
+ * 月天; 1:月第几天 2:月倒数第几天
+ */
+ private MonthDayTypeEnum monthDayType;
+
+ /**
+ * 月天数
+ */
+ private Integer monthDay;
+
+ /**
+ * 考评指标编码
+ */
+ private String code;
+
+ /**
+ * 考评指标名称
+ */
+ private String name;
+
+ /**
+ * 目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private Integer targetType;
+
+ /**
+ * 启用/禁用;0:禁用 1:启用
+ */
+ private Boolean enable;
+
+ /**
+ * 逻辑删除
+ */
+ private Boolean yn;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalVO.java
new file mode 100644
index 0000000..97df774
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalVO.java
@@ -0,0 +1,42 @@
+package cn.fw.morax.domain.vo.eval;
+
+import cn.fw.morax.domain.enums.EvalTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ *
+ * 考评组
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvalVO {
+
+ /**
+ * 考评id
+ */
+ private Long id;
+
+ /**
+ * 考评,活动名称
+ */
+ private String name;
+
+ /**
+ * 考评类型; 1:活动考评 2:其他考评
+ */
+ private EvalTypeEnum type;
+
+ /**
+ * 考评组
+ */
+ private List evalGroups;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/IndicatorUserValueVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/IndicatorUserValueVO.java
new file mode 100644
index 0000000..a2ad707
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/IndicatorUserValueVO.java
@@ -0,0 +1,58 @@
+package cn.fw.morax.domain.vo.kpi;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.enums.IndicatorValueTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDate;
+
+/**
+ * 用户绩效指标上报数据类
+ *
+ * @author : kurisu
+ * @version : 2.0
+ * @className : IndicatorUserValue
+ * @description : 用户绩效指标上报数据类
+ * @date : 2022-12-15 11:19
+ */
+@Data
+public class IndicatorUserValueVO {
+ /**
+ * id
+ */
+ private Long id;
+ /**
+ * 人员id
+ */
+ private Long userId;
+ /**
+ * 指标编码
+ */
+ private String indicatorCode;
+ /**
+ * 指标名称
+ */
+ private String indicatorName;
+ /**
+ * 类型;1: 百分比 2:数量 3:条件值 4:金额 5:工龄
+ */
+ private IndicatorValueTypeEnum valueType;
+ /**
+ * 指标业务值
+ * 指标值;jons字符串 map类型
+ */
+ private String indicatorValue;
+ /**
+ * 数据日期
+ */
+ private LocalDate dataDate;
+ /**
+ * 集团id
+ */
+ private Long groupId;
+ /**
+ * 逻辑删除
+ */
+ private Boolean yn;
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/IndicatorsVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/IndicatorsVO.java
index 04c315b..a1767bd 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/IndicatorsVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/IndicatorsVO.java
@@ -4,7 +4,8 @@ import cn.fw.common.data.entity.BaseEntity;
import cn.fw.common.data.mybatis.handler.StringListTypeHandler;
import cn.fw.morax.domain.db.kpi.Indicators;
import cn.fw.morax.domain.enums.ApplicableRoleEnum;
-import cn.fw.morax.domain.enums.KpiTargetTypeEnum;
+import cn.fw.morax.domain.enums.DataTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
@@ -42,13 +43,17 @@ public class IndicatorsVO {
*/
private String sysPrefix;
/**
+ * 数据类型;1:台数 2:百分比 3:金额
+ */
+ private DataTypeEnum dataType;
+ /**
* 适用角色类型;1: 全部角色 2:全部管理角色 3:自定义
*/
private ApplicableRoleEnum roleType;
/**
* 绩效目标值类型; 1:无 2:百分比 3:金额
*/
- private KpiTargetTypeEnum targetType;
+ private TargetTypeEnum targetType;
/**
* 适用角色编码
*/
@@ -65,10 +70,25 @@ public class IndicatorsVO {
*/
private Boolean enable;
/**
+ * 内部指标
+ * 0:否 1:是
+ */
+ private Boolean innerIndicator;
+ /**
* 集团id
*/
private Long groupId;
+ /**
+ * 适用范围类型; 1. 绩效组, 2.薪酬组, 3. 考评组
+ */
+ private List applyTypes;
+
+ /**
+ * 报表路径
+ */
+ private String reportPath;
+
public static void main(String[] args) {
Indicators indicators = new Indicators();
IndicatorsVO indicatorsVo = new IndicatorsVO();
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorCondLaddersVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorCondLaddersVO.java
new file mode 100644
index 0000000..5f88413
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorCondLaddersVO.java
@@ -0,0 +1,70 @@
+package cn.fw.morax.domain.vo.kpi;
+
+import cn.fw.morax.common.constant.Constant;
+import cn.fw.morax.common.utils.PublicUtil;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 绩效组指标条件得分阶梯
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class KpiGroupIndicatorCondLaddersVO implements Comparable{
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 绩效组指标条件id
+ */
+ private Long preconditionId;
+
+ /**
+ * 阶梯下限;大于等于
+ */
+ private BigDecimal lower;
+
+ /**
+ * 阶梯上限;小于; 无上限的情况值为 2<<15
+ */
+ private BigDecimal upper;
+
+ /**
+ * 得分百分比
+ */
+ private BigDecimal scorePercent;
+
+ /**
+ * 正序排列
+ *
+ * @param other
+ * @return
+ */
+ @Override
+ public int compareTo(KpiGroupIndicatorCondLaddersVO other) {
+ //优先通过下限比较,上限与下限
+ if (PublicUtil.isEmpty(this.upper) || PublicUtil.isEmpty(other.getUpper())) {
+ return this.lower.compareTo(other.getLower());
+ } else {
+ return this.upper.compareTo(other.getUpper());
+ }
+ }
+
+ /**
+ * 转换为百分数展示
+ */
+ public void convertToPercent(){
+ this.setUpper(this.getUpper().multiply(Constant.ONE_HUNDRED));
+ this.setLower(this.getLower().multiply(Constant.ONE_HUNDRED));
+ }
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorDetailVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorDetailVO.java
index 8952a11..436a79d 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorDetailVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorDetailVO.java
@@ -1,7 +1,9 @@
package cn.fw.morax.domain.vo.kpi;
+import cn.fw.morax.domain.enums.ScoreWayEnum;
import lombok.Data;
+import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@@ -19,6 +21,11 @@ public class KpiGroupIndicatorDetailVO {
private LocalDateTime kpiTime;
/**
+ * 绩效组id
+ */
+ private Long kpiGroupId;
+
+ /**
* 岗位id
*/
private Long postId;
@@ -37,30 +44,64 @@ public class KpiGroupIndicatorDetailVO {
*/
private List kpiGroupShopNames;
+// /**
+// * 系统前缀
+// */
+// private String sysPrefix;
+//
+// /**
+// * 系统前缀
+// */
+// private String sysDomain;
+//
+// /**
+// * 系统名称
+// */
+// private String sysName;
+//
+// /**
+// * 指标编码
+// */
+// private String indicatorCode;
+//
+// /**
+// * 指标名称
+// */
+// private String indicatorName;
+
+ /**
+ * 绩效指标、综合指标值
+ */
+ private BigDecimal paramsValue;
+
+ /**
+ * 参数别名
+ */
+ private String paramAlias;
/**
- * 系统前缀
+ * 基础绩效分
*/
- private String sysPrefix;
+ private Integer baseScore;
/**
- * 系统前缀
+ * 得分方式;1: 阶梯得分 2:普通得分
*/
- private String sysDomain;
+ private ScoreWayEnum scoreWay;
/**
- * 系统名称
+ * 指标参数
*/
- private String sysName;
+ private List ladderParams;
/**
- * 指标编码
+ * 提成参数
*/
- private String indicatorCode;
+ private List commissionParams;
/**
- * 指标名称
+ * 条件
*/
- private String indicatorName;
+ private List conds;
/**
* 指标项得分阶梯
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorParamVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorParamVO.java
new file mode 100644
index 0000000..e515308
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorParamVO.java
@@ -0,0 +1,114 @@
+package cn.fw.morax.domain.vo.kpi;
+
+import cn.fw.morax.common.constant.Constant;
+import cn.fw.morax.common.utils.PublicUtil;
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorParam;
+import cn.fw.morax.domain.enums.DataTypeEnum;
+import cn.fw.morax.domain.enums.ParamTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * @author jiangchao
+ * @des:
+ * @date 2022/12/5 9:29
+ */
+@Data
+public class KpiGroupIndicatorParamVO {
+
+ /**
+ * id
+ */
+ private Long id;
+
+ /**
+ * 绩效组配置id
+ */
+ private Long kpiGroupId;
+
+ /**
+ * 绩效组指标id
+ */
+ private Long kpiGroupIndicatorId;
+
+ /**
+ * 指标库id
+ */
+ @NotNull(message = "绩效组指标项不能为空")
+ private Long indicatorId;
+
+ /**
+ * 指标编码
+ */
+ @NotNull(message = "指标编码不能为空")
+ private String indicatorCode;
+
+ /**
+ * 指标库名称
+ */
+ @NotNull(message = "指标库名称不能为空")
+ private String indicatorName;
+
+ /**
+ * 条件类型(1.台阶条件,2,提成条件)
+ */
+ private ParamTypeEnum paramType;
+
+ /**
+ * 占比
+ */
+ @NotNull(message = "占比不能为空")
+ private BigDecimal proportion;
+
+ /**
+ * 是否封顶
+ */
+ @NotNull(message = "是否封顶不能为空")
+ private Boolean cap;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ @NotNull(message = "目标计算类型不能为空")
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 指标值
+ */
+ private BigDecimal indicatorValue;
+
+ /**
+ * 达成值
+ */
+ private BigDecimal reachValue;
+
+ /**
+ * 数据类型;1:台数 2:百分比 3:金额
+ */
+ private DataTypeEnum dataType;
+
+ /**
+ * 处理百分数
+ */
+ public void processPercent() {
+ this.setProportion(this.getProportion().multiply(Constant.ONE_HUNDRED));
+ if (TargetTypeEnum.RATIO.equals(this.getTargetType())) {
+ this.setTargetValue(this.getTargetValue().multiply(Constant.ONE_HUNDRED));
+ }
+ }
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorPreconditionLaddersVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorPreconditionLaddersVO.java
new file mode 100644
index 0000000..a921f6d
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorPreconditionLaddersVO.java
@@ -0,0 +1,80 @@
+package cn.fw.morax.domain.vo.kpi;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.common.constant.Constant;
+import cn.fw.morax.common.utils.PublicUtil;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 绩效组指标条件得分阶梯
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Data
+public class KpiGroupIndicatorPreconditionLaddersVO implements Comparable{
+
+ /**
+ * id
+ */
+ private Long id;
+
+ /**
+ * 绩效组指标条件id
+ */
+ private Long preconditionId;
+
+ /**
+ * 阶梯下限;大于等于
+ */
+ private BigDecimal lower;
+
+ /**
+ * 阶梯上限;小于; 无上限的情况值为 2<<15
+ */
+ private BigDecimal upper;
+
+ /**
+ * 得分百分比
+ */
+ private BigDecimal scorePercent;
+
+ /**
+ * 是否命中
+ */
+ private Boolean hit;
+
+ /**
+ * 正序排列
+ *
+ * @param other
+ * @return
+ */
+ @Override
+ public int compareTo(KpiGroupIndicatorCondLaddersVO other) {
+ //优先通过下限比较,上限与下限
+ if (PublicUtil.isEmpty(this.upper) || PublicUtil.isEmpty(other.getUpper())) {
+ return this.lower.compareTo(other.getLower());
+ } else {
+ return this.upper.compareTo(other.getUpper());
+ }
+ }
+
+ /**
+ * 转换为百分数展示
+ */
+ public void convertToPercent(){
+ this.setScorePercent(this.getScorePercent().multiply(Constant.ONE_HUNDRED));
+ this.setUpper(this.getUpper().multiply(Constant.ONE_HUNDRED));
+ this.setLower(this.getLower().multiply(Constant.ONE_HUNDRED));
+ }
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorPreconditionVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorPreconditionVO.java
new file mode 100644
index 0000000..9a52c8c
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorPreconditionVO.java
@@ -0,0 +1,154 @@
+package cn.fw.morax.domain.vo.kpi;
+
+import cn.fw.morax.common.constant.Constant;
+import cn.fw.morax.common.utils.PublicUtil;
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorPrecondition;
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorTargetHitLog;
+import cn.fw.morax.domain.enums.DataTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ *
+ * 绩效组指标条件
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class KpiGroupIndicatorPreconditionVO {
+
+ /**
+ * id
+ */
+ private Long id;
+
+ /**
+ * 绩效组配置id
+ */
+ private Long kpiGroupId;
+
+ /**
+ * 绩效组指标id
+ */
+ private Long kpiGroupIndicatorId;
+
+ /**
+ * 指标库id
+ */
+ private Long indicatorId;
+
+ /**
+ * 指标编码
+ */
+ private String indicatorCode;
+
+ /**
+ * 指标库名称
+ */
+ private String indicatorName;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 排序
+ */
+ private Integer sort;
+
+ /**
+ * 命中阶梯
+ */
+
+ private Long hitLaddersId;
+
+// /**
+// * 条件值
+// */
+// private BigDecimal condValue;
+
+ /**
+ * 数据类型;1:台数 2:百分比 3:金额
+ */
+ private DataTypeEnum dataType;
+
+ /**
+ * 指标值
+ */
+ private BigDecimal indicatorValue;
+
+ /**
+ * 达成值
+ */
+ private BigDecimal reachValue;
+
+ /**
+ * 前置条件台阶
+ */
+ private List condLadders;
+
+
+ /**
+ * 处理百分数
+ */
+ public void processPercent() {
+ if (TargetTypeEnum.RATIO.equals(this.getTargetType())) {
+ this.setTargetValue(this.getTargetValue().multiply(Constant.ONE_HUNDRED));
+ }
+ }
+
+ /**
+ * 处理指标百分数
+ */
+ public void processTargetPercent(KpiGroupIndicatorTargetHitLog kpiGroupIndicatorTargetHitLog) {
+ if (PublicUtil.isEmpty(kpiGroupIndicatorTargetHitLog)) {
+ this.setIndicatorValue(BigDecimal.ZERO);
+ this.setReachValue(BigDecimal.ZERO);
+ return;
+ }
+ if (DataTypeEnum.RATIO.equals(this.getDataType())) {
+ this.setIndicatorValue(kpiGroupIndicatorTargetHitLog.getValue().multiply(Constant.ONE_HUNDRED));
+ this.setReachValue(kpiGroupIndicatorTargetHitLog.getReachValue().multiply(Constant.ONE_HUNDRED));
+ } else {
+ this.setIndicatorValue(kpiGroupIndicatorTargetHitLog.getValue());
+ this.setReachValue(kpiGroupIndicatorTargetHitLog.getReachValue());
+ }
+ }
+
+ /**
+ * 处理指标百分数
+ */
+ public void processNoTargetPercent() {
+ if (PublicUtil.isEmpty(this.getIndicatorValue())) {
+ return;
+ }
+ if (DataTypeEnum.RATIO.equals(this.getDataType())) {
+ this.setIndicatorValue(this.getIndicatorValue().multiply(Constant.ONE_HUNDRED));
+ } else {
+ this.setIndicatorValue(this.getIndicatorValue());
+ }
+ }
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorTargetHitLogVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorTargetHitLogVO.java
new file mode 100644
index 0000000..4eab6ba
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorTargetHitLogVO.java
@@ -0,0 +1,56 @@
+package cn.fw.morax.domain.vo.kpi;
+
+import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.domain.enums.IndicatorTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * 绩效组指标得分命中记录
+ *
+ * @author : kurisu
+ * @version : 2.0
+ * @className : KpiGroupIndicatorTargetHitLog
+ * @description : 绩效组指标目标命中记录
+ * @date : 2022-12-13 15:09
+ */
+@Data
+public class KpiGroupIndicatorTargetHitLogVO {
+ /**
+ * 指标类型对应id
+ * 即paramId或者preconditionId
+ */
+ private Long referId;
+ /**
+ * 指标类型
+ */
+ private IndicatorTypeEnum targetType;
+ /**
+ * 人员id
+ */
+ private Long userId;
+ /**
+ * 原始值
+ */
+ private BigDecimal value;
+ /**
+ * 达成值
+ */
+ private BigDecimal reachValue;
+ /**
+ * 数据日期
+ */
+ private LocalDate dataDate;
+ /**
+ * 集团id
+ */
+ private Long groupId;
+ /**
+ * yn
+ */
+ private Boolean yn;
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorTargetVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorTargetVO.java
new file mode 100644
index 0000000..d8dd87c
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorTargetVO.java
@@ -0,0 +1,49 @@
+package cn.fw.morax.domain.vo.kpi;
+
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * @author jiangchao
+ * @des:
+ * @date 2022/12/5 9:29
+ */
+@Data
+public class KpiGroupIndicatorTargetVO {
+
+ /**
+ * 指标库id
+ */
+ private Long indicatorId;
+
+ /**
+ * 指标编码
+ */
+ private String indicatorCode;
+
+ /**
+ * 指标库名称
+ */
+ private String indicatorName;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 目标类型: 1:无 2:百分比 3:金额
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorVO.java
index b42365d..425d5e6 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiGroupIndicatorVO.java
@@ -1,6 +1,5 @@
package cn.fw.morax.domain.vo.kpi;
-import cn.fw.morax.domain.enums.KpiTargetTypeEnum;
import cn.fw.morax.domain.enums.ScoreWayEnum;
import lombok.Data;
@@ -19,21 +18,30 @@ public class KpiGroupIndicatorVO {
*/
private Long id;
/**
- * 绩效组配置id
- */
- private Long kpiGroupId;
- /**
- * 指标库id
+ * 指标库名称
*/
- private Long indicatorId;
+ private String name;
/**
- * 指标编码
+ * 参数别名
*/
- private String indicatorCode;
+ private String paramAlias;
/**
- * 指标库名称
+ * 绩效组配置id
*/
- private String indicatorName;
+ private Long kpiGroupId;
+
+// /**
+// * 指标库id
+// */
+// private Long indicatorId;
+// /**
+// * 指标编码
+// */
+// private String indicatorCode;
+// /**
+// * 指标库名称
+// */
+// private String indicatorName;
/**
* 基础绩效分
*/
@@ -42,16 +50,42 @@ public class KpiGroupIndicatorVO {
* 得分方式;1: 阶梯得分 2:普通得分
*/
private ScoreWayEnum scoreWay;
+
+// /**
+// * 绩效指标、综合指标值
+// */
+// private BigDecimal paramsValue;
+
/**
- * 绩效目标值类型; 1:无 2:百分比 3:金额
+ * 指标参数
*/
- private KpiTargetTypeEnum targetType;
+ private List ladderParams;
+
+ /**
+ * 提成参数
+ */
+ private List commissionParams;
+
/**
- * 绩效目标值
+ * 前置条件配置
*/
- private BigDecimal targetValue;
+ private List conds;
+
+ /**
+ * 指标目标
+ */
+ private List targets;
+
+// /**
+// * 绩效目标值类型; 1:无 2:百分比 3:金额
+// */
+// private TargetTypeEnum targetType;
+// /**
+// * 绩效目标值
+// */
+// private BigDecimal targetValue;
/**
- * 星级阶梯
+ * 得分阶梯
*/
private List indicatorLadders;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiIndicatorRankStaffVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiIndicatorRankStaffVO.java
new file mode 100644
index 0000000..f3e3573
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiIndicatorRankStaffVO.java
@@ -0,0 +1,71 @@
+package cn.fw.morax.domain.vo.kpi;
+
+import cn.fw.morax.common.utils.PublicUtil;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.Optional;
+
+/**
+ * @author : kurisu
+ * @date : 2022-4-6
+ * @desc : 绩效池
+ */
+@Data
+public class KpiIndicatorRankStaffVO implements Comparable{
+ /**
+ * 用户id
+ */
+ private Long userId;
+ /**
+ * 用户名称
+ */
+ private String userName;
+ /**
+ * 岗位id
+ */
+ private Long postId;
+ /**
+ * 岗位名称
+ */
+ private String postName;
+ /**
+ * 门店id
+ */
+ private Long shopId;
+ /**
+ * 门店名称
+ */
+ private String shopName;
+ /**
+ * 是否纳入绩效计算
+ */
+ private Boolean inclusion;
+ /**
+ * 指标排名序号
+ */
+ private Integer indicatorRank;
+
+ /**
+ * 原始值
+ */
+ private BigDecimal originValue;
+
+ /**
+ * 达成值
+ */
+ private BigDecimal reachValue;
+
+ @Override
+ public int compareTo(KpiIndicatorRankStaffVO other) {
+ if (! this.inclusion) {
+ return 1;
+ }
+ if (! other.inclusion) {
+ return -1;
+ }
+ return Optional.ofNullable(other.originValue).orElse(BigDecimal.ZERO)
+ .compareTo(Optional.ofNullable(this.originValue).orElse(BigDecimal.ZERO));
+ }
+}
\ No newline at end of file
diff --git a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/kpi/KpiReportNoticeMQ.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiIndicatorRankVO.java
index 83e2b0e..c5c756c 100644
--- a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/kpi/KpiReportNoticeMQ.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiIndicatorRankVO.java
@@ -1,54 +1,73 @@
-package cn.fw.morax.sdk.dto.kpi;
+package cn.fw.morax.domain.vo.kpi;
+import cn.fw.morax.domain.enums.DataTypeEnum;
+import cn.fw.morax.domain.enums.StarLevelEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
+import org.hibernate.validator.constraints.Length;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.YearMonth;
import java.util.Date;
+import java.util.List;
/**
* @author : kurisu
- * @className : KpiIndicator
- * @description :
- * @date : 2022-04-07 15:29
+ * @date : 2022-4-6
+ * @desc : 绩效池
*/
@Data
+@Builder
@AllArgsConstructor
@NoArgsConstructor
-@Builder
-public class KpiReportNoticeMQ {
+public class KpiIndicatorRankVO {
+
/**
- * topic
+ * 指标名称
*/
- public final static String TOPIC = "kpi_report";
+ private String indicatorName;
+
/**
* 指标编码
*/
private String indicatorCode;
+
/**
- * 指标名称
+ * 截止时间
*/
- private String indicatorName;
+ private Date deadlineDate;
+
/**
- * 岗位id
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
*/
- private Long postId;
+ private TargetCalcTypeEnum targetCalcType;
+
/**
- * 岗位名称
+ * 绩效目标值类型; 1:无 2:百分比 3:金额 4:台数
*/
- private String postName;
+ private TargetTypeEnum targetType;
+
/**
- * 需要上报日期
+ * 目标值
*/
- private Date uploadDate;
+ private BigDecimal targetValue;
+
/**
- * 集团id
+ * 数据类型;1:台数 2:百分比 3:金额
*/
- private Long groupId;
+ private DataTypeEnum dataType;
+
/**
- * 唯一标识
+ * 排名人员
*/
- private Long uid;
-}
+ private List staffs;
+
+
+}
\ No newline at end of file
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolDetailVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolDetailVO.java
index 5a6a234..d60fed8 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolDetailVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolDetailVO.java
@@ -1,5 +1,8 @@
package cn.fw.morax.domain.vo.kpi;
+import cn.fw.morax.common.constant.Constant;
+import cn.fw.morax.common.utils.PublicUtil;
+import cn.fw.morax.domain.enums.KpiIgnoreCauseEnum;
import cn.fw.morax.domain.enums.StarLevelEnum;
import lombok.Data;
@@ -47,14 +50,30 @@ public class KpiPoolDetailVO {
*/
private String shopName;
/**
+ * 原来总绩效得分
+ */
+ private BigDecimal originKpiScore;
+ /**
+ * 奖惩绩效分
+ */
+ private BigDecimal rewardScore;
+ /**
+ * 绩效总分
+ */
+ private BigDecimal totalScore;
+ /**
* 绩效得分
*/
private BigDecimal kpiScore;
/**
- * 绩效得分率
+ * 当月绩效得分率
*/
private BigDecimal kpiScoreRatio;
/**
+ * 平均绩效得分率
+ */
+ private BigDecimal averageKpiScoreRatio;
+ /**
* 星级;1: A 2:B 3:C 4:D
*/
private StarLevelEnum starLevel;
@@ -71,6 +90,14 @@ public class KpiPoolDetailVO {
*/
private Boolean inclusion;
/**
+ * 不计入原因;枚举待定
+ */
+ private KpiIgnoreCauseEnum ignoreCause;
+ /**
+ * 不计入原因描述
+ */
+ private String ignoreCauseDesc;
+ /**
* 年份月度
*/
private YearMonth monthly;
@@ -98,4 +125,16 @@ public class KpiPoolDetailVO {
*/
private List kpiValues;
+ /**
+ * 转换为百分数展示
+ */
+ public void convertToPercent(){
+ if (PublicUtil.isNotEmpty(this.getKpiScoreRatio())) {
+ this.setKpiScoreRatio(this.getKpiScoreRatio().multiply(Constant.ONE_HUNDRED));
+ }
+ if (PublicUtil.isNotEmpty(this.getAverageKpiScoreRatio())) {
+ this.setAverageKpiScoreRatio(this.getAverageKpiScoreRatio().multiply(Constant.ONE_HUNDRED));
+ }
+ }
+
}
\ No newline at end of file
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolIndicatorValueVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolIndicatorValueVO.java
index 51ad34c..7b09630 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolIndicatorValueVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolIndicatorValueVO.java
@@ -36,26 +36,34 @@ public class KpiPoolIndicatorValueVO {
*/
private Long userId;
/**
- * 指标编码
- */
- private String indicatorCode;
- /**
* 指标名称
*/
- private String indicatorName;
+ private String name;
+// /**
+// * 指标编码
+// */
+// private String indicatorCode;
+// /**
+// * 指标名称
+// */
+// private String indicatorName;
/**
* 指标基础分值
*/
private BigDecimal baseScore;
- /**
- * 指标业务值
- */
- private BigDecimal indicatorValue;
+// /**
+// * 指标业务值
+// */
+// private BigDecimal indicatorValue;
/**
* 指标得分
*/
private BigDecimal indicatorScore;
/**
+ * 指标得分率
+ */
+ private String indicatorScoreRatio;
+ /**
* 指标得分
*/
private String indicatorScoreFormat;
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolVO.java
index 6d939c6..232cb6c 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolVO.java
@@ -52,7 +52,7 @@ public class KpiPoolVO {
*/
private BigDecimal kpiScore;
/**
- * 绩效得分率
+ * 当月绩效得分率
*/
private BigDecimal kpiScoreRatio;
/**
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiStarLaddersVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiStarLaddersVO.java
index aa05c5e..c3f8d7e 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiStarLaddersVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiStarLaddersVO.java
@@ -1,6 +1,7 @@
package cn.fw.morax.domain.vo.kpi;
import cn.fw.common.data.entity.BaseAuditableTimeEntity;
+import cn.fw.morax.common.constant.Constant;
import cn.fw.morax.domain.enums.StarLevelEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -42,4 +43,13 @@ public class KpiStarLaddersVO {
* 逻辑删除
*/
private Boolean yn;
+
+ /**
+ * 处理百分数
+ */
+ public void processPercent() {
+ this.setUpper(this.getUpper().multiply(Constant.ONE_HUNDRED));
+ this.setLower(this.getLower().multiply(Constant.ONE_HUNDRED));
+ }
+
}
\ No newline at end of file
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/DeductProjectVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/DeductProjectVO.java
index 66ad0af..934f27b 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/DeductProjectVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/DeductProjectVO.java
@@ -15,28 +15,21 @@ import java.math.BigDecimal;
*/
@Data
public class DeductProjectVO {
+
/**
- * 薪酬项id
+ * 薪酬组薪酬项目id
*/
- private Long salaryProjectId;
+ private Long salaryGroupProjectId;
/**
* 薪酬项名称
*/
- private String salaryProjectName;
- /**
- * 薪酬项编码
- */
- private String salaryProjectCode;
- /**
- * 薪酬组薪酬项目id
- */
- private Long salaryProjectGroupId;
+ private String salaryGroupProjectName;
/**
- * 项目类型 1:绩效提成 2:内部奖励 3:内部罚款 4:福利补贴 5:社保扣款 6:试用期工资
+ * 项目类型 1:绩效提成 2:内部奖励 3:内部罚款 4:福利补贴 5:社保扣款 6:试用期工资 7:个税
*/
private SalaryTypeEnum salaryType;
/**
- * 计算方式;1: 星级 2:固定金额 3:阶梯(单) 4:按量 5: 固定提成 6:阶梯(总) 7:动态
+ * 计算方式;1: 星级 2:固定金额 3:阶梯提成 4:车系提成 99:动态
*/
private SalaryCalMethodEnum calMethod;
/**
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/DeductVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/DeductVO.java
index f23bac4..daab2f7 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/DeductVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/DeductVO.java
@@ -13,7 +13,7 @@ import java.util.List;
* @desc : 薪资类型
*/
@Data
-public class DeductVO {
+public class DeductVO implements Comparable{
/**
* 项目类型 1:绩效提成 2:内部奖励 3:内部罚款 4:福利补贴 5:社保扣款 6:试用期工资
@@ -38,4 +38,10 @@ public class DeductVO {
this.salaryTypeAmount = salaryTypeAmount;
this.details = details;
}
+
+ @Override
+ public int compareTo(DeductVO other) {
+ return this.salaryType.getValue().compareTo(other.getSalaryType().getValue());
+ }
+
}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/IncomeCompensationVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/IncomeCompensationVO.java
new file mode 100644
index 0000000..30d187c
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/IncomeCompensationVO.java
@@ -0,0 +1,99 @@
+package cn.fw.morax.domain.vo.salary;
+
+import cn.fw.common.data.mybatis.handler.LongListTypeHandler;
+import cn.fw.common.data.mybatis.handler.StringListTypeHandler;
+import cn.fw.morax.domain.db.salary.IncomeCompensation;
+import cn.fw.morax.domain.enums.SettingStatusEnum;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ *
+ * 收入补偿
+ *
+ *
+ * @author jiangchao
+ * @since 2022-11-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class IncomeCompensationVO {
+
+ /**
+ * id
+ */
+ private Long id;
+
+ /**
+ * 岗位id
+ */
+ private Long postId;
+
+ /**
+ * 岗位名称
+ */
+ private String postName;
+
+ /**
+ * 适用门店ids
+ */
+ private List shopIds;
+
+ /**
+ * 适用门店名称
+ */
+ private List shopNames;
+
+ /**
+ * 多个生效月份
+ */
+ private List months;
+
+ /**
+ * 单人补偿金额
+ */
+ private BigDecimal money;
+
+ /**
+ * 单人最高补偿金额
+ */
+ private BigDecimal maxMoney;
+
+ /**
+ * 状态;1:审批中 3:生效中 4:已失效
+ */
+ private SettingStatusEnum status;
+
+ /**
+ * 集团id
+ */
+ private Long groupId;
+ /**
+ * 逻辑删除
+ */
+ private Boolean yn;
+
+
+ public static IncomeCompensationVO convertVO(IncomeCompensation compensation) {
+ IncomeCompensationVO compensationVO = new IncomeCompensationVO();
+ compensationVO.setId(compensation.getId());
+ compensationVO.setPostId(compensation.getPostId());
+ compensationVO.setPostName(compensation.getPostName());
+ compensationVO.setShopIds(compensation.getShopIds());
+ compensationVO.setShopNames(compensation.getShopNames());
+ compensationVO.setMonths(compensation.getMonths());
+ compensationVO.setMoney(compensation.getMoney());
+ compensationVO.setMaxMoney(compensation.getMaxMoney());
+ compensationVO.setStatus(compensation.getStatus());
+ compensationVO.setGroupId(compensation.getGroupId());
+ compensationVO.setYn(compensation.getYn());
+ return compensationVO;
+ }
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/IncomeProjectVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/IncomeProjectVO.java
index b68dd9c..6cb2df2 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/IncomeProjectVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/IncomeProjectVO.java
@@ -16,27 +16,23 @@ import java.math.BigDecimal;
@Data
public class IncomeProjectVO {
/**
- * 薪酬组薪酬项目id
+ * 是否基础工资
*/
- private Long salaryProjectGroupId;
+ public Boolean baseWage;
/**
- * 薪酬项id
+ * 薪酬组薪酬项目id
*/
- private Long salaryProjectId;
+ private Long salaryGroupProjectId;
/**
* 薪酬项名称
*/
- private String salaryProjectName;
- /**
- * 薪酬项编码
- */
- private String salaryProjectCode;
+ private String salaryGroupProjectName;
/**
- * 项目类型 1:绩效提成 2:内部奖励 3:内部罚款 4:福利补贴 5:社保扣款 6:试用期工资
+ * 项目类型 1:绩效提成 2:内部奖励 3:内部罚款 4:福利补贴 5:社保扣款 6:试用期工资 7:个税
*/
private SalaryTypeEnum salaryType;
/**
- * 计算方式;1: 星级 2:固定金额 3:阶梯(单) 4:按量 5: 固定提成 6:阶梯(总) 7:动态
+ * 计算方式;1: 星级 2:固定金额 3:阶梯提成 4:车系提成 99:动态
*/
private SalaryCalMethodEnum calMethod;
/**
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/IncomeVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/IncomeVO.java
index b29de3c..0998d07 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/IncomeVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/IncomeVO.java
@@ -13,10 +13,10 @@ import java.util.List;
* @desc : 薪资类型
*/
@Data
-public class IncomeVO {
+public class IncomeVO implements Comparable{
/**
- * 项目类型 1:绩效提成 2:内部奖励 3:内部罚款 4:福利补贴 5:社保扣款 6:试用期工资
+ * 项目类型 1:绩效提成 2:内部奖励 3:内部罚款 4:福利补贴 5:社保扣款 6:试用期工资 7:个税
*/
private SalaryTypeEnum salaryType;
@@ -38,4 +38,9 @@ public class IncomeVO {
this.salaryTypeAmount = salaryTypeAmount;
this.details = details;
}
+
+ @Override
+ public int compareTo(IncomeVO other) {
+ return this.salaryType.getValue().compareTo(other.getSalaryType().getValue());
+ }
}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupIndicatorDetailVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupIndicatorDetailVO.java
index 95868f2..bc1a215 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupIndicatorDetailVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupIndicatorDetailVO.java
@@ -1,6 +1,8 @@
package cn.fw.morax.domain.vo.salary;
+import cn.fw.morax.domain.enums.DataTypeEnum;
import cn.fw.morax.domain.enums.SalaryCalMethodEnum;
+import cn.fw.morax.domain.enums.StarLevelEnum;
import cn.fw.morax.domain.vo.kpi.KpiGroupIndicatorLaddersVO;
import lombok.Data;
@@ -36,26 +38,60 @@ public class SalaryGroupIndicatorDetailVO {
private String postName;
/**
- * 薪酬项目编码
- */
- private String salaryProjectCode;
- /**
* 薪酬项目名称
*/
- private String salaryProjectName;
+ private String name;
/**
- * 计算方式;1: 星级 2:固定金额 3:阶梯提成(单) 4:按量 5: 固定提成 6:阶梯提成(总)
+ * 计算方式;1: 星级 2:固定金额 3:阶梯提成 4:车系提成 99:动态
*/
private SalaryCalMethodEnum calMethod;
-
+ /**
+ * 星级
+ */
+ private StarLevelEnum starLevel;
/**
* 薪酬值
*/
private BigDecimal salaryValue;
/**
- * 指标项得分阶梯
+ * 台阶参数别名
+ */
+ public String ladderParamAlias;
+
+ /**
+ * 提成参数别名
+ */
+ public String commissionParamAlias;
+
+ /**
+ * 前置条件别名
+ */
+ public String preconditionAlias;
+
+ /**
+ * 数据类型;1:数量 2:百分比 3:金额
+ */
+ private DataTypeEnum laddersType;
+
+ /**
+ * 薪酬阶梯
*/
private List settings;
+ /**
+ * 台阶参数
+ */
+ private List ladderParams;
+
+ /**
+ * 提成参数
+ */
+ private List commissionParams;
+
+ /**
+ * 条件
+ */
+ private List conds;
+
}
\ No newline at end of file
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupProjectParamVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupProjectParamVO.java
new file mode 100644
index 0000000..ab59928
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupProjectParamVO.java
@@ -0,0 +1,122 @@
+package cn.fw.morax.domain.vo.salary;
+
+import cn.fw.morax.common.constant.Constant;
+import cn.fw.morax.domain.enums.DataTypeEnum;
+import cn.fw.morax.domain.enums.ParamTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 薪酬组薪酬项目参数
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SalaryGroupProjectParamVO {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 薪酬组id
+ */
+ private Long id;
+
+ /**
+ * 薪酬组id
+ */
+ private Long salaryGroupId;
+
+ /**
+ * 薪酬组项目id
+ */
+ private Long salaryGroupProjectId;
+
+ /**
+ * 参数类型(1.台阶,2,提成)
+ */
+ private ParamTypeEnum paramType;
+
+ /**
+ * 指标编码
+ */
+ private String indicatorCode;
+
+ /**
+ * 指标库名称
+ */
+ private String indicatorName;
+
+
+ /**
+ * 目标值类型; 1:无 2:百分比 3:金额 4:台数
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 指标值
+ */
+ private BigDecimal indicatorValue;
+
+ /**
+ * 达成值
+ */
+ private BigDecimal reachValue;
+
+ /**
+ * 数据类型;1:台数 2:百分比 3:金额
+ */
+ private DataTypeEnum dataType;
+
+ /**
+ * 占比
+ */
+ private BigDecimal proportion;
+
+ /**
+ * 是否封顶
+ */
+ private Boolean cap;
+
+ /**
+ * 排序
+ */
+ private Integer sort;
+
+ /**
+ * 是否基础工资
+ */
+ public Boolean baseWage;
+
+ /**
+ * 处理百分数
+ */
+ public void processPercent() {
+ this.setProportion(this.getProportion().multiply(Constant.ONE_HUNDRED));
+ if (TargetTypeEnum.RATIO.equals(this.getTargetType())) {
+ this.setTargetValue(this.getTargetValue().multiply(Constant.ONE_HUNDRED));
+ }
+ }
+
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupProjectPreconditionVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupProjectPreconditionVO.java
new file mode 100644
index 0000000..3ac8586
--- /dev/null
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupProjectPreconditionVO.java
@@ -0,0 +1,121 @@
+package cn.fw.morax.domain.vo.salary;
+
+import cn.fw.morax.common.constant.Constant;
+import cn.fw.morax.common.utils.PublicUtil;
+import cn.fw.morax.domain.enums.DataTypeEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * 薪酬组薪酬项目前置条件
+ *
+ *
+ * @author jiangchao
+ * @since 2022-12-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SalaryGroupProjectPreconditionVO {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * id
+ */
+ private Long id;
+
+ /**
+ * 薪酬组id
+ */
+ private Long salaryGroupId;
+
+ /**
+ * 薪酬组项目id
+ */
+ private Long salaryGroupProjectId;
+
+ /**
+ * 指标编码
+ */
+ private String indicatorCode;
+
+ /**
+ * 指标库名称
+ */
+ private String indicatorName;
+
+
+ /**
+ * 目标值类型; 1:无 2:百分比 3:金额
+ */
+ private TargetTypeEnum targetType;
+
+ /**
+ * 目标计算类型;1: 目标值计算 2:最低要求计算
+ */
+ private TargetCalcTypeEnum targetCalcType;
+
+ /**
+ * 目标值
+ */
+ private BigDecimal targetValue;
+
+ /**
+ * 数据类型;1:数量 2:百分比 3:金额
+ */
+ private DataTypeEnum dataType;
+
+ /**
+ * 条件值
+ */
+ private BigDecimal condValue;
+
+ /**
+ * 指标值
+ */
+ private BigDecimal indicatorValue;
+
+ /**
+ * 达成值
+ */
+ private BigDecimal reachValue;
+
+ /**
+ * 排序
+ */
+ private Integer sort;
+
+ /**
+ * 处理百分数
+ */
+ public void processPercent() {
+ if (TargetTypeEnum.RATIO.equals(this.getTargetType())) {
+ this.setTargetValue(this.getTargetValue().multiply(Constant.ONE_HUNDRED));
+ }
+ if (PublicUtil.isNotEmpty(dataType) && DataTypeEnum.RATIO.equals(dataType)) {
+ this.setIndicatorValue(this.getIndicatorValue().multiply(Constant.ONE_HUNDRED));
+ this.setCondValue(this.getCondValue().multiply(Constant.ONE_HUNDRED));
+ }
+ }
+
+ /**
+ * 处理上报数据百分数
+ */
+ public void processReportPercent() {
+ if (TargetTypeEnum.RATIO.equals(this.getTargetType())) {
+ this.setTargetValue(this.getTargetValue().multiply(Constant.ONE_HUNDRED));
+ }
+ if (PublicUtil.isNotEmpty(dataType) && DataTypeEnum.RATIO.equals(dataType)) {
+ this.setIndicatorValue(this.getIndicatorValue().multiply(Constant.ONE_HUNDRED));
+ this.setCondValue(this.getCondValue().multiply(Constant.ONE_HUNDRED));
+ }
+ }
+
+}
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupProjectSettinVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupProjectSettinVO.java
index a7f3297..b4c78bf 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupProjectSettinVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupProjectSettinVO.java
@@ -1,5 +1,8 @@
package cn.fw.morax.domain.vo.salary;
+import cn.fw.morax.common.constant.Constant;
+import cn.fw.morax.common.utils.PublicUtil;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
import lombok.Data;
import java.math.BigDecimal;
@@ -10,7 +13,7 @@ import java.math.BigDecimal;
* @desc : 薪酬项目配置
*/
@Data
-public class SalaryGroupProjectSettinVO {
+public class SalaryGroupProjectSettinVO implements Comparable{
/**
* 主键id
*/
@@ -38,24 +41,44 @@ public class SalaryGroupProjectSettinVO {
/**
* 阶梯值下限
*/
- private Integer stairMin;
+ private BigDecimal stairMin;
/**
* 阶梯值上限;阶梯值上限
*/
- private Integer stairMax;
+ private BigDecimal stairMax;
/**
* 是否命中
*/
private Boolean hit;
-
/**
- * 业务值 条件计算使用
+ * 薪酬值
+ */
+ private BigDecimal salaryValue;
+ /**
+ * 命中的台阶指标值
*/
- private BigDecimal conditionValue;
+ private BigDecimal hitLadderValue;
+ /**
+ * 命中的提成指标值(车系:车系销售台数)
+ */
+ private BigDecimal hitCommissionValue;
+
+ @Override
+ public int compareTo(SalaryGroupProjectSettinVO other) {
+ if (PublicUtil.isNotEmpty(this.stairMax)) {
+ return this.stairMax.compareTo(other.getStairMax());
+ } else {
+ return this.id.compareTo(other.getId());
+ }
+ }
/**
- * 业务薪酬金额 条件计算使用
+ * 处理百分数
*/
- private BigDecimal conditionSalaryValue;
+ public void processPercent() {
+ this.setStairMin(this.getStairMin().multiply(Constant.ONE_HUNDRED));
+ this.setStairMax(this.getStairMax().multiply(Constant.ONE_HUNDRED));
+ }
+
}
\ No newline at end of file
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupProjectVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupProjectVO.java
index e6af595..2ecc905 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupProjectVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryGroupProjectVO.java
@@ -1,8 +1,15 @@
package cn.fw.morax.domain.vo.salary;
+import cn.fw.morax.domain.dto.salary.SalaryGroupProjectParamDTO;
+import cn.fw.morax.domain.dto.salary.SalaryGroupProjectPreconditionDTO;
+import cn.fw.morax.domain.enums.DataTypeEnum;
import cn.fw.morax.domain.enums.SalaryCalMethodEnum;
+import cn.fw.morax.domain.vo.kpi.KpiGroupIndicatorTargetVO;
import lombok.Data;
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
import java.util.List;
/**
@@ -16,24 +23,37 @@ public class SalaryGroupProjectVO {
* 主键id
*/
private Long id;
+
/**
- * 薪酬组id
+ * 名称
*/
- private Long salaryGroupId;
+ private String name;
+
/**
- * 薪酬项目id
+ * 台阶参数别名
*/
- private Long salaryProjectId;
+ public String ladderParamAlias;
+
/**
- * 薪酬项目编码
+ * 提成参数别名
*/
- private String salaryProjectCode;
+ public String commissionParamAlias;
+
+ /**
+ * 前置条件别名
+ */
+ public String preconditionAlias;
+
+ /**
+ * 薪酬组id
+ */
+ private Long salaryGroupId;
/**
- * 薪酬项目名称
+ * 数据类型;1:数量 2:百分比 3:金额
*/
- private String salaryProjectName;
+ private DataTypeEnum laddersType;
/**
- * 计算方式;1: 星级 2:固定金额 3:阶梯提成(单) 4:按量 5: 固定提成 6:阶梯提成(总)
+ * 计算方式;1: 星级 2:固定金额 3:阶梯提成 4:车系提成 99:动态
*/
private SalaryCalMethodEnum calMethod;
/**
@@ -41,4 +61,24 @@ public class SalaryGroupProjectVO {
*/
private List settings;
+ /**
+ * 台阶参数
+ */
+ private List ladderParams;
+
+ /**
+ * 提成参数
+ */
+ private List commissionParams;
+
+ /**
+ * 条件
+ */
+ private List conds;
+
+ /**
+ * 指标目标
+ */
+ private List targets;
+
}
\ No newline at end of file
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryPoolDetailVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryPoolDetailVO.java
index af85918..2d6f69b 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryPoolDetailVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/SalaryPoolDetailVO.java
@@ -21,21 +21,13 @@ public class SalaryPoolDetailVO {
*/
private Long salaryPoolId;
/**
- * 薪酬项id
- */
- private Long salaryProjectId;
- /**
* 薪酬组薪酬项目id
*/
- private Long salaryProjectGroupId;
+ private Long salaryGroupProjectId;
/**
* 薪酬项名称
*/
- private String salaryProjectName;
- /**
- * 薪酬项编码
- */
- private String salaryProjectCode;
+ private String salaryGroupProjectName;
/**
* 计算方式;1: 星级 2:固定金额 3:阶梯(单) 4:按量 5: 固定提成 6:阶梯(总) 7:动态
*/
diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/StaffSalaryVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/StaffSalaryVO.java
index 17e159e..bc1e0d1 100644
--- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/StaffSalaryVO.java
+++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/StaffSalaryVO.java
@@ -24,10 +24,10 @@ public class StaffSalaryVO {
* 薪酬池id
*/
private Long salaryPoolId;
- /**
- * 薪酬项id
- */
- private Long salaryProjectId;
+// /**
+// * 薪酬项id
+// */
+// private Long salaryProjectId;
/**
* 用户名称
*/
diff --git a/fw-morax-rpc/pom.xml b/fw-morax-rpc/pom.xml
index 74a32bb..7b78ae5 100644
--- a/fw-morax-rpc/pom.xml
+++ b/fw-morax-rpc/pom.xml
@@ -5,7 +5,7 @@
fw-morax
cn.fw
- 1.0.0
+ 2.0.0
../pom.xml
4.0.0
diff --git a/fw-morax-sdk/pom.xml b/fw-morax-sdk/pom.xml
index 0ed650d..9bff49a 100644
--- a/fw-morax-sdk/pom.xml
+++ b/fw-morax-sdk/pom.xml
@@ -5,7 +5,7 @@
fw-morax
cn.fw
- 1.0.0
+ 2.0.0
../pom.xml
4.0.0
@@ -13,7 +13,7 @@
fw-morax-sdk
jar
fw-morax-sdk
- 1.0.0
+ 2.0.0
5.3.6.Final
diff --git a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/api/IKpiReportService.java b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/api/IKpiReportService.java
index 54da3c2..ae7044f 100644
--- a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/api/IKpiReportService.java
+++ b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/api/IKpiReportService.java
@@ -1,11 +1,9 @@
package cn.fw.morax.sdk.api;
import cn.fw.data.base.domain.common.Message;
-import cn.fw.morax.sdk.dto.CustomList;
import cn.fw.morax.sdk.dto.kpi.KpiGroupUserQuery;
import cn.fw.morax.sdk.dto.kpi.KpiGroupUserResult;
import cn.fw.morax.sdk.dto.kpi.KpiPointRewardReq;
-import cn.fw.morax.sdk.dto.kpi.UserIndicatorReq;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.validation.annotation.Validated;
@@ -18,6 +16,7 @@ import java.util.List;
/**
* @author : kurisu
+ * @version : 2.0
* @className : KpiReportApi
* @description : 绩效处理接口
* @date: 2022-04-07 15:35
@@ -29,7 +28,9 @@ public interface IKpiReportService {
*
* @param kpiGroupUserQuery 查询参数
* @return 分组人员
+ * @Deprecated 已过时 此方法不在维护,将在2.1.0移除
*/
+ @Deprecated
@GetMapping("/query/user")
Message> queryKpiGroupUser(@Validated({KpiGroupUserQuery.Query.class}) @SpringQueryMap KpiGroupUserQuery kpiGroupUserQuery);
@@ -38,20 +39,13 @@ public interface IKpiReportService {
*
* @param kpiGroupUserQuery 查询参数
* @return 分组人员
+ * @Deprecated 已过时 此方法不在维护,将在2.1.0移除
*/
+ @Deprecated
@GetMapping("/real-time/query/user")
Message> realTimeQueryKpiGroupUser(@Validated({KpiGroupUserQuery.RealTimeQuery.class}) @SpringQueryMap KpiGroupUserQuery kpiGroupUserQuery);
/**
- * 上报人员绩效数据
- *
- * @param userIndicatorList 人员绩效数据
- * @return void
- */
- @PostMapping("/indicator/report")
- Message indicatorReport(@Valid @RequestBody CustomList userIndicatorList);
-
- /**
* 绩效分奖惩上报
*
* @param kpiPointRewardReq 绩效分奖惩上报数据
diff --git a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/api/ISalaryReportService.java b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/api/ISalaryReportService.java
index 2d72481..dbfd76d 100644
--- a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/api/ISalaryReportService.java
+++ b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/api/ISalaryReportService.java
@@ -1,9 +1,10 @@
package cn.fw.morax.sdk.api;
-import cn.fw.common.web.annotation.ControllerMethod;
import cn.fw.data.base.domain.common.Message;
-import cn.fw.morax.sdk.dto.CustomList;
-import cn.fw.morax.sdk.dto.salary.*;
+import cn.fw.morax.sdk.dto.salary.GeneralSalaryProjectReq;
+import cn.fw.morax.sdk.dto.salary.SalaryGroupUserQuery;
+import cn.fw.morax.sdk.dto.salary.SalaryGroupUserResult;
+import cn.fw.morax.sdk.dto.salary.SalaryRewardReq;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.validation.annotation.Validated;
@@ -22,15 +23,6 @@ import java.util.List;
*/
@FeignClient(value = "fw-morax", path = "/api/morax/salary")
public interface ISalaryReportService {
-
- /**
- * 提成薪酬数据上报
- *
- * @param salaryValueList 提成薪酬数据
- */
- @PostMapping("/push-money/report")
- Message salaryReport(@Valid @RequestBody CustomList salaryValueList);
-
/**
* 奖惩薪资
*
@@ -60,7 +52,7 @@ public interface ISalaryReportService {
* 查询薪酬组人员
*
* @param salaryGroupUserQuery
- * @return 分组人员
+ * @return 分组人员
*/
@GetMapping("/query/user")
Message> querySalaryGroupUser(@Validated({SalaryGroupUserQuery.Query.class}) @SpringQueryMap SalaryGroupUserQuery salaryGroupUserQuery);
@@ -69,7 +61,7 @@ public interface ISalaryReportService {
* 查询集团所有薪酬组人员
*
* @param salaryGroupUserQuery
- * @return 集团所有薪酬组人员
+ * @return 集团所有薪酬组人员
*/
@GetMapping("/query/group-user")
Message queryGroupSalaryUser(@Validated({SalaryGroupUserQuery.GroupQuery.class}) @SpringQueryMap SalaryGroupUserQuery salaryGroupUserQuery);
diff --git a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/api/IndicatorReportService.java b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/api/IndicatorReportService.java
new file mode 100644
index 0000000..fc9852c
--- /dev/null
+++ b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/api/IndicatorReportService.java
@@ -0,0 +1,31 @@
+package cn.fw.morax.sdk.api;
+
+import cn.fw.data.base.domain.common.Message;
+import cn.fw.morax.sdk.dto.CustomList;
+import cn.fw.morax.sdk.dto.common.IndicatorValueReq;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.validation.Valid;
+
+/**
+ * 指标上报类
+ *
+ * @author : kurisu
+ * @version : 2.0
+ * @className : IndicatorReportService
+ * @description : 指标上报类
+ * @date : 2022-12-21 17:23
+ */
+@FeignClient(value = "fw-morax", path = "/api/morax/indicator")
+public interface IndicatorReportService {
+ /**
+ * 上报人员指标数据数据
+ *
+ * @param userIndicatorList 人员指标数据
+ * @return void
+ */
+ @PostMapping("/report/up")
+ Message indicatorReport(@Valid @RequestBody CustomList userIndicatorList);
+}
diff --git a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/common/IndicatorValueDTO.java b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/common/IndicatorValueDTO.java
new file mode 100644
index 0000000..a218de9
--- /dev/null
+++ b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/common/IndicatorValueDTO.java
@@ -0,0 +1,42 @@
+package cn.fw.morax.sdk.dto.common;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * @author : kurisu
+ * @version : 2.0
+ * @className : IndicatorValueDTO
+ * @description : 指标项dto
+ * @date : 2022-12-22 14:32
+ */
+@Data
+public class IndicatorValueDTO {
+ /**
+ * key值
+ * 绩效值类型为{@link IndicatorValueEnum#CONDITION} 的情况填对应关键的id
+ * 其他情况则与指标code保持一致
+ */
+ private String key;
+ /**
+ * 指标对应值
+ * (如果是百分比的情况则使用0.x)
+ * eg. 56.5% 则对应值为 0.565
+ */
+ @NotNull(message = "薪酬项对应值不能为空")
+ private BigDecimal value;
+
+ public IndicatorValueDTO(BigDecimal value) {
+ this.value = value;
+ }
+
+ public IndicatorValueDTO(String key, BigDecimal value) {
+ this.key = key;
+ this.value = value;
+ }
+
+ public IndicatorValueDTO() {
+ }
+}
diff --git a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/salary/SalaryValueEnum.java b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/common/IndicatorValueEnum.java
index 3a3c72e..225e659 100644
--- a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/salary/SalaryValueEnum.java
+++ b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/common/IndicatorValueEnum.java
@@ -1,4 +1,4 @@
-package cn.fw.morax.sdk.dto.salary;
+package cn.fw.morax.sdk.dto.common;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
@@ -7,19 +7,19 @@ import lombok.Getter;
/**
* @author : kurisu
* @version : 1.0
- * @className : SalaryValueEnum
- * @description : 薪酬值类型
+ * @className : IndicatorValueEnum
+ * @description : 指标值类型
* @date : 2022-04-24 14:37
*/
-public enum SalaryValueEnum {
+public enum IndicatorValueEnum {
/**
* 百分比
*/
RATIO(1, "百分比"),
/**
- * 数量
+ * 数量/金额
*/
- QUANTITY(2, "数量"),
+ QUANTITY(2, "数量/金额"),
/**
* 条件值
*/
@@ -36,7 +36,7 @@ public enum SalaryValueEnum {
@Getter
private final String name;
- SalaryValueEnum(final Integer value, final String name) {
+ IndicatorValueEnum(final Integer value, final String name) {
this.value = value;
this.name = name;
}
@@ -45,8 +45,8 @@ public enum SalaryValueEnum {
* 根据枚举值获取枚举对象
*/
@JsonCreator
- public static SalaryValueEnum ofValue(final Integer value) {
- for (final SalaryValueEnum salaryValueEnum : SalaryValueEnum.values()) {
+ public static IndicatorValueEnum ofValue(final Integer value) {
+ for (final IndicatorValueEnum salaryValueEnum : IndicatorValueEnum.values()) {
if (salaryValueEnum.value.equals(value)) {
return salaryValueEnum;
}
@@ -61,7 +61,7 @@ public enum SalaryValueEnum {
*/
@JsonCreator
public static String getNameByVale(final Integer value) {
- for (final SalaryValueEnum salaryValueEnum : SalaryValueEnum.values()) {
+ for (final IndicatorValueEnum salaryValueEnum : IndicatorValueEnum.values()) {
if (salaryValueEnum.value.equals(value)) {
return salaryValueEnum.getName();
}
diff --git a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/common/IndicatorValueReq.java b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/common/IndicatorValueReq.java
new file mode 100644
index 0000000..0109ac0
--- /dev/null
+++ b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/common/IndicatorValueReq.java
@@ -0,0 +1,80 @@
+package cn.fw.morax.sdk.dto.common;
+
+import cn.fw.common.validator.EnumValue;
+import lombok.Data;
+import org.hibernate.validator.constraints.ScriptAssert;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Past;
+import java.util.Date;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * @author : kurisu
+ * @version : 2.0
+ * @className : IndicatorValueReq
+ * @description : 人员绩效指标值
+ * @date : 2022-12-22 09:45
+ */
+@Data
+@ScriptAssert.List({
+ @ScriptAssert(lang = "javascript", script = "_this.checkConditionValue()", message = "指标项key不正确"),
+})
+public class IndicatorValueReq {
+ private static final String regNo = "^[-\\+]?[\\d]*$";
+ /**
+ * 人员id
+ */
+ @NotNull(message = "人员id不能为空")
+ private Long userId;
+ /**
+ * 指标编码
+ */
+ @NotBlank(message = "指标编码不能为空")
+ private String indicatorCode;
+ /**
+ * 指标值类型
+ *
+ * @see IndicatorValueEnum
+ */
+ @NotNull(message = "指标值类型不能为空")
+ @EnumValue(enumClass = IndicatorValueEnum.class, message = "指标值枚举值不正确")
+ private Integer valueType;
+ /**
+ * 指标项
+ */
+ @NotEmpty(message = "指标项不能为空")
+ @Valid
+ private List indicatorValue;
+ /**
+ * 数据日期
+ */
+ @NotNull(message = "数据日期不能为空")
+ @Past(message = "数据日期必须为过去的时间")
+ private Date dataDate;
+ /**
+ * 集团id
+ */
+ @NotNull(message = "集团id不能为空")
+ private Long groupId;
+
+ public boolean checkConditionValue() {
+ if (IndicatorValueEnum.CONDITION.getValue().equals(valueType)) {
+ return indicatorValue.stream().allMatch(r -> isNumber(r.getKey()));
+ }
+ return true;
+ }
+
+ private boolean isNumber(String str) {
+ if (str == null) {
+ return false;
+ }
+ Pattern compile = Pattern.compile(regNo);
+ return compile.matcher(str).matches();
+ }
+}
+
diff --git a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/kpi/KpiGroupUserResult.java b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/kpi/KpiGroupUserResult.java
index cccd461..7cfa17f 100644
--- a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/kpi/KpiGroupUserResult.java
+++ b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/kpi/KpiGroupUserResult.java
@@ -2,7 +2,6 @@ package cn.fw.morax.sdk.dto.kpi;
import lombok.Data;
-import java.math.BigDecimal;
import java.util.List;
/**
@@ -24,14 +23,6 @@ public class KpiGroupUserResult {
private List roleCodeList;
/**
- * 绩效目标值类型; 1:无 2:百分比 3:金额
- */
- private TargetTypeEnum targetType;
- /**
- * 绩效目标值
- */
- private BigDecimal targetValue;
- /**
* @author : kurisu
* @version : 1.0
* @className : SimpleUserData
diff --git a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/kpi/UserIndicatorReq.java b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/kpi/UserIndicatorReq.java
deleted file mode 100644
index bc817e6..0000000
--- a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/kpi/UserIndicatorReq.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package cn.fw.morax.sdk.dto.kpi;
-
-import lombok.*;
-
-import javax.validation.constraints.*;
-import java.math.BigDecimal;
-import java.util.Date;
-
-/**
- * @author : kurisu
- * @version : 1.0
- * @className : UserIndicatorReq
- * @description : 人员绩效指标上报
- * @date : 2022-04-13 16:45
- */
-@Data
-@ToString
-@EqualsAndHashCode
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-public class UserIndicatorReq {
- /**
- * 指标编码
- */
- @NotBlank(message = "指标编码不能为空")
- private String indicatorCode;
- /**
- * 岗位id
- */
- @NotNull(message = "岗位ID不能为空")
- private Long postId;
- /**
- * 人员id
- */
- @NotNull(message = "人员id不能为空")
- private Long userId;
- /**
- * 指标对应值
- * (如果是百分比的情况则使用0.x)
- * eg. 56.5% 则对应值为 0.565
- */
- @DecimalMin(value = "0", message = "指标值必须大于等于0")
- private BigDecimal value;
- /**
- * 门店id
- */
- @NotNull(message = "门店id不能为空")
- private Long shopId;
- /**
- * 数据日期
- */
- @NotNull(message = "数据日期不能为空")
- @Past(message = "数据日期必须为过去的时间")
- private Date dataDate;
- /**
- * 唯一标识
- */
- @NotNull(message = "标识码不能为空")
- @Min(value = 1, message = "标识码不合法")
- private Long uid;
-}
-
diff --git a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/salary/SalaryDataReportReq.java b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/salary/SalaryDataReportReq.java
deleted file mode 100644
index 911732b..0000000
--- a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/salary/SalaryDataReportReq.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package cn.fw.morax.sdk.dto.salary;
-
-import cn.fw.common.validator.EnumValue;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import javax.validation.Valid;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Past;
-import java.util.Date;
-import java.util.List;
-
-/**
- * @author : kurisu
- * @className : SalaryDataReportReq
- * @description : 薪酬数据上报类
- * @date : 2022-04-07 15:29
- */
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-public class SalaryDataReportReq {
- /**
- * 薪酬项编码
- */
- @NotBlank(message = "薪酬项编码不能为空")
- private String salaryProjectCode;
- /**
- * 用户id
- */
- @NotNull(message = "用户id不能为空")
- private Long userId;
- /**
- * 上报日期
- */
- @NotNull(message = "上报日期不能为空")
- @Past(message = "上报日期必须为过去的时间")
- private Date dataDate;
- /**
- * 集团id
- */
- @NotNull(message = "集团id不能为空")
- private Long groupId;
- /**
- * 绩效值类型
- *
- * @see SalaryValueEnum
- */
- @NotNull(message = "绩效值类型不能为空")
- @EnumValue(enumClass = SalaryValueEnum.class, valueMethod = "getValue", message = "绩效值枚举值不正确")
- private Integer valueType;
- /**
- * 薪酬项对应值
- */
- @NotEmpty(message = "薪酬项对应值不能为空")
- @Valid
- private List salaryValue;
-}
diff --git a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/salary/SalaryValueDTO.java b/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/salary/SalaryValueDTO.java
deleted file mode 100644
index 1c50d96..0000000
--- a/fw-morax-sdk/src/main/java/cn/fw/morax/sdk/dto/salary/SalaryValueDTO.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package cn.fw.morax.sdk.dto.salary;
-
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.math.BigDecimal;
-
-/**
- * @author : kurisu
- * @version : 1.0
- * @className : SalaryValueDTO
- * @description : 薪酬项dto
- * @date : 2022-04-24 14:32
- */
-@Data
-public class SalaryValueDTO {
- /**
- * key值
- * 绩效值类型为{@link SalaryValueEnum#CONDITION} 的情况填对应关键的id
- * 其他情况则与薪酬码保持一致
- */
- @NotBlank(message = "薪酬项key值不能为空")
- private String key;
-
- @NotNull(message = "薪酬项对应值不能为空")
- private BigDecimal value;
-}
diff --git a/fw-morax-server/pom.xml b/fw-morax-server/pom.xml
index c856bb1..978db54 100644
--- a/fw-morax-server/pom.xml
+++ b/fw-morax-server/pom.xml
@@ -5,7 +5,7 @@
fw-morax
cn.fw
- 1.0.0
+ 2.0.0
../pom.xml
4.0.0
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/consumer/EhrStaffPostConsumer.java b/fw-morax-server/src/main/java/cn/fw/morax/server/consumer/EhrStaffPostConsumer.java
index 292cd9e..bc343fb 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/consumer/EhrStaffPostConsumer.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/consumer/EhrStaffPostConsumer.java
@@ -11,13 +11,10 @@ import cn.fw.morax.service.biz.kpi.KpiPoolBizService;
import cn.fw.morax.service.data.kpi.KpiGroupService;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -91,9 +88,6 @@ public class EhrStaffPostConsumer implements RocketMQListener {
private final KpiStarSpecialRuleBizService kpiStarSpecialRuleBizService;
+ private final IncomeCompensationBizService incomeCompensationBizService;
private final SalaryGroupBizService salaryGroupBizService;
+ private final EvalGroupDataService evalGroupDataService;
private final KpiGroupBizService kpiGroupBizService;
private final ApprovalBizService approvalBizService;
@@ -69,6 +73,14 @@ public class FlowConsumer implements RocketMQListener {
kpiStarSpecialRuleBizService.approvalKpiStarAdjustment(approvalRecord, result);
break;
}
+ case INCOME_COMPENSATION: {
+ incomeCompensationBizService.approvalCompensationConfig(approvalRecord, result);
+ break;
+ }
+ case EVAL: {
+ evalGroupDataService.approvalEvalConfig(approvalRecord, result);
+ break;
+ }
}
}
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/api/IndicatorReportServiceImpl.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/api/IndicatorReportServiceImpl.java
new file mode 100644
index 0000000..73c14c2
--- /dev/null
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/api/IndicatorReportServiceImpl.java
@@ -0,0 +1,46 @@
+package cn.fw.morax.server.controller.api;
+
+import cn.fw.common.web.annotation.ControllerMethod;
+import cn.fw.data.base.domain.common.Message;
+import cn.fw.morax.sdk.api.IndicatorReportService;
+import cn.fw.morax.sdk.dto.CustomList;
+import cn.fw.morax.sdk.dto.common.IndicatorValueReq;
+import cn.fw.morax.service.biz.kpi.IndicatorBizService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+import static cn.fw.common.businessvalidator.Validator.BV;
+import static cn.fw.morax.common.utils.MessageFormatUtil.MessageFormatTransfer;
+
+/**
+ * @author : kurisu
+ * @version : 2.0
+ * @className : IndicatorReportServiceImpl
+ * @description : 指标上报类
+ * @date : 2022-12-22 10:05
+ */
+@Slf4j
+@RestController
+@Validated
+@RequiredArgsConstructor
+@RequestMapping("/api/morax/indicator")
+public class IndicatorReportServiceImpl implements IndicatorReportService {
+ private final static int MAX_SIZE = 1000;
+ private final IndicatorBizService indicatorBizService;
+
+ @PostMapping("/report/up")
+ @ControllerMethod("上报人员指标数据数据")
+ @Override
+ public Message indicatorReport(@Valid @RequestBody CustomList userIndicatorList) {
+ BV.isTrue(userIndicatorList.size() <= MAX_SIZE, () -> MessageFormatTransfer("最多支持一次性处理{0}条任务", MAX_SIZE));
+ indicatorBizService.reportData(userIndicatorList);
+ return Message.success();
+ }
+}
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/api/KpiReportServiceImpl.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/api/KpiReportServiceImpl.java
index 8143548..f1aa39e 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/api/KpiReportServiceImpl.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/api/KpiReportServiceImpl.java
@@ -3,11 +3,9 @@ package cn.fw.morax.server.controller.api;
import cn.fw.common.web.annotation.ControllerMethod;
import cn.fw.data.base.domain.common.Message;
import cn.fw.morax.sdk.api.IKpiReportService;
-import cn.fw.morax.sdk.dto.CustomList;
import cn.fw.morax.sdk.dto.kpi.KpiGroupUserQuery;
import cn.fw.morax.sdk.dto.kpi.KpiGroupUserResult;
import cn.fw.morax.sdk.dto.kpi.KpiPointRewardReq;
-import cn.fw.morax.sdk.dto.kpi.UserIndicatorReq;
import cn.fw.morax.service.biz.kpi.KpiReportService;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@@ -19,15 +17,13 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
-import static cn.fw.common.businessvalidator.Validator.BV;
import static cn.fw.common.web.util.ResultBuilder.success;
-import static cn.fw.morax.common.utils.MessageFormatUtil.MessageFormatTransfer;
/**
* 绩效上报api
*
* @author : kurisu
- * @version : 1.0
+ * @version : 2.0
* @className : KpiReportServiceImpl
* @description : 绩效上报api
* @date : 2022-04-11 17:21
@@ -44,12 +40,7 @@ public class KpiReportServiceImpl implements IKpiReportService {
private final int maxSize = 1000;
private final KpiReportService kpiReportService;
- /**
- * 查询绩效组人员
- *
- * @param kpiGroupUserQuery 查询参数
- * @return 分组人员
- */
+ @Deprecated
@GetMapping("/query/user")
@Override
@ControllerMethod("查询绩效组人员")
@@ -57,12 +48,7 @@ public class KpiReportServiceImpl implements IKpiReportService {
return success(kpiReportService.getIndicatorUser(kpiGroupUserQuery));
}
- /**
- * 实时查询绩效组人员
- *
- * @param kpiGroupUserQuery 查询参数
- * @return 分组人员
- */
+ @Deprecated
@GetMapping("/real-time/query/user")
@Override
@ControllerMethod("实时查询绩效组人员")
@@ -71,21 +57,6 @@ public class KpiReportServiceImpl implements IKpiReportService {
}
/**
- * 上报人员绩效数据
- *
- * @param userIndicatorList 人员绩效数据
- * @return void
- */
- @PostMapping("/indicator/report")
- @Override
- @ControllerMethod("上报人员绩效数据")
- public Message indicatorReport(@Valid @RequestBody CustomList userIndicatorList) {
- BV.isTrue(userIndicatorList.size() <= getMaxSize(), () -> MessageFormatTransfer("最多支持一次性处理{0}条任务", getMaxSize()));
- kpiReportService.reportKpiData(userIndicatorList);
- return success();
- }
-
- /**
* 绩效分奖惩上报
*
* @param kpiPointRewardReq 绩效分奖惩上报数据
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/api/SalaryReportServiceImpl.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/api/SalaryReportServiceImpl.java
index d116d41..68fca77 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/api/SalaryReportServiceImpl.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/api/SalaryReportServiceImpl.java
@@ -3,10 +3,10 @@ package cn.fw.morax.server.controller.api;
import cn.fw.common.web.annotation.ControllerMethod;
import cn.fw.data.base.domain.common.Message;
import cn.fw.morax.sdk.api.ISalaryReportService;
-import cn.fw.morax.sdk.dto.CustomList;
-import cn.fw.morax.sdk.dto.kpi.KpiGroupUserQuery;
-import cn.fw.morax.sdk.dto.kpi.KpiGroupUserResult;
-import cn.fw.morax.sdk.dto.salary.*;
+import cn.fw.morax.sdk.dto.salary.GeneralSalaryProjectReq;
+import cn.fw.morax.sdk.dto.salary.SalaryGroupUserQuery;
+import cn.fw.morax.sdk.dto.salary.SalaryGroupUserResult;
+import cn.fw.morax.sdk.dto.salary.SalaryRewardReq;
import cn.fw.morax.service.biz.salary.SalaryReportService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -15,7 +15,6 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
-
import java.util.List;
import static cn.fw.common.web.util.ResultBuilder.success;
@@ -40,19 +39,6 @@ public class SalaryReportServiceImpl implements ISalaryReportService {
private final SalaryReportService salaryReportService;
/**
- * 提成薪酬数据上报
- *
- * @param salaryValueList 提成薪酬数据
- */
- @PostMapping("/push-money/report")
- @Override
- @ControllerMethod("提成薪酬数据上报")
- public Message salaryReport(@Valid @RequestBody CustomList salaryValueList) {
- salaryReportService.pushMoneySalaryReport(salaryValueList);
- return success();
- }
-
- /**
* 奖惩薪资
*
* @param salaryRewardReq 薪资项
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/KpiController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/KpiController.java
index 93a197a..868ab53 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/KpiController.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/KpiController.java
@@ -7,13 +7,11 @@ import cn.fw.common.web.auth.LoginAuthBean;
import cn.fw.common.web.auth.annotation.CurrentUser;
import cn.fw.data.base.domain.common.Message;
import cn.fw.morax.common.utils.PublicUtil;
+import cn.fw.morax.domain.dto.kpi.KpiGroupIndicatorRankDTO;
import cn.fw.morax.domain.dto.query.*;
import cn.fw.morax.domain.vo.SelectorVO;
import cn.fw.morax.domain.vo.kpi.*;
-import cn.fw.morax.service.biz.kpi.KpiGroupBizService;
-import cn.fw.morax.service.biz.kpi.KpiGroupUserBizService;
-import cn.fw.morax.service.biz.kpi.KpiPoolBizService;
-import cn.fw.morax.service.biz.kpi.KpiStarSpecialRuleBizService;
+import cn.fw.morax.service.biz.kpi.*;
import cn.fw.security.auth.client.annotation.Authorization;
import cn.fw.security.auth.client.annotation.IgnoreAuth;
import cn.fw.security.auth.client.annotation.IgnoreUserToken;
@@ -46,6 +44,7 @@ import static cn.fw.common.web.util.ResultBuilder.success;
public class KpiController {
private final KpiStarSpecialRuleBizService kpiStarSpecialRuleBizService;
+ private final KpiGroupIndicatorBizService kpiGroupIndicatorBizService;
private final KpiGroupUserBizService kpiGroupUserBizService;
private final KpiPoolBizService kpiPoolBizService;
private final KpiGroupBizService kpiGroupBizService;
@@ -149,7 +148,7 @@ public class KpiController {
if (PublicUtil.isEmpty(yearMonth)) {
yearMonth = YearMonth.now();
}
- return success(kpiPoolBizService.getHitIndicatorLadder(kpiPoolId, kpiGroupIndicatorId, yearMonth));
+ return success(kpiGroupIndicatorBizService.getHitIndicatorLadder(kpiPoolId, kpiGroupIndicatorId, yearMonth));
}
@@ -222,4 +221,19 @@ public class KpiController {
return success(kpiGroupUserBizService.queryShopPostRealTimeStaffs(dto));
}
+ /**
+ * 绩效组指标排名
+ *
+ * @param dto
+ * @return
+ */
+ @GetMapping("/kpi-indicator/rank")
+ @ControllerMethod("绩效组指标排名")
+ public Message queryKpiIndicatorRank(KpiGroupIndicatorRankDTO dto) {
+ if (PublicUtil.isEmpty(dto.getKpiGroupIndicatorParamId()) && PublicUtil.isEmpty(dto.getKpiGroupIndicatorPreconditionId())) {
+ throw new BusinessException("参数错误");
+ }
+ return success(kpiGroupIndicatorBizService.queryKpiIndicatorRank(dto));
+ }
+
}
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/KpiStaffController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/KpiStaffController.java
index e5d818b..dc54632 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/KpiStaffController.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/KpiStaffController.java
@@ -5,15 +5,10 @@ import cn.fw.common.web.auth.LoginAuthBean;
import cn.fw.common.web.auth.annotation.CurrentUser;
import cn.fw.data.base.domain.common.Message;
import cn.fw.morax.common.utils.PublicUtil;
-import cn.fw.morax.domain.db.kpi.KpiStarSpecialRule;
-import cn.fw.morax.domain.dto.KpiStarSpecialRuleDTO;
-import cn.fw.morax.domain.dto.query.SalaryGroupStaffQueryDTO;
-import cn.fw.morax.domain.enums.StarLevelEnum;
+import cn.fw.morax.domain.dto.kpi.KpiStarSpecialRuleDTO;
import cn.fw.morax.domain.vo.kpi.KpiStarSpecialRuleVO;
-import cn.fw.morax.domain.vo.salary.SalaryGroupUserVO;
import cn.fw.morax.domain.vo.salary.StaffSelectVO;
import cn.fw.morax.service.biz.kpi.KpiStarSpecialRuleBizService;
-import cn.fw.morax.service.biz.salary.SalaryGroupUserBizService;
import cn.fw.security.auth.client.annotation.Authorization;
import cn.fw.security.auth.client.annotation.IgnoreAuth;
import cn.fw.security.auth.client.enums.AuthType;
@@ -25,7 +20,6 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import java.time.YearMonth;
import java.util.List;
-import java.util.Map;
import static cn.fw.common.web.util.ResultBuilder.success;
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/SalaryController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/SalaryController.java
index c4df350..5d195eb 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/SalaryController.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/SalaryController.java
@@ -63,7 +63,7 @@ public class SalaryController {
@IgnoreAuth
@ControllerMethod("薪酬池查询")
public Message> salaryPool(SalaryPoolQueryDTO queryDTO) {
- if (PublicUtil.isEmpty(queryDTO.getYearMonth())) {
+ if (PublicUtil.isNotEmpty(queryDTO.getYearMonth())) {
queryDTO.setMonthly(queryDTO.getYearMonth());
}
if (PublicUtil.isEmpty(queryDTO.getMonthly())) {
@@ -90,7 +90,7 @@ public class SalaryController {
/**
* 薪酬池详情查询 [owner]
*
- * @param userId 用户id
+ * @param userId 用户id+
* @param yearMonth 月度
* @return 薪酬池详情
* @ignoreParams userId
@@ -146,7 +146,7 @@ public class SalaryController {
* 薪酬项目阶梯达成详情
*
* @param salaryPoolId 薪酬池id
- * @param salaryProjectId 薪酬项目组id
+ * @param salaryGroupProjectId 薪酬项目组id
* @param yearMonth 月份
* @return
*/
@@ -154,12 +154,12 @@ public class SalaryController {
@IgnoreAuth
@ControllerMethod("薪酬项目阶梯达成详情")
public Message getHitProjectSetting(Long salaryPoolId,
- Long salaryProjectId,
+ Long salaryGroupProjectId,
@RequestParam(required = false) YearMonth yearMonth) {
if (PublicUtil.isEmpty(yearMonth)) {
yearMonth = YearMonth.now();
}
- return success(salaryPoolBizService.getHitProjectSetting(salaryPoolId, salaryProjectId, yearMonth));
+ return success(salaryPoolBizService.getHitProjectSetting(salaryPoolId, salaryGroupProjectId, yearMonth));
}
/**
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalIndicatorController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalIndicatorController.java
new file mode 100644
index 0000000..00d306c
--- /dev/null
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalIndicatorController.java
@@ -0,0 +1,172 @@
+package cn.fw.morax.server.controller.erp;
+
+
+import cn.fw.common.page.AppPage;
+import cn.fw.common.web.annotation.ControllerMethod;
+import cn.fw.common.web.auth.LoginAuthBean;
+import cn.fw.common.web.auth.annotation.CurrentUser;
+import cn.fw.data.base.domain.common.Message;
+import cn.fw.morax.domain.dto.EvalIndicatorDTO;
+import cn.fw.morax.domain.dto.eval.EvalDTO;
+import cn.fw.morax.domain.dto.kpi.IndicatorAbleDTO;
+import cn.fw.morax.domain.dto.query.EvalIndicatorQueryDTO;
+import cn.fw.morax.domain.vo.eval.EvalIndicatorVO;
+import cn.fw.morax.domain.vo.eval.EvalVO;
+import cn.fw.morax.service.biz.eval.EvalGroupBizService;
+import cn.fw.morax.service.biz.eval.EvalGroupDataService;
+import cn.fw.morax.service.biz.eval.EvalIndicatorBizService;
+import cn.fw.security.auth.client.annotation.Authorization;
+import cn.fw.security.auth.client.annotation.IgnoreAuth;
+import cn.fw.security.auth.client.enums.AuthType;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotNull;
+
+import static cn.fw.common.web.util.ResultBuilder.success;
+
+/**
+ * 考评指标
+ *
+ * @author jiangchao
+ * @since 2022-11-09
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Authorization(AuthType.ERP)
+@Validated
+@IgnoreAuth
+@RestController
+@RequestMapping("/erp/eval")
+public class EvalIndicatorController {
+
+ private final EvalGroupBizService evalGroupBizService;
+ private final EvalGroupDataService evalGroupDataService;
+ private final EvalIndicatorBizService evalIndicatorBizService;
+
+ /**
+ * 考评指标列表
+ *
+ * @param dto
+ * @return
+ */
+ @GetMapping("/indicator/page")
+ @ControllerMethod("考评指标列表")
+ public Message> evalIndicatorPage(@Validated EvalIndicatorQueryDTO dto) {
+ return success(evalIndicatorBizService.evalIndicatorPage(dto));
+ }
+
+ /**
+ * 考评指标详情
+ *
+ * @return
+ */
+ @GetMapping("/indicator")
+ @ControllerMethod("考评指标详情")
+ public Message evalIndicatorDetail(@NotNull(message = "考评指标id不能为空") Long id) {
+ return success(evalIndicatorBizService.evalIndicatorDetail(id));
+ }
+
+ /**
+ * 考评指标禁用启用
+ *
+ * @return
+ */
+ @PutMapping("/indicator/enable")
+ @ControllerMethod("考评指标禁用启用")
+ public Message enableIndicator(@Validated @RequestBody IndicatorAbleDTO dto) {
+ evalIndicatorBizService.enableIndicator(dto.getIndicatorId(), dto.getEnable());
+ return success();
+ }
+
+ /**
+ * 保存考评指标
+ *
+ * @param dto 考评指标
+ * @return
+ */
+ @PostMapping("/indicator")
+ @ControllerMethod("保存考评指标")
+ public Message saveEvalIndicator(@Validated @RequestBody EvalIndicatorDTO dto,
+ @CurrentUser LoginAuthBean user) {
+ evalIndicatorBizService.saveEvalIndicator(dto, user);
+ return success();
+ }
+
+ /**
+ * 保存考评
+ *
+ * @param dto 考评
+ * @return
+ */
+ @PostMapping("/group")
+ @ControllerMethod("保存考评")
+ public Message saveEvalGroup(@Validated @RequestBody EvalDTO dto,
+ @CurrentUser LoginAuthBean user) {
+ evalGroupBizService.saveEvalGroup(dto, user);
+ return success();
+ }
+
+ /**
+ * 考评详情
+ *
+ * @param id
+ * @return
+ */
+ @GetMapping("/group")
+ @ControllerMethod("考评详情")
+ public Message evalGroupDetail(@NotNull(message = "考评组id不能为空") Long id) {
+
+ return success(evalGroupBizService.evalDetail(id));
+ }
+
+ /**
+ * 考评删除
+ *
+ * @return
+ */
+ @GetMapping("/group/del")
+ @ControllerMethod("考评删除")
+ public Message delEval(@NotNull(message = "考评id不能为空") Long id) {
+ evalGroupDataService.delEval(id);
+ return success();
+ }
+
+ /**
+ * 保存考评草稿
+ *
+ * @return
+ */
+ @PostMapping("/group/draft")
+ @ControllerMethod("保存考评草稿")
+ public Message saveEvalDraft(@RequestBody EvalDTO dto) {
+ evalGroupDataService.saveEvalDraft(dto);
+ return success();
+ }
+
+ /**
+ * 获取考评草稿
+ *
+ * @return
+ */
+ @GetMapping("/group/draft")
+ @ControllerMethod("获取考评草稿")
+ public Message getEvalDraft(@NotNull(message = "考评id不能为空") Long id) {
+ return success(evalGroupDataService.getEvalDraft(id));
+ }
+
+// /**
+// * 实时查询绩效组人员
+// *
+// * @param dto
+// * @return
+// */
+// @GetMapping("/real-time/staffs")
+// @ControllerMethod("实时查询岗位适用人员")
+// public Message> queryShopPostRealTimeStaffs(@Validated KpiGroupStaffQueryDTO dto) {
+// return success(kpiGroupUserBizService.queryShopPostRealTimeStaffs(dto));
+// }
+
+}
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/IncomeCompensationController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/IncomeCompensationController.java
new file mode 100644
index 0000000..0216913
--- /dev/null
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/IncomeCompensationController.java
@@ -0,0 +1,86 @@
+package cn.fw.morax.server.controller.erp;
+
+
+import cn.fw.common.page.AppPage;
+import cn.fw.common.web.annotation.ControllerMethod;
+import cn.fw.common.web.auth.LoginAuthBean;
+import cn.fw.common.web.auth.annotation.CurrentUser;
+import cn.fw.data.base.domain.common.Message;
+import cn.fw.morax.domain.dto.IncomeCompensationDTO;
+import cn.fw.morax.domain.dto.query.IncomeCompensationQueryDTO;
+import cn.fw.morax.domain.dto.query.KpiGroupQueryDTO;
+import cn.fw.morax.domain.vo.kpi.KpiGroupIndicatorVO;
+import cn.fw.morax.domain.vo.kpi.KpiGroupVO;
+import cn.fw.morax.domain.vo.salary.IncomeCompensationVO;
+import cn.fw.morax.service.biz.kpi.KpiGroupIndicatorBizService;
+import cn.fw.morax.service.biz.salary.IncomeCompensationBizService;
+import cn.fw.morax.service.data.salary.IncomeCompensationService;
+import cn.fw.security.auth.client.annotation.Authorization;
+import cn.fw.security.auth.client.annotation.IgnoreAuth;
+import cn.fw.security.auth.client.enums.AuthType;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotNull;
+
+import static cn.fw.common.web.util.ResultBuilder.success;
+
+/**
+ * 岗位收入补偿
+ *
+ * @author jiangchao
+ * @since 2022-11-09
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Authorization(AuthType.ERP)
+@Validated
+@IgnoreAuth
+@RestController
+@RequestMapping("/erp/compensation")
+public class IncomeCompensationController {
+
+ private final IncomeCompensationBizService incomeCompensationBizService;
+ private final IncomeCompensationService incomeCompensationService;
+
+ /**
+ * 岗位最低收入补偿
+ *
+ * @param dto
+ * @return
+ */
+ @GetMapping("/income-compensation/page")
+ @ControllerMethod("岗位最低收入补偿列表")
+ public Message> incomeCompensationPage(@Validated IncomeCompensationQueryDTO dto) {
+ return success(incomeCompensationBizService.incomeCompensationPage(dto));
+ }
+
+ /**
+ * 岗位最低收入补偿详情
+ *
+ * @return
+ */
+ @GetMapping("/income-compensation")
+ @ControllerMethod("绩效组详情")
+ public Message incomeCompensationDetail(@NotNull(message = "岗位最低收入补偿id不能为空") Long id) {
+ return success(incomeCompensationBizService.incomeCompensationDetail(id));
+ }
+
+ /**
+ * 保存岗位最低收入补偿
+ *
+ * @param dto 岗位最低收入补偿
+ * @return
+ */
+ @PostMapping("/income-compensation")
+ @ControllerMethod("保存岗位最低收入补偿")
+ public Message saveIncomeCompensation(@Validated @RequestBody IncomeCompensationDTO dto,
+ @CurrentUser LoginAuthBean user) {
+ incomeCompensationBizService.saveIncomeCompensation(dto, user);
+ return success();
+ }
+
+
+}
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiConfigController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiConfigController.java
index 8f359be..d140adc 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiConfigController.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiConfigController.java
@@ -5,14 +5,15 @@ import cn.fw.common.web.annotation.ControllerMethod;
import cn.fw.common.web.auth.LoginAuthBean;
import cn.fw.common.web.auth.annotation.CurrentUser;
import cn.fw.data.base.domain.common.Message;
-import cn.fw.morax.domain.dto.IndicatorAbleDTO;
-import cn.fw.morax.domain.dto.IndicatorsDTO;
-import cn.fw.morax.domain.dto.KpiGroupDTO;
-import cn.fw.morax.domain.dto.KpiStarRuleDTO;
+import cn.fw.morax.domain.dto.kpi.IndicatorAbleDTO;
+import cn.fw.morax.domain.dto.kpi.IndicatorsDTO;
+import cn.fw.morax.domain.dto.kpi.KpiGroupDTO;
+import cn.fw.morax.domain.dto.kpi.KpiStarRuleDTO;
import cn.fw.morax.domain.dto.query.IndicatorQueryDTO;
import cn.fw.morax.domain.dto.query.KpiGroupQueryDTO;
import cn.fw.morax.domain.dto.query.KpiGroupStaffQueryDTO;
import cn.fw.morax.domain.dto.query.KpiGroupUserPageDTO;
+import cn.fw.morax.domain.enums.ApplicableTypeEnum;
import cn.fw.morax.domain.vo.kpi.*;
import cn.fw.morax.service.biz.kpi.*;
import cn.fw.security.auth.client.annotation.Authorization;
@@ -28,6 +29,7 @@ import javax.validation.constraints.NotNull;
import java.util.List;
+import static cn.fw.common.businessvalidator.Validator.BV;
import static cn.fw.common.web.util.ResultBuilder.success;
/**
@@ -86,6 +88,7 @@ public class KpiConfigController {
return success(kpiGroupBizService.saveKpi(dto, currentUser));
}
+
/**
* 指标详情
*
@@ -157,8 +160,11 @@ public class KpiConfigController {
@GetMapping("/post/indicator")
@ControllerMethod("获取岗位下的绩效组指标")
public Message> getPostIndicators(@NotNull(message = "岗位id不能为空") Long postId,
+ @NotNull(message = "适用范围类型不能为空") Integer applicableType,
@NotBlank(message = "适用门店不能为空") String shopIds) {
- return success(indicatorBizService.getPostIndicators(postId, shopIds));
+ ApplicableTypeEnum applicableTypeEnum = ApplicableTypeEnum.ofValue(applicableType);
+ BV.notNull(applicableTypeEnum, "适用范围类型不能为空");
+ return success(indicatorBizService.getPostIndicators(postId, shopIds, applicableTypeEnum));
}
/**
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiDebugController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiDebugController.java
index c3482ed..b379456 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiDebugController.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiDebugController.java
@@ -2,39 +2,31 @@ package cn.fw.morax.server.controller.erp;
import cn.fw.common.web.annotation.ControllerMethod;
import cn.fw.data.base.domain.common.Message;
-import cn.fw.morax.common.pojo.event.KpiStarAdjustmentEvent;
-import cn.fw.morax.common.utils.EventBusUtil;
import cn.fw.morax.common.utils.PublicUtil;
import cn.fw.morax.domain.bo.kpi.KpiGroupCalculableBO;
import cn.fw.morax.domain.db.kpi.KpiGroupUser;
-import cn.fw.morax.domain.db.kpi.KpiIndicatorHitLog;
import cn.fw.morax.domain.db.kpi.KpiPool;
-import cn.fw.morax.domain.db.kpi.KpiPoolIndicatorValue;
+import cn.fw.morax.domain.dto.kpi.UserIndicatorDTO;
import cn.fw.morax.domain.enums.KpiIgnoreCauseEnum;
-import cn.fw.morax.domain.enums.StarLevelEnum;
-import cn.fw.morax.domain.vo.kpi.KpiGroupIndicatorVO;
-import cn.fw.morax.domain.vo.kpi.KpiGroupVO;
import cn.fw.morax.rpc.ehr.EhrRpcService;
import cn.fw.morax.rpc.ehr.dto.StaffBaseInfoDTO;
import cn.fw.morax.service.biz.CommonService;
-import cn.fw.morax.service.biz.kpi.*;
-import cn.fw.morax.service.data.kpi.*;
+import cn.fw.morax.service.biz.kpi.IndicatorBizService;
+import cn.fw.morax.service.biz.kpi.KpiCalculateService;
+import cn.fw.morax.service.biz.kpi.KpiPoolBizService;
+import cn.fw.morax.service.data.kpi.KpiGroupUserService;
+import cn.fw.morax.service.data.kpi.KpiPoolService;
import cn.fw.security.auth.client.annotation.Authorization;
import cn.fw.security.auth.client.enums.AuthType;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
-import java.math.BigDecimal;
+import javax.validation.Valid;
import java.time.LocalDate;
import java.time.YearMonth;
-import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -56,49 +48,22 @@ import static cn.fw.common.web.util.ResultBuilder.success;
@Validated
@RequestMapping("/debug/kpi")
public class KpiDebugController {
- private final KpiReportService kpiReportService;
private final KpiCalculateService kpiCalculateService;
private final KpiPoolBizService kpiPoolBizService;
- private final KpiGroupService kpiGroupService;
private final CommonService commonService;
- private final KpiGroupBizService kpiGroupBizService;
- private final KpiGroupDataService kpiGroupDataService;
private final KpiGroupUserService kpiGroupUserService;
private final KpiPoolService kpiPoolService;
- private final KpiPoolIndicatorValueService kpiPoolIndicatorValueService;
- private final KpiIndicatorHitLogService kpiIndicatorHitLogService;
-
-
- @GetMapping("/indicator/start-task")
- @ControllerMethod("手动开启指标上报task")
- public Message startTask() {
- EventBusUtil.asyncPost(KpiStarAdjustmentEvent.builder()
- .userId(1L)
- .yearMonth(YearMonth.from(YearMonth.now().minusMonths(-2L)))
- .build());
- // kpiReportService.sendNotice();
- return success();
- }
+ private final IndicatorBizService indicatorBizService;
- @GetMapping("/indicator/report")
- @ControllerMethod("发送指标上报mq")
- public Message sendReportIndicator(@RequestParam("indicatorCode") String indicatorCode,
- @RequestParam("postId") Long postId,
- @RequestParam("postName") String postName,
- @RequestParam("groupId") Long groupId,
- @RequestParam("reportDate") LocalDate reportDate) {
- kpiReportService.sendNotice(indicatorCode, postId, postName, groupId, reportDate);
- return success();
- }
- @GetMapping("/indicator/report-task")
- @ControllerMethod("发送指标上报mq")
- public Message sendReportIndicator() {
- kpiReportService.sendNotice();
+ @PostMapping("/indicator/report/up")
+ @ControllerMethod("手动上报简单指标数据")
+ public Message reportIndicator(@Valid @RequestBody UserIndicatorDTO dto) {
+ indicatorBizService.reportData(dto);
return success();
}
- @GetMapping("/indicator/calc/score")
+ @PutMapping("/indicator/calc/score")
@ControllerMethod("计算绩效得分")
public Message calcScore(@RequestParam("kpiGroupId") Long kpiGroupId,
@RequestParam("date") LocalDate localDate) {
@@ -106,24 +71,24 @@ public class KpiDebugController {
return success();
}
- @GetMapping("/indicator/calc/score-rate")
- @ControllerMethod("计算绩效得分率")
+ @PutMapping("/indicator/calc/score-rate")
+ @ControllerMethod("手动计算绩效得分率")
public Message calcRate(@RequestParam("kpiGroupId") Long kpiGroupId,
@RequestParam("date") LocalDate localDate) {
kpiPoolBizService.calcuScoringRate(new KpiGroupCalculableBO(kpiGroupId, localDate));
return success();
}
-// @GetMapping("/calc/star")
-// @ControllerMethod("计算绩效星级")
-// public Message calcLevel(@RequestParam("kpiGroupId") Long kpiGroupId,
-// @RequestParam("date") LocalDate localDate) {
-// kpiPoolBizService.calcuStarLevel(new KpiGroupCalculableRankBO(kpiGroupId, localDate));
-// return success();
-// }
+ @PutMapping("/indicator/calc/star")
+ @ControllerMethod("手动计算绩效排名和星级")
+ public Message calcLevel(@RequestParam("kpiGroupId") Long kpiGroupId,
+ @RequestParam("date") LocalDate localDate) {
+ kpiPoolBizService.cacheCalculableKpiGroupRank(kpiGroupId, localDate);
+ return success();
+ }
- @GetMapping("/indicator/calc/rank")
- @ControllerMethod("计算绩效排名")
+ @PutMapping("/indicator/calc/rank")
+ @ControllerMethod("手动计算绩效排名")
public Message calcLevel(@RequestParam("shopId") Long shopId,
@RequestParam("postId") Long postId) {
List poolList = kpiPoolService.list(Wrappers.lambdaQuery()
@@ -144,6 +109,7 @@ public class KpiDebugController {
}
private final EhrRpcService ehrRpcService;
+
@GetMapping("/manage-staff1")
@ControllerMethod("查询管理员工")
public Message> initKgc1(Long userId) {
@@ -154,14 +120,13 @@ public class KpiDebugController {
@GetMapping("/probation-user")
@ControllerMethod("处理试用期员工")
public Message probationUser() {
-
List userList = kpiGroupUserService.list(Wrappers.lambdaQuery()
.eq(KpiGroupUser::getDataDate, LocalDate.now().minusDays(2))
.eq(KpiGroupUser::getIgnored, Boolean.TRUE)
.eq(KpiGroupUser::getIgnoreCause, KpiIgnoreCauseEnum.PROBATION)
.eq(KpiGroupUser::getYn, Boolean.TRUE)
);
- if (PublicUtil.isEmpty(userList)){
+ if (PublicUtil.isEmpty(userList)) {
return success();
}
@@ -175,77 +140,4 @@ public class KpiDebugController {
return success();
}
- /**
- * 生成绩效池相关数据
- *
- * @return 薪酬组
- * @ignoreParams user
- */
- @GetMapping("/generate/kpi-data")
- @ControllerMethod("生成绩效池相关数据")
- public Message generateKpiData(Long userId, Long groupId, String userName, Long kpiGroupId) {
- KpiGroupVO kpiGroup = kpiGroupBizService.kpiGroupDetail(kpiGroupId);
- if (PublicUtil.isEmpty(userId)) {
- userId = 760L;
- groupId = 2L;
- }
- YearMonth yearMonth = YearMonth.now();
- LocalDate localDate = LocalDate.now();
- KpiPool kpiPool = kpiPoolService.getOne(Wrappers.lambdaQuery()
- .eq(KpiPool::getKpiGroupId, kpiGroupId)
- .eq(KpiPool::getUserId, userId)
- .eq(KpiPool::getMonthly, yearMonth));
- if (PublicUtil.isEmpty(kpiPool)) {
- kpiPool = new KpiPool();
- kpiPool.setKpiGroupId(kpiGroupId);
- kpiPool.setUserId(userId);
- kpiPool.setUserName(userName);
- kpiPool.setPostId(kpiGroup.getPostId());
- kpiPool.setPostName(kpiGroup.getPostName());
- kpiPool.setShopId(kpiGroup.getShopIds().get(0));
- kpiPool.setShopName(kpiGroup.getShopNames().get(0));
- kpiPool.setKpiScore(new BigDecimal(20));
- kpiPool.setKpiScoreRatio(new BigDecimal(20));
- kpiPool.setStarLevel(StarLevelEnum.D);
- kpiPool.setActualStar(StarLevelEnum.D);
- kpiPool.setRevoked(Boolean.FALSE);
- kpiPool.setInclusion(Boolean.TRUE);
- kpiPool.setMonthly(yearMonth);
- kpiPool.setRegular(Boolean.FALSE);
- kpiPool.setGroupId(groupId);
- kpiPoolService.save(kpiPool);
- }
- Long kpiPoolId = kpiPool.getId();
-
- List indicatorValues = Lists.newArrayList();
- List indicatorHitLogs = Lists.newArrayList();
- for (KpiGroupIndicatorVO indicatorVO : kpiGroup.getIndicators()) {
- KpiPoolIndicatorValue kpiPoolIndicatorValue = new KpiPoolIndicatorValue();
- kpiPoolIndicatorValue.setKpiPoolId(kpiPoolId);
- kpiPoolIndicatorValue.setUserId(userId);
- kpiPoolIndicatorValue.setIndicatorCode(indicatorVO.getIndicatorCode());
- kpiPoolIndicatorValue.setIndicatorValue(new BigDecimal(10));
- kpiPoolIndicatorValue.setIndicatorScore(new BigDecimal(10));
- kpiPoolIndicatorValue.setDataDate(localDate);
- kpiPoolIndicatorValue.setMqLogId(1L);
- kpiPoolIndicatorValue.setGroupId(groupId);
- indicatorValues.add(kpiPoolIndicatorValue);
-
- if (PublicUtil.isNotEmpty(indicatorVO.getIndicatorLadders())) {
- KpiIndicatorHitLog kpiIndicatorHitLog = new KpiIndicatorHitLog();
- kpiIndicatorHitLog.setKpiPoolId(kpiPoolId);
- kpiIndicatorHitLog.setKpiGroupIndicatorId(indicatorVO.getId());
- kpiIndicatorHitLog.setKpiGroupIndicatorLaddersId(indicatorVO.getIndicatorLadders().get(0).getId());
- kpiIndicatorHitLog.setKpiValue(new BigDecimal(10));
- kpiIndicatorHitLog.setDataDate(localDate);
- kpiIndicatorHitLog.setGroupId(groupId);
- indicatorHitLogs.add(kpiIndicatorHitLog);
- }
- }
-
- kpiPoolIndicatorValueService.saveBatch(indicatorValues);
- kpiIndicatorHitLogService.saveBatch(indicatorHitLogs);
- return success();
- }
-
}
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiGroupRankController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiGroupRankController.java
index 6748de1..c6bc3ed 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiGroupRankController.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiGroupRankController.java
@@ -5,7 +5,7 @@ import cn.fw.common.web.annotation.ControllerMethod;
import cn.fw.common.web.auth.LoginAuthBean;
import cn.fw.common.web.auth.annotation.CurrentUser;
import cn.fw.data.base.domain.common.Message;
-import cn.fw.morax.domain.dto.*;
+import cn.fw.morax.domain.dto.kpi.KpiGroupRankDto;
import cn.fw.morax.domain.dto.query.*;
import cn.fw.morax.domain.vo.kpi.*;
import cn.fw.morax.service.biz.kpi.*;
@@ -17,7 +17,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
-import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiTaskController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiTaskController.java
index 27f5d4f..a758179 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiTaskController.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiTaskController.java
@@ -181,7 +181,7 @@ public class KpiTaskController {
@GetMapping("/kpi-mp")
@ControllerMethod("发送业务上报mq通知")
public Message sendKpiNotice() {
- kpiCalcTask.sendNotice();
+// kpiCalcTask.sendNotice();
return success();
}
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryCommonSettingController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryCommonSettingController.java
index 13330e8..e146956 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryCommonSettingController.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryCommonSettingController.java
@@ -4,7 +4,7 @@ import cn.fw.common.web.annotation.ControllerMethod;
import cn.fw.common.web.auth.LoginAuthBean;
import cn.fw.common.web.auth.annotation.CurrentUser;
import cn.fw.data.base.domain.common.Message;
-import cn.fw.morax.domain.dto.SalaryGeneralSettinDTO;
+import cn.fw.morax.domain.dto.salary.SalaryGeneralSettinDTO;
import cn.fw.morax.domain.vo.salary.SalaryGeneralSettinVO;
import cn.fw.morax.service.biz.salary.SalaryGeneralSettinBizService;
import cn.fw.security.auth.client.annotation.Authorization;
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryConfirmController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryConfirmController.java
index adee98b..bb17927 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryConfirmController.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryConfirmController.java
@@ -6,13 +6,9 @@ import cn.fw.common.web.auth.LoginAuthBean;
import cn.fw.common.web.auth.annotation.CurrentUser;
import cn.fw.data.base.domain.common.Message;
import cn.fw.morax.common.utils.PublicUtil;
-import cn.fw.morax.domain.dto.SalaryGroupDTO;
import cn.fw.morax.domain.dto.query.*;
import cn.fw.morax.domain.vo.salary.*;
-import cn.fw.morax.service.biz.salary.SalaryGroupBizService;
-import cn.fw.morax.service.biz.salary.SalaryGroupUserBizService;
import cn.fw.morax.service.biz.salary.SalaryPoolBizService;
-import cn.fw.morax.service.biz.salary.SalaryProjectBizService;
import cn.fw.security.auth.client.annotation.Authorization;
import cn.fw.security.auth.client.annotation.IgnoreAuth;
import cn.fw.security.auth.client.enums.AuthType;
@@ -23,10 +19,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
import java.time.YearMonth;
-import java.util.List;
import static cn.fw.common.web.util.ResultBuilder.success;
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryDebugController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryDebugController.java
index ef9c0e2..91d91a5 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryDebugController.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryDebugController.java
@@ -1,45 +1,42 @@
package cn.fw.morax.server.controller.erp;
import cn.fw.common.web.annotation.ControllerMethod;
-import cn.fw.common.web.auth.LoginAuthBean;
-import cn.fw.common.web.auth.annotation.CurrentUser;
import cn.fw.data.base.domain.common.Message;
import cn.fw.morax.common.constant.Constant;
import cn.fw.morax.common.pojo.event.PaySalaryEvent;
import cn.fw.morax.common.utils.EventBusUtil;
import cn.fw.morax.common.utils.PublicUtil;
import cn.fw.morax.domain.bo.salary.SalaryGroupCalculableBO;
-import cn.fw.morax.domain.db.salary.*;
+import cn.fw.morax.domain.db.salary.SalaryExtraProject;
+import cn.fw.morax.domain.db.salary.SalaryGroup;
+import cn.fw.morax.domain.db.salary.SalaryPool;
import cn.fw.morax.domain.dto.query.SalaryGroupRepeatQueryDTO;
-import cn.fw.morax.domain.dto.query.StaffSalaryQueryDTO;
-import cn.fw.morax.domain.enums.SalaryTypeEnum;
-import cn.fw.morax.domain.enums.StarLevelEnum;
-import cn.fw.morax.domain.vo.salary.SalaryGroupProjectVO;
import cn.fw.morax.domain.vo.salary.SalaryGroupVO;
import cn.fw.morax.domain.vo.salary.StaffSalaryDetailVO;
import cn.fw.morax.rpc.erp.ErpRpcService;
import cn.fw.morax.server.consumer.OopAlterShopConsumer;
-import cn.fw.morax.server.task.PayoffTask;
-import cn.fw.morax.service.biz.salary.*;
-import cn.fw.morax.service.data.salary.*;
+import cn.fw.morax.service.biz.salary.SalaryCalcService;
+import cn.fw.morax.service.biz.salary.SalaryConfirmBizService;
+import cn.fw.morax.service.biz.salary.SalaryGroupUserBizService;
+import cn.fw.morax.service.biz.salary.SalaryPoolBizService;
+import cn.fw.morax.service.data.salary.SalaryExtraProjectService;
+import cn.fw.morax.service.data.salary.SalaryGroupService;
+import cn.fw.morax.service.data.salary.SalaryPoolService;
import cn.fw.oop.sdk.dto.AlterShopEvent;
import cn.fw.security.auth.client.annotation.Authorization;
import cn.fw.security.auth.client.annotation.IgnoreUserToken;
import cn.fw.security.auth.client.enums.AuthType;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
-import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.YearMonth;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import java.util.function.Function;
import java.util.stream.Collectors;
import static cn.fw.common.web.util.ResultBuilder.success;
@@ -60,15 +57,10 @@ import static cn.fw.common.web.util.ResultBuilder.success;
@RequestMapping("/debug/salary")
public class SalaryDebugController {
private final SalaryGroupUserBizService salaryGroupUserBizService;
- private final SalaryGroupBizService salaryGroupBizService;
private final SalaryPoolBizService salaryPoolBizService;
private final SalaryPoolService salaryPoolService;
- private final SalaryPoolDetailService salaryPoolDetailService;
- private final SalaryProjectHitLogService salaryProjectHitLogService;
private final SalaryGroupService salaryGroupService;
private final SalaryCalcService salaryCalcService;
- private final PayoffBizService payoffBizService;
- private final SalaryGroupDataService salaryGroupDataService;
private final SalaryConfirmBizService salaryConfirmBizService;
private final SalaryExtraProjectService salaryExtraProjectService;
private final ErpRpcService erpRpcService;
@@ -230,123 +222,116 @@ public class SalaryDebugController {
return success();
}
-// @GetMapping("/init-sgc")
-// @ControllerMethod("初始化薪酬组编码")
-// public Message initSgc() {
-// salaryGroupDataService.initSgc();
-// return success();
-// }
-
/**
* 生成薪酬池相关数据
*
* @return 薪酬组
* @ignoreParams user
*/
- @GetMapping("/generate/salary-data")
- @ControllerMethod("生成薪酬池相关数据")
- public Message generateSalaryData(Long userId, Long groupId, String userName, Long salaryGroupId,
- @RequestParam(required = false) YearMonth yearMonth) {
-
- SalaryGroupVO salaryGroup = salaryGroupBizService.getSalaryGroupDetail(salaryGroupId);
- LocalDate localDate;
- if (PublicUtil.isEmpty(yearMonth)) {
- yearMonth = YearMonth.now();
- localDate = LocalDate.now();
- } else {
- localDate = yearMonth.atEndOfMonth();
- }
-
- SalaryPool salaryPool = salaryPoolService.getOne(Wrappers.lambdaQuery()
- .eq(SalaryPool::getSalaryGroupId, salaryGroupId)
- .eq(SalaryPool::getUserId, userId)
- .eq(SalaryPool::getMonthly, yearMonth));
- if (PublicUtil.isEmpty(salaryPool)) {
- salaryPool = new SalaryPool();
- salaryPool.setSalaryGroupId(salaryGroupId);
- salaryPool.setUserId(userId);
- salaryPool.setUserName(userName);
- salaryPool.setPostId(salaryGroup.getPostId());
- salaryPool.setPostName(salaryGroup.getPostName());
- salaryPool.setShopId(salaryGroup.getShopIds().get(0));
- salaryPool.setShopName(salaryGroup.getShopNames().get(0));
- salaryPool.setReward(new BigDecimal(20));
- salaryPool.setStarLevel(StarLevelEnum.D);
- salaryPool.setPaid(Boolean.FALSE);
- salaryPool.setMonthly(yearMonth);
- salaryPool.setRegular(Boolean.FALSE);
- salaryPool.setGroupId(groupId);
- salaryPoolService.save(salaryPool);
- }
- Long salaryPoolId = salaryPool.getId();
-
- BigDecimal wages = BigDecimal.ZERO;
- List salaryPoolDetails = Lists.newArrayList();
- List hitLogs = Lists.newArrayList();
- for (SalaryGroupProjectVO groupProjectVO : salaryGroup.getProjects()) {
- SalaryPoolDetail poolDetail = new SalaryPoolDetail();
- poolDetail.setSalaryPoolId(salaryPoolId);
- poolDetail.setSalaryProjectId(groupProjectVO.getSalaryProjectId());
- poolDetail.setSalaryProjectName(groupProjectVO.getSalaryProjectName());
- poolDetail.setType(SalaryTypeEnum.ROYALTIES);
- poolDetail.setSalaryAmount(new BigDecimal(1000));
- poolDetail.setProcessedAmount(new BigDecimal(0));
- poolDetail.setActualSalaryAmount(new BigDecimal(1000));
- poolDetail.setSalaryDate(localDate);
- poolDetail.setGroupId(groupId);
- wages = wages.add(poolDetail.getActualSalaryAmount());
- salaryPoolDetails.add(poolDetail);
-
- if (PublicUtil.isNotEmpty(groupProjectVO.getSettings())) {
- SalaryProjectHitLog hitLog = new SalaryProjectHitLog();
- hitLog.setSalaryPoolId(salaryPoolId);
- hitLog.setSalaryProjectId(groupProjectVO.getSalaryProjectId());
- hitLog.setSalaryGroupProjectSettinId(groupProjectVO.getSettings().get(0).getId());
- hitLog.setSalaryValue(new BigDecimal(20));
- hitLog.setDataDate(localDate);
- hitLog.setGroupId(groupId);
- hitLogs.add(hitLog);
- }
- }
-
- for (SalaryTypeEnum salaryTypeEnum : SalaryTypeEnum.values()) {
- if (SalaryTypeEnum.ROYALTIES.equals(salaryTypeEnum) || SalaryTypeEnum.PROBATION.equals(salaryTypeEnum)) {
- continue;
- }
- SalaryPoolDetail poolDetail = new SalaryPoolDetail();
- poolDetail.setSalaryPoolId(salaryPoolId);
- poolDetail.setSalaryProjectId(null);
- poolDetail.setSalaryProjectName(salaryTypeEnum.getName());
- poolDetail.setType(salaryTypeEnum);
- poolDetail.setSalaryAmount(new BigDecimal(1000));
- poolDetail.setActualSalaryAmount(new BigDecimal(1000));
- if (SalaryTypeEnum.NECESSARY.equals(salaryTypeEnum)) {
- poolDetail.setProcessedAmount(new BigDecimal(1000));
- } else if (SalaryTypeEnum.AWARD.equals(salaryTypeEnum)) {
- poolDetail.setProcessedAmount(new BigDecimal(200));
- } else if (SalaryTypeEnum.PENALTY.equals(salaryTypeEnum)) {
- poolDetail.setProcessedAmount(new BigDecimal(100));
- } else if (SalaryTypeEnum.SUBSIDY.equals(salaryTypeEnum)) {
- poolDetail.setProcessedAmount(new BigDecimal(0));
- } else if (SalaryTypeEnum.PERSON_TAX.equals(salaryTypeEnum)) {
- poolDetail.setProcessedAmount(new BigDecimal(0));
- }
- poolDetail.setActualSalaryAmount(poolDetail.getSalaryAmount().subtract(poolDetail.getProcessedAmount()));
- poolDetail.setSalaryDate(localDate);
- poolDetail.setGroupId(groupId);
- salaryPoolDetails.add(poolDetail);
- if (salaryTypeEnum.isPlus()) {
- wages = wages.add(poolDetail.getActualSalaryAmount());
- } else {
- wages = wages.subtract(poolDetail.getActualSalaryAmount());
- }
- }
- salaryPoolDetailService.saveBatch(salaryPoolDetails);
- salaryProjectHitLogService.saveBatch(hitLogs);
-
- salaryPool.setReward(wages);
- salaryPoolService.saveOrUpdate(salaryPool);
- return success();
- }
+// @GetMapping("/generate/salary-data")
+// @ControllerMethod("生成薪酬池相关数据")
+// public Message generateSalaryData(Long userId, Long groupId, String userName, Long salaryGroupId,
+// @RequestParam(required = false) YearMonth yearMonth) {
+//
+// SalaryGroupVO salaryGroup = salaryGroupBizService.getSalaryGroupDetail(salaryGroupId);
+// LocalDate localDate;
+// if (PublicUtil.isEmpty(yearMonth)) {
+// yearMonth = YearMonth.now();
+// localDate = LocalDate.now();
+// } else {
+// localDate = yearMonth.atEndOfMonth();
+// }
+//
+// SalaryPool salaryPool = salaryPoolService.getOne(Wrappers.lambdaQuery()
+// .eq(SalaryPool::getSalaryGroupId, salaryGroupId)
+// .eq(SalaryPool::getUserId, userId)
+// .eq(SalaryPool::getMonthly, yearMonth));
+// if (PublicUtil.isEmpty(salaryPool)) {
+// salaryPool = new SalaryPool();
+// salaryPool.setSalaryGroupId(salaryGroupId);
+// salaryPool.setUserId(userId);
+// salaryPool.setUserName(userName);
+// salaryPool.setPostId(salaryGroup.getPostId());
+// salaryPool.setPostName(salaryGroup.getPostName());
+// salaryPool.setShopId(salaryGroup.getShopIds().get(0));
+// salaryPool.setShopName(salaryGroup.getShopNames().get(0));
+// salaryPool.setReward(new BigDecimal(20));
+// salaryPool.setStarLevel(StarLevelEnum.D);
+// salaryPool.setPaid(Boolean.FALSE);
+// salaryPool.setMonthly(yearMonth);
+// salaryPool.setRegular(Boolean.FALSE);
+// salaryPool.setGroupId(groupId);
+// salaryPoolService.save(salaryPool);
+// }
+// Long salaryPoolId = salaryPool.getId();
+//
+// BigDecimal wages = BigDecimal.ZERO;
+// List salaryPoolDetails = Lists.newArrayList();
+// List hitLogs = Lists.newArrayList();
+// for (SalaryGroupProjectVO groupProjectVO : salaryGroup.getProjects()) {
+// SalaryPoolDetail poolDetail = new SalaryPoolDetail();
+// poolDetail.setSalaryPoolId(salaryPoolId);
+// poolDetail.setSalaryProjectId(groupProjectVO.getSalaryProjectId());
+// poolDetail.setSalaryProjectName(groupProjectVO.getSalaryProjectName());
+// poolDetail.setType(SalaryTypeEnum.ROYALTIES);
+// poolDetail.setSalaryAmount(new BigDecimal(1000));
+// poolDetail.setProcessedAmount(new BigDecimal(0));
+// poolDetail.setActualSalaryAmount(new BigDecimal(1000));
+// poolDetail.setSalaryDate(localDate);
+// poolDetail.setGroupId(groupId);
+// wages = wages.add(poolDetail.getActualSalaryAmount());
+// salaryPoolDetails.add(poolDetail);
+//
+// if (PublicUtil.isNotEmpty(groupProjectVO.getSettings())) {
+// SalaryProjectHitLog hitLog = new SalaryProjectHitLog();
+// hitLog.setSalaryPoolId(salaryPoolId);
+// hitLog.setSalaryProjectId(groupProjectVO.getSalaryProjectId());
+// hitLog.setSalaryGroupProjectSettinId(groupProjectVO.getSettings().get(0).getId());
+// hitLog.setSalaryValue(new BigDecimal(20));
+// hitLog.setDataDate(localDate);
+// hitLog.setGroupId(groupId);
+// hitLogs.add(hitLog);
+// }
+// }
+//
+// for (SalaryTypeEnum salaryTypeEnum : SalaryTypeEnum.values()) {
+// if (SalaryTypeEnum.ROYALTIES.equals(salaryTypeEnum) || SalaryTypeEnum.PROBATION.equals(salaryTypeEnum)) {
+// continue;
+// }
+// SalaryPoolDetail poolDetail = new SalaryPoolDetail();
+// poolDetail.setSalaryPoolId(salaryPoolId);
+// poolDetail.setSalaryProjectId(null);
+// poolDetail.setSalaryProjectName(salaryTypeEnum.getName());
+// poolDetail.setType(salaryTypeEnum);
+// poolDetail.setSalaryAmount(new BigDecimal(1000));
+// poolDetail.setActualSalaryAmount(new BigDecimal(1000));
+// if (SalaryTypeEnum.NECESSARY.equals(salaryTypeEnum)) {
+// poolDetail.setProcessedAmount(new BigDecimal(1000));
+// } else if (SalaryTypeEnum.AWARD.equals(salaryTypeEnum)) {
+// poolDetail.setProcessedAmount(new BigDecimal(200));
+// } else if (SalaryTypeEnum.PENALTY.equals(salaryTypeEnum)) {
+// poolDetail.setProcessedAmount(new BigDecimal(100));
+// } else if (SalaryTypeEnum.SUBSIDY.equals(salaryTypeEnum)) {
+// poolDetail.setProcessedAmount(new BigDecimal(0));
+// } else if (SalaryTypeEnum.PERSON_TAX.equals(salaryTypeEnum)) {
+// poolDetail.setProcessedAmount(new BigDecimal(0));
+// }
+// poolDetail.setActualSalaryAmount(poolDetail.getSalaryAmount().subtract(poolDetail.getProcessedAmount()));
+// poolDetail.setSalaryDate(localDate);
+// poolDetail.setGroupId(groupId);
+// salaryPoolDetails.add(poolDetail);
+// if (salaryTypeEnum.isPlus()) {
+// wages = wages.add(poolDetail.getActualSalaryAmount());
+// } else {
+// wages = wages.subtract(poolDetail.getActualSalaryAmount());
+// }
+// }
+// salaryPoolDetailService.saveBatch(salaryPoolDetails);
+// salaryProjectHitLogService.saveBatch(hitLogs);
+//
+// salaryPool.setReward(wages);
+// salaryPoolService.saveOrUpdate(salaryPool);
+// return success();
+// }
}
\ No newline at end of file
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryExtraController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryExtraController.java
index 6a2c36f..1c32015 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryExtraController.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryExtraController.java
@@ -1,24 +1,17 @@
package cn.fw.morax.server.controller.erp;
import cn.fw.common.exception.BusinessException;
-import cn.fw.common.page.AppPage;
import cn.fw.common.web.annotation.ControllerMethod;
import cn.fw.common.web.auth.LoginAuthBean;
import cn.fw.common.web.auth.annotation.CurrentUser;
import cn.fw.data.base.domain.common.Message;
-import cn.fw.morax.domain.dto.SalaryProjectAbleDTO;
-import cn.fw.morax.domain.dto.SalaryProjectDTO;
-import cn.fw.morax.domain.dto.query.SalaryIndicatorQueryDTO;
-import cn.fw.morax.domain.vo.salary.SalaryProjectVO;
import cn.fw.morax.domain.vo.salary.StaffPersonTaxVO;
import cn.fw.morax.service.biz.salary.SalaryExtraBizService;
-import cn.fw.morax.service.biz.salary.SalaryProjectBizService;
import cn.fw.security.auth.client.annotation.Authorization;
import cn.fw.security.auth.client.annotation.IgnoreAuth;
import cn.fw.security.auth.client.enums.AuthType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.validation.BindException;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryGroupController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryGroupController.java
index 18b1990..37ebdd5 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryGroupController.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryGroupController.java
@@ -5,7 +5,7 @@ import cn.fw.common.web.annotation.ControllerMethod;
import cn.fw.common.web.auth.LoginAuthBean;
import cn.fw.common.web.auth.annotation.CurrentUser;
import cn.fw.data.base.domain.common.Message;
-import cn.fw.morax.domain.dto.SalaryGroupDTO;
+import cn.fw.morax.domain.dto.salary.SalaryGroupDTO;
import cn.fw.morax.domain.dto.query.SalaryGroupQueryDTO;
import cn.fw.morax.domain.dto.query.SalaryGroupStaffQueryDTO;
import cn.fw.morax.domain.dto.query.SalaryGroupUserPageDTO;
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryIndicatorController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryIndicatorController.java
index 10ed306..d11c4dc 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryIndicatorController.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/SalaryIndicatorController.java
@@ -3,8 +3,8 @@ package cn.fw.morax.server.controller.erp;
import cn.fw.common.page.AppPage;
import cn.fw.common.web.annotation.ControllerMethod;
import cn.fw.data.base.domain.common.Message;
-import cn.fw.morax.domain.dto.SalaryProjectAbleDTO;
-import cn.fw.morax.domain.dto.SalaryProjectDTO;
+import cn.fw.morax.domain.dto.salary.SalaryProjectAbleDTO;
+import cn.fw.morax.domain.dto.salary.SalaryProjectDTO;
import cn.fw.morax.domain.dto.query.SalaryIndicatorQueryDTO;
import cn.fw.morax.domain.vo.salary.SalaryProjectVO;
import cn.fw.morax.service.biz.salary.SalaryProjectBizService;
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/task/GenericTask.java b/fw-morax-server/src/main/java/cn/fw/morax/server/task/GenericTask.java
new file mode 100644
index 0000000..5cdd3be
--- /dev/null
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/task/GenericTask.java
@@ -0,0 +1,58 @@
+package cn.fw.morax.server.task;
+
+import cn.fw.morax.rpc.oop.OopRpcService;
+import cn.fw.morax.rpc.oop.dto.GroupDTO;
+import cn.fw.morax.service.biz.kpi.KpiPoolCommonService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 通用定时器
+ *
+ * @author : kurisu
+ * @version : 2.0
+ * @className : GenericTask
+ * @description : 通用定时器
+ * @date : 2022-12-28 14:44
+ */
+@Component
+@Slf4j
+@ConditionalOnProperty(prefix = "task", name = "switch", havingValue = "on")
+public class GenericTask {
+ private final OopRpcService oopRpcService;
+ private final KpiPoolCommonService kpiPoolCommonService;
+
+ @Autowired
+ public GenericTask(final OopRpcService oopRpcService,
+ final KpiPoolCommonService kpiPoolCommonService) {
+ this.oopRpcService = oopRpcService;
+ this.kpiPoolCommonService = kpiPoolCommonService;
+ }
+
+ /**
+ * 固定绩效数据
+ */
+ @Scheduled(cron = "0 0 7 * * ?")
+ public void regularKpiStar() {
+ List list = oopRpcService.allGroups();
+ if (!CollectionUtils.isEmpty(list)) {
+ for (GroupDTO groupDTO : list) {
+ kpiPoolCommonService.regularKpiStar(groupDTO.getId());
+ }
+ }
+ }
+
+ /**
+ * 离职数据推送人事
+ */
+ @Scheduled(cron = "0 0/10 9-19 * * ?")
+ public void forcedResign() {
+ kpiPoolCommonService.forcedResign();
+ }
+}
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiCalcTask.java b/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiCalcTask.java
index bd4a057..660d360 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiCalcTask.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiCalcTask.java
@@ -1,12 +1,10 @@
package cn.fw.morax.server.task;
-import cn.fw.common.cache.locker.DistributedLocker;
import cn.fw.morax.common.constant.TimeTaskConstant;
+import cn.fw.morax.service.biz.kpi.IndicatorBizService;
import cn.fw.morax.service.biz.kpi.KpiCalculateService;
import cn.fw.morax.service.biz.kpi.KpiPoolBizService;
-import cn.fw.morax.service.biz.kpi.KpiReportService;
import lombok.extern.slf4j.Slf4j;
-import org.redisson.api.RLock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Async;
@@ -14,7 +12,7 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
-import java.util.concurrent.locks.Lock;
+import java.time.YearMonth;
/**
* @author : kurisu
@@ -28,45 +26,28 @@ import java.util.concurrent.locks.Lock;
public class KpiCalcTask {
private final KpiCalculateService kpiCalculateService;
private final KpiPoolBizService kpiPoolBizService;
- private final KpiReportService kpiReportService;
- private final DistributedLocker distributedLocker;
+ private final IndicatorBizService indicatorBizService;
@Autowired
public KpiCalcTask(final KpiCalculateService kpiCalculateService,
final KpiPoolBizService kpiPoolBizService,
- final KpiReportService kpiReportService,
- final DistributedLocker distributedLocker) {
+ final IndicatorBizService indicatorBizService) {
this.kpiCalculateService = kpiCalculateService;
this.kpiPoolBizService = kpiPoolBizService;
- this.kpiReportService = kpiReportService;
- this.distributedLocker = distributedLocker;
+ this.indicatorBizService = indicatorBizService;
}
/**
- * 发送业务上报mq通知
- */
- @Scheduled(cron = TimeTaskConstant.KPI_GROUP_REPORT_NOTICE)
- public void sendNotice() {
- final String lockKey = ":kpiSendNotice";
- Lock lock = distributedLocker.lock(lockKey);
- if (((RLock) lock).isLocked()) {
- kpiReportService.sendNotice();
- lock.unlock();
- }
- }
-
- /**
* 持久化业务系统上报的数据
*/
- @Scheduled(initialDelay = 1000 * 10, fixedRate = 1000 * 60)
+ @Scheduled(initialDelay = 1000 * 10, fixedRate = 1000 * 15)
public void persistence() {
- kpiReportService.persistenceUserKpiData();
+ indicatorBizService.persistenceUserData();
}
-
/**
- * 需要计算绩效得分的绩效组写入缓存 每天凌晨1点10分
+ * 需要计算绩效得分的绩效组写入缓存 每天4点
*/
@Scheduled(cron = TimeTaskConstant.CACHE_CALCULATE_KPI_GROUP)
public void cacheCalculableKpiGroup() {
@@ -74,24 +55,24 @@ public class KpiCalcTask {
}
/**
- * 计算绩效得分 每90秒执行一次
+ * 计算绩效得分 每60秒执行一次
*/
- @Scheduled(initialDelay = 1000L * 30, fixedRate = 1000L * 90)
+ @Scheduled(initialDelay = 1000L * 15, fixedRate = 1000L * 60)
public void calculateKpi() {
kpiCalculateService.calculateKpi();
}
/**
- * 计算绩效得分率 每120秒执行一次
+ * 计算绩效得分率 每40秒执行一次
*/
- @Scheduled(initialDelay = 1000L * 30, fixedRate = 1000L * 120)
+ @Scheduled(initialDelay = 1000L * 20, fixedRate = 1000L * 40)
@Async
public void calcuScoringRate() {
kpiPoolBizService.calcuScoringRate();
}
/**
- * 需要计算绩效排名的绩效组写入缓存 每天凌晨2点
+ * 需要计算绩效排名的绩效组写入缓存 每天5点
*/
@Scheduled(cron = TimeTaskConstant.CACHE_CALCULATE_KPI_GROUP_RANK)
public void cacheCalculableKpiGroupRank() {
@@ -99,11 +80,29 @@ public class KpiCalcTask {
}
/**
- * 计算用户星级 每150秒执行一次
+ * 计算用户星级 每50秒执行一次
*/
- @Scheduled(initialDelay = 1000L * 30, fixedRate = 1000L * 150)
+ @Scheduled(initialDelay = 1000L * 35, fixedRate = 1000L * 50)
@Async
public void calcuStarLevel() {
kpiPoolBizService.calcuStarLevel();
}
+
+ /**
+ * 缓存上月最后一天的绩效组为绩效分最终计算做准备
+ * 每个月2号 0点10分执行
+ */
+ @Scheduled(cron = "0 10 0 2 * ?")
+ public void cacheFinalCalculableKpiGroup() {
+ kpiCalculateService.cacheCalculableKpiGroupIds(YearMonth.now().minusMonths(1L).atEndOfMonth());
+ }
+
+ /**
+ * 缓存上月最后一天的绩效组为绩效组排名的最终计算做准备
+ * 每个月2号 1点执行
+ */
+ @Scheduled(cron = "0 0 1 2 * ?")
+ public void cacheFinalCalculableKpiGroupRank() {
+ kpiPoolBizService.cacheCalculableKpiGroupRank(YearMonth.now().minusMonths(1L).atEndOfMonth());
+ }
}
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiGroupUserTask.java b/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiGroupUserTask.java
index 26603b0..8414060 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiGroupUserTask.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiGroupUserTask.java
@@ -108,7 +108,7 @@ public class KpiGroupUserTask {
postId = entry.getKey();
kpiGroups = entry.getValue();
kpiGroupUsers = kpiGroupUserBizService.fetchBuildKpiUser(postId, kpiGroups, yesterday).stream()
- .filter(user -> (PublicUtil.isEmpty(user.getIgnoreCause()) || (! filterEnum.equals(user.getIgnoreCause()))))
+// .filter(user -> (PublicUtil.isEmpty(user.getIgnoreCause()) || (! filterEnum.equals(user.getIgnoreCause()))))
.collect(Collectors.toList());
kpiGroupUsersForSave.addAll(kpiGroupUsers);
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/task/PayoffTask.java b/fw-morax-server/src/main/java/cn/fw/morax/server/task/PayoffTask.java
index 30c62df..9478fcf 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/task/PayoffTask.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/task/PayoffTask.java
@@ -47,58 +47,59 @@ public class PayoffTask {
this.salaryConfirmBizService = salaryConfirmBizService;
}
-// /**
-// * 发放工资的准备
-// */
+ /**
+ * 发放工资的准备
+ * [展示不对接财务]
+ */
// @Scheduled(initialDelay = 1000L * 10, fixedRate = 1000L * 30)
-// public void read2payoff() {
+ public void read2payoff() {
// payoffBizService.read2payoff();
-// }
-//
-// /**
-// * 发放工资
-// */
+ }
+
+ /**
+ * 发放工资 [工资单数据推送财务系统]
+ * [暂时不对接财务]
+ */
// @Scheduled(initialDelay = 1000L * 20, fixedRate = 1000L * 20)
-// public void go2pay() {
-// payoffBizService.go2payoff();
-// }
-//
-// /**
-// * 生成工资单
-// */
-// @Scheduled(initialDelay = 1000L * 60, fixedRate = 1000L * 60)
-// public void createSalarySheet() {
-// Lock lock = distributedLocker.lock(LOCK_KEY);
-// if (((RLock) lock).isLocked()) {
-// List list = oopRpcService.allGroups();
-// if (!CollectionUtils.isEmpty(list)) {
-// for (GroupDTO groupDTO : list) {
-// payoffBizService.createSalarySheet(groupDTO.getId());
-// }
-// }
-// lock.unlock();
-// }
-// }
-//
-// /**
-// * 生成工资确认待办(在申述期开始时发送工资确认待办)
-// * 每隔两小时检查一次是否有未生成确认待办的薪酬池数据
-// */
-// @Scheduled(cron = TimeTaskConstant.SALARY_CONFIRM_TODO)
-// public void createSalaryConfirmTodo() {
-// log.info("定时任务【生成工资确认待办】开始执行");
-// List list = oopRpcService.allGroups();
-// for (GroupDTO groupDTO : list) {
-// salaryConfirmBizService.createSalaryConfirmTodo(groupDTO.getId());
-// }
-// }
-//
-// /**
-// * 每隔两小时检查待办推送
-// */
-// @Scheduled(cron = TimeTaskConstant.SALARY_CONFIRM_TODO_CHECK)
-// public void pushTodo() {
-// log.info("定时任务【推送工资确认待办】开始执行");
-// salaryConfirmBizService.pushConfirm();
-// }
+ public void go2pay() {
+ // payoffBizService.go2payoff();
+ }
+
+ /**
+ * 生成工资单[工资发放记录]
+ * 每两个小时执行
+ */
+ @Scheduled(cron = "0 0 0/2 * * ?")
+ public void createSalarySheet() {
+ Lock lock = distributedLocker.lock(LOCK_KEY);
+ if (((RLock) lock).isLocked()) {
+ List list = oopRpcService.allGroups();
+ if (!CollectionUtils.isEmpty(list)) {
+ for (GroupDTO groupDTO : list) {
+ payoffBizService.createSalarySheet(groupDTO.getId());
+ }
+ }
+ lock.unlock();
+ }
+ }
+
+ /**
+ * 生成工资确认待办(在申述期开始时发送工资确认待办)
+ * 每隔两小时检查一次是否有未生成确认待办的薪酬池数据
+ */
+ @Scheduled(cron = TimeTaskConstant.SALARY_CONFIRM_TODO)
+ public void createSalaryConfirmTodo() {
+ List list = oopRpcService.allGroups();
+ for (GroupDTO groupDTO : list) {
+ salaryConfirmBizService.createSalaryConfirmTodo(groupDTO.getId());
+ }
+ }
+
+ /**
+ * 每5分钟检查待办推送
+ */
+ @Scheduled(cron = "0 0/5 * * * ?")
+ public void pushTodo() {
+ salaryConfirmBizService.pushConfirm();
+ }
}
diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/task/SalaryCalcTask.java b/fw-morax-server/src/main/java/cn/fw/morax/server/task/SalaryCalcTask.java
index 9227535..3592cf2 100644
--- a/fw-morax-server/src/main/java/cn/fw/morax/server/task/SalaryCalcTask.java
+++ b/fw-morax-server/src/main/java/cn/fw/morax/server/task/SalaryCalcTask.java
@@ -36,15 +36,6 @@ public class SalaryCalcTask {
}
/**
- * 重试提成数据持久化
- */
- @Scheduled(initialDelay = 1000L * 10, fixedRate = 1000L * 30)
- @Async
- public void retrySavePushMoney() {
- salaryReportService.retrySavePushMoney();
- }
-
- /**
* 重试额外薪资数据持久化
*/
@Scheduled(initialDelay = 1000L * 10, fixedRate = 1000L * 30)
@@ -54,7 +45,7 @@ public class SalaryCalcTask {
}
/**
- * 需要计算薪酬的薪酬组写入缓存
+ * 需要计算薪酬的薪酬组写入缓存 每天6点
*/
@Scheduled(cron = TimeTaskConstant.CACHE_CALCULATE_SALARY_GROUP)
public void cacheCalculableKpiGroup() {
@@ -62,21 +53,30 @@ public class SalaryCalcTask {
}
/**
- * 计算用户薪资 每150秒执行一次
+ * 计算用户薪资 每90秒执行一次
*/
- @Scheduled(initialDelay = 1000L * 30, fixedRate = 1000L * 150)
+ @Scheduled(initialDelay = 1000L * 30, fixedRate = 1000L * 90)
@Async
public void calcUserSalary() {
salaryCalcService.calculateSalary();
}
/**
- * 星级申请变更后重新计算用户工资 每180秒执行一次
+ * 星级申请变更后重新计算用户工资 每300秒执行一次
*/
- @Scheduled(initialDelay = 1000L * 5, fixedRate = 1000L * 180)
+ @Scheduled(initialDelay = 1000L * 5, fixedRate = 1000L * 300)
@Async
public void kpiChangeRetryCalcSalary() {
salaryCalcService.retryCalcSalary();
}
+ /**
+ * 缓存上月最后一天的薪酬组为薪资的最终计算做准备
+ * 每个月2号 2点执行
+ */
+ @Scheduled(cron = "0 0 2 2 * ?")
+ public void cacheFinalCalculableKpiGroup() {
+ salaryCalcService.prepareCalcSalary(LocalDate.now().minusDays(1L));
+ }
+
}
diff --git a/fw-morax-server/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/fw-morax-server/src/main/resources/META-INF/additional-spring-configuration-metadata.json
index 8462080..75ee8ba 100644
--- a/fw-morax-server/src/main/resources/META-INF/additional-spring-configuration-metadata.json
+++ b/fw-morax-server/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -1,13 +1,18 @@
{
"properties": [
{
- "name": "salary-project-code.base-salary",
+ "name": "special-indicator-code.base-salary",
"type": "java.lang.String",
- "description": "Description for salary-project-code.base-salary."
+ "description": "Description for special-indicator-code.base-salary."
},
{
- "name": "salary-project-code.work-age",
+ "name": "special-indicator-code.work-age",
"type": "java.lang.String",
- "description": "Description for salary-project-code.work-age."
+ "description": "Description for special-indicator-code.work-age."
+ },
+ {
+ "name": "special-indicator-code.work-day-proportion",
+ "type": "java.lang.String",
+ "description": "Description for special-indicator-code.work-day-proportion."
}
] }
\ No newline at end of file
diff --git a/fw-morax-server/src/main/resources/application-dev.yml b/fw-morax-server/src/main/resources/application-dev.yml
index e2b836f..e774630 100644
--- a/fw-morax-server/src/main/resources/application-dev.yml
+++ b/fw-morax-server/src/main/resources/application-dev.yml
@@ -27,4 +27,5 @@ p6spy-db:
flow:
kpiGroupConfig: "P8U7YTGC95" #绩效组修改审批
salaryGroupConfig: "W7KM0T97UT" #薪酬组修改审批
- kpiStarAdjustment: "Y31C4OZ960" #绩效星级特殊调整
\ No newline at end of file
+ kpiStarAdjustment: "Y31C4OZ960" #绩效星级特殊调整
+ incomeCompensationConfig: "9D7U2EZ76T" #岗位最低收入补贴
\ No newline at end of file
diff --git a/fw-morax-server/src/main/resources/application-gray.yml b/fw-morax-server/src/main/resources/application-gray.yml
index 4b89cc2..c502d9e 100644
--- a/fw-morax-server/src/main/resources/application-gray.yml
+++ b/fw-morax-server/src/main/resources/application-gray.yml
@@ -46,6 +46,7 @@ flow:
kpiGroupConfig: "46T0P7JX58" #绩效组修改审批
salaryGroupConfig: "06ZTQ93Y4V" #薪酬组修改审批
kpiStarAdjustment: "9DNS246M0G" #绩效星级特殊调整
+ incomeCompensationConfig: "Y31C4OZ960" #岗位最低收入补贴
todo:
person-confirm: 'W2DRPm21AQ'
diff --git a/fw-morax-server/src/main/resources/application-prd.yml b/fw-morax-server/src/main/resources/application-prd.yml
index c17bdf5..a0a9942 100644
--- a/fw-morax-server/src/main/resources/application-prd.yml
+++ b/fw-morax-server/src/main/resources/application-prd.yml
@@ -46,6 +46,7 @@ flow:
kpiGroupConfig: "46T0P7JX58" #绩效组修改审批
salaryGroupConfig: "06ZTQ93Y4V" #薪酬组修改审批
kpiStarAdjustment: "9DNS246M0G" #绩效星级特殊调整
+ incomeCompensationConfig: "Y31C4OZ960" #岗位最低收入补贴
todo:
person-confirm: 'W2DRPm21AQ'
diff --git a/fw-morax-server/src/main/resources/application-test.yml b/fw-morax-server/src/main/resources/application-test.yml
index 937f635..90e28a4 100644
--- a/fw-morax-server/src/main/resources/application-test.yml
+++ b/fw-morax-server/src/main/resources/application-test.yml
@@ -56,6 +56,7 @@ flow:
kpiGroupConfig: "P8U7YTGC95" #绩效组修改审批
salaryGroupConfig: "W7KM0T97UT" #薪酬组修改审批
kpiStarAdjustment: "Y31C4OZ960" #绩效星级特殊调整
+ incomeCompensationConfig: "9D7U2EZ76T" #岗位最低收入补贴
todo:
person-confirm: 'wqDmVvAQ6b'
diff --git a/fw-morax-server/src/main/resources/application.yml b/fw-morax-server/src/main/resources/application.yml
index a0fa3cd..a8a4836 100644
--- a/fw-morax-server/src/main/resources/application.yml
+++ b/fw-morax-server/src/main/resources/application.yml
@@ -146,6 +146,7 @@ todo:
kpi-group-change: 'pWRIQeXZvI'
salary-group-change: 'zLFSx8BA2I'
-salary-project-code:
- base-salary: 'D002684a0fb2410a'
- work-age: '9dD2009cBfdf44a8'
\ No newline at end of file
+special-indicator-code:
+ base-salary: 'E3f0caA2F1934959'
+ work-age: '1093027AFb124440'
+ work-day-proportion: 'Work_Day_Proportion'
\ No newline at end of file
diff --git a/fw-morax-service/pom.xml b/fw-morax-service/pom.xml
index 55cc4b0..906564d 100644
--- a/fw-morax-service/pom.xml
+++ b/fw-morax-service/pom.xml
@@ -5,7 +5,8 @@
fw-morax
cn.fw
- 1.0.0
+ 2.0.0
+ ../pom.xml
4.0.0
diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/ApprovalBizService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/ApprovalBizService.java
index 35ca67f..ae8e62c 100644
--- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/ApprovalBizService.java
+++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/ApprovalBizService.java
@@ -2,38 +2,36 @@ package cn.fw.morax.service.biz;
import cn.fw.approval.sdk.param.InitiateApprovalParam;
import cn.fw.common.web.auth.LoginAuthBean;
-import cn.fw.common.web.auth.annotation.CurrentUser;
import cn.fw.morax.common.config.FlowVal;
import cn.fw.morax.common.utils.PublicUtil;
import cn.fw.morax.domain.db.ApprovalRecord;
+import cn.fw.morax.domain.db.eval.Eval;
import cn.fw.morax.domain.db.kpi.KpiGroup;
import cn.fw.morax.domain.db.kpi.KpiStarSpecialRule;
import cn.fw.morax.domain.db.salary.SalaryGroup;
+import cn.fw.morax.domain.dto.eval.EvalGroupDTO;
import cn.fw.morax.domain.enums.ApprovalStatusEnum;
import cn.fw.morax.domain.enums.ApprovalTypeEnum;
import cn.fw.morax.rpc.approval.FlowApproveRpc;
import cn.fw.morax.rpc.approval.dto.FlowDto;
import cn.fw.morax.rpc.ehr.EhrRpcService;
import cn.fw.morax.rpc.ehr.dto.StaffBaseInfoDTO;
-import cn.fw.morax.rpc.ehr.dto.StaffInfoDTO;
import cn.fw.morax.service.biz.salary.SalaryGeneralSettinBizService;
import cn.fw.morax.service.data.ApprovalRecordService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
-import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
-import static cn.fw.common.businessvalidator.Validator.BV;
-
@Slf4j
@RequiredArgsConstructor
@Service
@@ -47,10 +45,11 @@ public class ApprovalBizService {
/**
* 提交审批
+ *
* @param salaryGroup
*/
@Transactional(rollbackFor = Exception.class)
- public void applyApproveSalaryGroup(SalaryGroup salaryGroup, LoginAuthBean user, Integer staffNum){
+ public void applyApproveSalaryGroup(SalaryGroup salaryGroup, LoginAuthBean user, Integer staffNum) {
Date expTime = PublicUtil.getExpTimeOfMonth(salaryGroup.getBeginTime());
//提交审批
List conditions = Lists.newArrayList();
@@ -72,9 +71,9 @@ public class ApprovalBizService {
.briefContent(Lists.newArrayList(
"申请人:" + user.getUserName(),
"岗位:" + salaryGroup.getPostName(),
- "绩效项目:" + salaryGroup.getProjectNum() + "个",
- "适用门店:" + salaryGroup.getShopIds().size() + "个",
- "适用人员:" + staffNum + "人",
+// "薪酬项目:" + salaryGroup.getProjectNum() + "个",
+// "适用门店:" + salaryGroup.getShopIds().size() + "个",
+// "适用人员:" + staffNum + "人",
"申请时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(LocalDateTime.now())
))
.initiatorId(user.getUserId())
@@ -96,10 +95,11 @@ public class ApprovalBizService {
/**
* 提交审批
+ *
* @param kpiGroup
*/
@Transactional(rollbackFor = Exception.class)
- public void applyApproveKpi(KpiGroup kpiGroup, LoginAuthBean user, Integer staffNum){
+ public void applyApproveKpi(KpiGroup kpiGroup, LoginAuthBean user, Integer staffNum) {
Date expTime = PublicUtil.getExpTimeOfMonth(kpiGroup.getBeginTime());
//提交审批
List conditions = Lists.newArrayList();
@@ -121,9 +121,9 @@ public class ApprovalBizService {
.briefContent(Lists.newArrayList(
"申请人:" + user.getUserName(),
"岗位:" + kpiGroup.getPostName(),
- "绩效项目:" + kpiGroup.getIndicatorNum() + "个",
- "适用门店:" + kpiGroup.getShopIds().size() + "个",
- "适用人员:" + staffNum + "人",
+// "绩效项目:" + kpiGroup.getIndicatorNum() + "个",
+// "适用门店:" + kpiGroup.getShopIds().size() + "个",
+// "适用人员:" + staffNum + "人",
"申请时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(LocalDateTime.now())
))
.initiatorId(user.getUserId())
@@ -145,10 +145,11 @@ public class ApprovalBizService {
/**
* 提交审批
+ *
* @param specialRule
*/
@Transactional(rollbackFor = Exception.class)
- public void applyKpiStarAdjustment(KpiStarSpecialRule specialRule, LoginAuthBean user){
+ public void applyKpiStarAdjustment(KpiStarSpecialRule specialRule, LoginAuthBean user) {
Date expTime = salaryGeneralSettinBizService.getSalaryAppealExpTime(specialRule.getGroupId());
//员工基础信息
StaffBaseInfoDTO staffInfo = ehrRpcService.queryStaffBaseInfo(specialRule.getUserId());
@@ -194,19 +195,81 @@ public class ApprovalBizService {
}
/**
+ * 提交审批
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void applyApproveEval(Eval eval, List evalGroups, LoginAuthBean user) {
+ Date expTime = PublicUtil.getExpTimeOfMonth(LocalDate.now());
+
+ Set postIds = new HashSet<>();
+ Set shopIds = new HashSet<>();
+ for (EvalGroupDTO evalGroupDTO : evalGroups) {
+ postIds.add(evalGroupDTO.getPostId());
+ shopIds.addAll(evalGroupDTO.getShopIds());
+ }
+
+ //提交审批
+ List conditions = Lists.newArrayList();
+
+ InitiateApprovalParam.Condition postCondition = new InitiateApprovalParam.Condition();
+ postCondition.setParamName("postId");
+ postCondition.setValue(StringUtils.join(",", postIds));
+
+ InitiateApprovalParam.Condition shopCondition = new InitiateApprovalParam.Condition();
+ shopCondition.setParamName("shopId");
+ shopCondition.setValue(StringUtils.join(",", shopIds));
+
+ conditions.add(postCondition);
+ conditions.add(shopCondition);
+ Map extDataMap = new HashMap() {{
+ put("id", eval.getId().toString());
+ }};
+
+ FlowDto flowDto = FlowDto.builder()
+ .groupId(eval.getGroupId())
+ .approvalNo(flowVal.getKpiGroupConfig())
+ .briefContent(Lists.newArrayList(
+ "申请人:" + user.getUserName(),
+ "考评/活动名称:" + eval.getName(),
+ "考评类型:" + eval.getType().getName(),
+// "岗位:" + evalGroup.getPostName(),
+ "考评组:" + evalGroups.size() + "个",
+// "适用门店:" + evalGroup.getShopIds().size() + "个",
+// "适用人员:" + staffNum + "人",
+ "申请时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(LocalDateTime.now())
+ ))
+ .initiatorId(user.getUserId())
+ .expTime(expTime)
+ .shopIds(new ArrayList<>(shopIds))
+ .conditions(conditions)
+ .extData(extDataMap)
+ .build();
+ String approvalNo = flowApproveRpc.initiate(flowDto);
+ ApprovalRecord approvalRecord = ApprovalRecord.builder()
+ .approvalNo(approvalNo)
+ .approvalStatus(ApprovalStatusEnum.IN_APPROVAL)
+ .approvalType(ApprovalTypeEnum.EVAL)
+ .dataId(eval.getId())
+ .groupId(eval.getGroupId())
+ .build();
+ approvalRecordService.save(approvalRecord);
+ }
+
+ /**
* 审批
+ *
* @param approvalNo
* @param agree
*/
@Transactional(rollbackFor = Exception.class)
- public ApprovalRecord closeApprove(String approvalNo, Boolean agree){
+ public ApprovalRecord closeApprove(String approvalNo, Boolean agree) {
ApprovalRecord approvalRecord = approvalRecordService.getOne(Wrappers.lambdaQuery()
.eq(ApprovalRecord::getApprovalNo, approvalNo));
//记录不存在、记录已被修改返回空,不再继续执行
if (PublicUtil.isEmpty(approvalRecord)) {
return null;
}
- if (PublicUtil.isNotEmpty(approvalRecord) && (! ApprovalStatusEnum.IN_APPROVAL.equals(approvalRecord.getApprovalStatus()))) {
+ if (PublicUtil.isNotEmpty(approvalRecord) && (!ApprovalStatusEnum.IN_APPROVAL.equals(approvalRecord.getApprovalStatus()))) {
return null;
}
approvalRecordService.update(Wrappers.lambdaUpdate()
diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/CommonService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/CommonService.java
index d5773e1..86892f1 100644
--- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/CommonService.java
+++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/CommonService.java
@@ -1,14 +1,19 @@
package cn.fw.morax.service.biz;
import cn.fw.common.exception.BusinessException;
+import cn.fw.morax.common.constant.Constant;
import cn.fw.morax.common.utils.ExcelDataUtil;
import cn.fw.morax.common.utils.PublicUtil;
+import cn.fw.morax.domain.db.kpi.IndicatorUserValue;
import cn.fw.morax.domain.dto.AbstractLaddersDto;
+import cn.fw.morax.domain.enums.IndicatorValueTypeEnum;
+import cn.fw.morax.domain.vo.kpi.IndicatorUserValueVO;
import cn.fw.morax.rpc.ehr.EhrRpcService;
import cn.fw.morax.rpc.ehr.dto.StaffBaseInfoDTO;
import cn.hutool.core.io.IoUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
+import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -23,10 +28,7 @@ import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.time.*;
import java.time.temporal.TemporalAdjusters;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@@ -55,6 +57,9 @@ public class CommonService {
* @param dtos
*/
public static void checkLadders(List extends AbstractLaddersDto> dtos, String errorPromptName) {
+ if (PublicUtil.isEmpty(dtos)) {
+ return;
+ }
BigDecimal lastUpper = null;
//阶梯值校验 标准分不能超过指标基础分,阶梯值必须连续
for (AbstractLaddersDto laddersDto : dtos) {
@@ -232,4 +237,49 @@ public class CommonService {
return new ArrayList<>();
}
+ /**
+ * 查询具体指标值
+ * @param indicatorCode
+ * @param indicatorUserValue
+ * @return
+ */
+ public BigDecimal queryIndicatorValue(String indicatorCode, IndicatorUserValue indicatorUserValue) {
+ BigDecimal value = BigDecimal.ZERO;
+ //条件计算类型 是车系id:销售台数
+ if (IndicatorValueTypeEnum.CONDITION.equals(indicatorUserValue.getValueType())) {
+ return value;
+ }
+ try {
+ JSONObject jsonObject = JSONObject.parseObject(indicatorUserValue.getIndicatorValue());
+ value = Optional.ofNullable(jsonObject.getBigDecimal(indicatorCode)).orElse(BigDecimal.ZERO);
+ } catch (Exception e) {
+ log.error("[{}]指标值转化失败", indicatorCode, e);
+ }
+ return value;
+ }
+
+ /**
+ * 查询具体指标值
+ * @param indicatorCode
+ * @param indicatorUserValue
+ * @return
+ */
+ public BigDecimal queryIndicatorValueVO(String indicatorCode, IndicatorUserValueVO indicatorUserValue) {
+ BigDecimal value = BigDecimal.ZERO;
+ //条件计算类型 是车系id:销售台数
+ if (IndicatorValueTypeEnum.CONDITION.equals(indicatorUserValue.getValueType())) {
+ return value;
+ }
+ try {
+ JSONObject jsonObject = JSONObject.parseObject(indicatorUserValue.getIndicatorValue());
+ value = Optional.ofNullable(jsonObject.getBigDecimal(indicatorCode)).orElse(BigDecimal.ZERO);
+ if (IndicatorValueTypeEnum.RATIO.equals(indicatorUserValue.getValueType())) {
+ value = value.multiply(Constant.ONE_HUNDRED);
+ }
+ } catch (Exception e) {
+ log.error("[{}]指标值转化失败", indicatorCode, e);
+ }
+ return value;
+ }
+
}
diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/EvlBaseCalculator.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/EvlBaseCalculator.java
new file mode 100644
index 0000000..8baf269
--- /dev/null
+++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/EvlBaseCalculator.java
@@ -0,0 +1,17 @@
+package cn.fw.morax.service.biz.calculator.eval;
+
+import cn.fw.morax.service.biz.calculator.Calculator;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 考评基础计算器
+ *
+ * @author : kurisu
+ * @version : 2.0
+ * @className : BaseCalculator
+ * @description : 考评基础计算器
+ * @date : 2022-12-26 14:17
+ */
+@Slf4j
+public abstract class EvlBaseCalculator implements Calculator {
+}
diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/kpi/KpiAbsBaseCalculator.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/kpi/KpiAbsBaseCalculator.java
index b7c6b48..b1c62ce 100644
--- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/kpi/KpiAbsBaseCalculator.java
+++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/kpi/KpiAbsBaseCalculator.java
@@ -1,19 +1,27 @@
package cn.fw.morax.service.biz.calculator.kpi;
+import cn.fw.morax.domain.bo.kpi.KpiIndicatorBO;
import cn.fw.morax.domain.db.kpi.*;
-import cn.fw.morax.domain.db.salary.SalaryGroupUser;
-import cn.fw.morax.domain.db.salary.SalaryPool;
+import cn.fw.morax.domain.enums.IndicatorTypeEnum;
import cn.fw.morax.domain.enums.ScoreWayEnum;
+import cn.fw.morax.domain.enums.TargetCalcTypeEnum;
+import cn.fw.morax.domain.enums.TargetTypeEnum;
import cn.fw.morax.service.biz.calculator.Calculator;
-import cn.fw.morax.service.data.kpi.KpiGroupIndicatorLaddersService;
-import cn.fw.morax.service.data.kpi.KpiIndicatorHitLogService;
+import cn.fw.morax.service.data.kpi.*;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import java.math.BigDecimal;
-
-import static cn.fw.common.businessvalidator.Validator.BV;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.function.Consumer;
/**
* @author : kurisu
@@ -23,11 +31,21 @@ import static cn.fw.common.businessvalidator.Validator.BV;
* @date : 2022-04-18 11:28
*/
@Slf4j
-public abstract class KpiAbsBaseCalculator implements Calculator {
+public abstract class KpiAbsBaseCalculator implements Calculator {
+ @Autowired
+ protected KpiGroupIndicatorHitLogService kpiGroupIndicatorHitLogService;
+ @Autowired
+ protected IndicatorUserValueService indicatorUserValueService;
+ @Autowired
+ protected KpiGroupIndicatorParamService kpiGroupIndicatorParamService;
@Autowired
- protected KpiGroupIndicatorLaddersService kpiGroupIndicatorLaddersService;
+ protected KpiGroupIndicatorPreconditionService kpiGroupIndicatorPreconditionService;
@Autowired
- protected KpiIndicatorHitLogService kpiIndicatorHitLogService;
+ protected KpiGroupIndicatorPreconditionHitLogService preconditionHitLogService;
+ @Autowired
+ protected KpiGroupIndicatorPreconditionLaddersService preconditionLaddersService;
+ @Autowired
+ protected KpiGroupIndicatorTargetHitLogService kpiGroupIndicatorTargetHitLogService;
/**
* 获取设置类型
@@ -37,24 +55,242 @@ public abstract class KpiAbsBaseCalculator implements Calculator queryPrecondition(Long kpiGroupIndicatorId, Long kpiGroupId) {
+ List preList = kpiGroupIndicatorPreconditionService.list(Wrappers.lambdaQuery()
+ .eq(KpiGroupIndicatorPrecondition::getKpiGroupIndicatorId, kpiGroupIndicatorId)
+ .eq(KpiGroupIndicatorPrecondition::getKpiGroupId, kpiGroupId)
+ .eq(KpiGroupIndicatorPrecondition::getYn, Boolean.TRUE)
+ .orderByAsc(KpiGroupIndicatorPrecondition::getSort)
+ );
+ return Optional.ofNullable(preList).orElse(new ArrayList<>());
+ }
+
+ /**
+ * 查询指标配置
+ *
+ * @param kpiGroupIndicatorId
+ * @param kpiGroupId
+ * @return
+ */
+ protected List queryParam(Long kpiGroupIndicatorId, Long kpiGroupId) {
+ List list = kpiGroupIndicatorParamService.list(Wrappers.lambdaQuery()
+ .eq(KpiGroupIndicatorParam::getKpiGroupIndicatorId, kpiGroupIndicatorId)
+ .eq(KpiGroupIndicatorParam::getKpiGroupId, kpiGroupId)
+ .eq(KpiGroupIndicatorParam::getYn, Boolean.TRUE)
+ );
+ return Optional.ofNullable(list).orElse(new ArrayList<>());
+ }
+
+ /**
+ * 查询指标值
+ *
+ * @param userId
+ * @param groupId
+ * @param dataDate
+ * @param indicatorCode
+ * @return
+ */
+ protected IndicatorUserValue queryValue(Long userId, Long groupId, LocalDate dataDate, String indicatorCode) {
+ return indicatorUserValueService.getOne(Wrappers.lambdaQuery()
+ .eq(IndicatorUserValue::getUserId, userId)
+ .eq(IndicatorUserValue::getIndicatorCode, indicatorCode)
+ .eq(IndicatorUserValue::getDataDate, dataDate)
+ .eq(IndicatorUserValue::getYn, Boolean.TRUE)
+ .eq(IndicatorUserValue::getGroupId, groupId)
+ , Boolean.FALSE
+ );
+ }
+
+ /**
+ * 查询具体指标值
+ *
+ * @param indicatorCode
+ * @param originalValue
+ * @return
*/
- protected void saveHitLog(KpiPoolIndicatorValue indicatorValue, Long kpiGroupIndicatorId, Long kpiGroupIndicatorLaddersId, BigDecimal kpiValue) {
- KpiIndicatorHitLog hitLog = KpiIndicatorHitLog.builder()
- .kpiPoolId(indicatorValue.getKpiPoolId())
- .kpiGroupIndicatorId(kpiGroupIndicatorId)
- .kpiGroupIndicatorLaddersId(kpiGroupIndicatorLaddersId)
- .kpiValue(kpiValue)
- .dataDate(indicatorValue.getDataDate())
- .groupId(indicatorValue.getGroupId())
- .build();
- kpiIndicatorHitLogService.saveUnique(hitLog);
+ protected BigDecimal queryIndicatorValue(String indicatorCode, String originalValue) {
+ BigDecimal value = BigDecimal.ZERO;
+ try {
+ JSONObject jsonObject = JSONObject.parseObject(originalValue);
+ value = Optional.ofNullable(jsonObject.getBigDecimal(indicatorCode)).orElse(BigDecimal.ZERO);
+ } catch (Exception e) {
+ log.error("[{}]指标值转化失败", indicatorCode, e);
+ }
+ return value;
}
+ /**
+ * 通过前置条件计算绩效得分系数
+ *
+ * @param list
+ * @return
+ */
+ protected BigDecimal calcCoefficient(KpiGroupUser user, List list) {
+ BigDecimal coefficient = BigDecimal.ONE;
+ if (CollectionUtils.isEmpty(list)) {
+ return coefficient;
+ }
+ final Long userId = user.getUserId();
+ for (int i = 0; i < list.size(); i++) {
+ KpiGroupIndicatorPrecondition precondition = list.get(i);
+ TargetTypeEnum targetType = precondition.getTargetType();
+ IndicatorUserValue userValue = queryValue(userId, user.getGroupId(), user.getDataDate(), precondition.getIndicatorCode());
+ if (Objects.isNull(userValue)) {
+ return BigDecimal.ZERO;
+ }
+ final BigDecimal originValue = queryIndicatorValue(userValue.getIndicatorCode(), userValue.getIndicatorValue());
+ BigDecimal indicatorValue = originValue;
+ if (!TargetTypeEnum.NO.equals(targetType)) {
+ BigDecimal targetValue = precondition.getTargetValue();
+ TargetCalcTypeEnum targetCalcType = precondition.getTargetCalcType();
+ if (TargetCalcTypeEnum.TARGET_VALUE.equals(targetCalcType)) {
+ indicatorValue = indicatorValue.divide(targetValue, 4, RoundingMode.HALF_UP);
+ } else {
+ BigDecimal difference = BigDecimal.ONE.subtract(targetValue);
+ if (BigDecimal.ZERO.compareTo(difference) == 0) {
+ difference = BigDecimal.ONE;
+ }
+ indicatorValue = indicatorValue.subtract(targetValue).divide(difference, 4, RoundingMode.HALF_UP);
+ }
+
+ saveTargetHitLog(user, precondition.getId(), IndicatorTypeEnum.PRE, originValue, indicatorValue);
+ }
+ coefficient = coefficient(user, precondition.getId(), indicatorValue);
+ }
+ return coefficient;
+ }
+
+ protected BigDecimal coefficient(KpiGroupUser user, Long preconditionId, BigDecimal value) {
+ KpiGroupIndicatorPreconditionLadders ladder = preconditionLaddersService.getOne(Wrappers.lambdaQuery()
+ .eq(KpiGroupIndicatorPreconditionLadders::getPreconditionId, preconditionId)
+ .gt(KpiGroupIndicatorPreconditionLadders::getUpper, value)
+ .le(KpiGroupIndicatorPreconditionLadders::getLower, value)
+ .eq(KpiGroupIndicatorPreconditionLadders::getYn, Boolean.TRUE),
+ Boolean.FALSE
+ );
+ if (Objects.isNull(ladder)) {
+ savePreconditionHitLog(user, preconditionId, hitLog -> {
+ hitLog.setPreconditionLaddersId(-1L);
+ hitLog.setValue(value);
+ });
+ return BigDecimal.ZERO;
+ }
+
+ savePreconditionHitLog(user, preconditionId, hitLog -> {
+ hitLog.setPreconditionLaddersId(ladder.getId());
+ hitLog.setValue(value);
+ });
+ return ladder.getScorePercent();
+ }
+
+ /**
+ * 计算最终的指标值
+ *
+ * @param paramList
+ * @param user
+ * @param kpiGroupIndicatorId
+ * @return
+ */
+ protected BigDecimal calculateFinalIndValue(List paramList, KpiGroupUser user, Long kpiGroupIndicatorId) {
+ BigDecimal rate = BigDecimal.ZERO;
+ if (CollectionUtils.isEmpty(paramList)) {
+ log.info("指标[{}]配置不存在", kpiGroupIndicatorId);
+ return rate;
+ }
+ for (KpiGroupIndicatorParam param : paramList) {
+ IndicatorUserValue userValue = queryValue(user.getUserId(), user.getGroupId(), user.getDataDate(), param.getIndicatorCode());
+ if (Objects.isNull(userValue)) {
+ log.info("用户[{}]指标[{}]值不存在", user.getUserId(), kpiGroupIndicatorId);
+ continue;
+ }
+ TargetTypeEnum targetType = param.getTargetType();
+ final BigDecimal originValue = queryIndicatorValue(userValue.getIndicatorCode(), userValue.getIndicatorValue());
+ BigDecimal indicatorValue = originValue;
+ if (!TargetTypeEnum.NO.equals(targetType)) {
+ BigDecimal targetValue = param.getTargetValue();
+ TargetCalcTypeEnum targetCalcType = param.getTargetCalcType();
+ if (TargetCalcTypeEnum.TARGET_VALUE.equals(targetCalcType)) {
+ indicatorValue = indicatorValue.divide(targetValue, 4, RoundingMode.HALF_UP);
+ } else {
+ BigDecimal difference = BigDecimal.ONE.subtract(targetValue);
+ if (BigDecimal.ZERO.compareTo(difference) == 0) {
+ difference = BigDecimal.ONE;
+ }
+ indicatorValue = indicatorValue.subtract(targetValue).divide(difference, 4, RoundingMode.HALF_UP);
+ }
+
+ saveTargetHitLog(user, param.getId(), IndicatorTypeEnum.EXAMINE, originValue, indicatorValue);
+ }
+ boolean isCap = Boolean.TRUE.equals(param.getCap());
+ BigDecimal proportion = param.getProportion();
+ if (isCap) {
+ indicatorValue = BigDecimal.ONE.compareTo(indicatorValue) > 0 ? indicatorValue : BigDecimal.ONE;
+ }
+ rate = rate.add(proportion.multiply(indicatorValue));
+ }
+ return rate;
+ }
+
+ protected void savePreconditionHitLog(KpiGroupUser user, Long preconditionId, Consumer consumer) {
+ preconditionHitLogService.remove(Wrappers.lambdaQuery()
+ .eq(KpiGroupIndicatorPreconditionHitLog::getUserId, user.getUserId())
+ .eq(KpiGroupIndicatorPreconditionHitLog::getPreconditionId, preconditionId)
+ .eq(KpiGroupIndicatorPreconditionHitLog::getDataDate, user.getDataDate())
+ .eq(KpiGroupIndicatorPreconditionHitLog::getGroupId, user.getGroupId())
+ );
+ KpiGroupIndicatorPreconditionHitLog hitLog = new KpiGroupIndicatorPreconditionHitLog();
+ hitLog.setPreconditionId(preconditionId);
+ hitLog.setUserId(user.getUserId());
+ hitLog.setDataDate(user.getDataDate());
+ hitLog.setGroupId(user.getGroupId());
+ if (consumer != null) {
+ consumer.accept(hitLog);
+ }
+ preconditionHitLogService.save(hitLog);
+ }
+
+ protected void saveTargetHitLog(KpiGroupUser user, Long referId, IndicatorTypeEnum targetType, BigDecimal value, BigDecimal reachValue) {
+ kpiGroupIndicatorTargetHitLogService.remove(Wrappers.lambdaQuery()
+ .eq(KpiGroupIndicatorTargetHitLog::getUserId, user.getUserId())
+ .eq(KpiGroupIndicatorTargetHitLog::getTargetType, targetType)
+ .eq(KpiGroupIndicatorTargetHitLog::getDataDate, user.getDataDate())
+ .eq(KpiGroupIndicatorTargetHitLog::getReferId, referId)
+ );
+ KpiGroupIndicatorTargetHitLog log = new KpiGroupIndicatorTargetHitLog();
+ log.setReferId(referId);
+ log.setTargetType(targetType);
+ log.setUserId(user.getUserId());
+ log.setValue(value);
+ log.setReachValue(reachValue);
+ log.setDataDate(user.getDataDate());
+ log.setGroupId(user.getGroupId());
+ log.setYn(Boolean.TRUE);
+ kpiGroupIndicatorTargetHitLogService.save(log);
+ }
+ /**
+ * 储存命中记录
+ *
+ * @param kpiGroupIndicatorId
+ * @param kpiGroupIndicatorLaddersId
+ * @param kpiValue
+ * @param user
+ */
+ protected void saveParamHitLog(Long kpiGroupIndicatorId, Long kpiGroupIndicatorLaddersId, BigDecimal kpiValue, KpiGroupUser user) {
+ KpiGroupIndicatorHitLog hitLog = new KpiGroupIndicatorHitLog();
+ hitLog.setKpiGroupIndicatorId(kpiGroupIndicatorId);
+ hitLog.setKpiGroupIndicatorLaddersId(kpiGroupIndicatorLaddersId);
+ hitLog.setUserId(user.getUserId());
+ hitLog.setKpiValue(kpiValue);
+ hitLog.setDataDate(user.getDataDate());
+ hitLog.setGroupId(user.getGroupId());
+ hitLog.setYn(Boolean.TRUE);
+ kpiGroupIndicatorHitLogService.saveUnique(hitLog);
+ }
}
diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/kpi/LadderCalculator.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/kpi/LadderCalculator.java
index 8ab0f96..336a9f2 100644
--- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/kpi/LadderCalculator.java
+++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/kpi/LadderCalculator.java
@@ -1,20 +1,21 @@
package cn.fw.morax.service.biz.calculator.kpi;
-import cn.fw.morax.common.utils.PublicUtil;
-import cn.fw.morax.domain.db.kpi.KpiGroupIndicator;
+import cn.fw.morax.domain.bo.kpi.KpiIndicatorBO;
import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorLadders;
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorParam;
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorPrecondition;
import cn.fw.morax.domain.db.kpi.KpiGroupUser;
-import cn.fw.morax.domain.db.kpi.KpiPoolIndicatorValue;
import cn.fw.morax.domain.enums.ScoreWayEnum;
+import cn.fw.morax.service.data.kpi.KpiGroupIndicatorLaddersService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.List;
-import java.util.Optional;
-
-import static cn.fw.common.businessvalidator.Validator.BV;
+import java.util.Objects;
/**
* @author : kurisu
@@ -26,33 +27,60 @@ import static cn.fw.common.businessvalidator.Validator.BV;
@Component
@Slf4j
public class LadderCalculator extends KpiAbsBaseCalculator {
+ private final KpiGroupIndicatorLaddersService kpiGroupIndicatorLaddersService;
+
+ @Autowired
+ public LadderCalculator(final KpiGroupIndicatorLaddersService kpiGroupIndicatorLaddersService) {
+ this.kpiGroupIndicatorLaddersService = kpiGroupIndicatorLaddersService;
+ }
+
@Override
public ScoreWayEnum getCalMethod() {
return ScoreWayEnum.LADDER;
}
@Override
- public BigDecimal calculate(KpiPoolIndicatorValue indicatorValue, KpiGroupIndicator groupIndicator) {
- List stepper = kpiGroupIndicatorLaddersService.list(Wrappers.lambdaQuery()
- .eq(KpiGroupIndicatorLadders::getKpiGroupIndicatorId, groupIndicator.getId())
- .eq(KpiGroupIndicatorLadders::getYn, Boolean.TRUE)
+ public BigDecimal calculate(KpiGroupUser user, KpiIndicatorBO bo) {
+ final BigDecimal baseScore = BigDecimal.valueOf(bo.getBaseScore());
+ final Long kpiGroupIndicatorId = bo.getKpiGroupIndicatorId();
+ List list = queryPrecondition(kpiGroupIndicatorId, bo.getKpiGroupId());
+ BigDecimal coefficient = calcCoefficient(user, list);
+ return calcScore(kpiGroupIndicatorId, bo.getKpiGroupId(), baseScore, coefficient, user);
+ }
+
+ /**
+ * 通过配置条件计算绩效分
+ *
+ * @param kpiGroupIndicatorId
+ * @param kpiGroupId
+ * @param baseScore
+ * @param coefficient
+ * @param user
+ * @return
+ */
+ private BigDecimal calcScore(Long kpiGroupIndicatorId, Long kpiGroupId, BigDecimal baseScore, BigDecimal coefficient, KpiGroupUser user) {
+ List paramList = queryParam(kpiGroupIndicatorId, kpiGroupId);
+ BigDecimal finalIndValue = calculateFinalIndValue(paramList, user, kpiGroupIndicatorId);
+ BigDecimal score = score(kpiGroupIndicatorId, finalIndValue, user);
+ if (baseScore.compareTo(score) < 0) {
+ score = baseScore;
+ }
+ return score.multiply(coefficient).divide(BigDecimal.ONE, 2, RoundingMode.HALF_UP);
+ }
+
+ private BigDecimal score(Long kpiGroupIndicatorId, BigDecimal rate, KpiGroupUser user) {
+ KpiGroupIndicatorLadders ladder = kpiGroupIndicatorLaddersService.getOne(Wrappers.lambdaQuery()
+ .eq(KpiGroupIndicatorLadders::getKpiGroupIndicatorId, kpiGroupIndicatorId)
+ .eq(KpiGroupIndicatorLadders::getYn, Boolean.TRUE)
+ .gt(KpiGroupIndicatorLadders::getUpper, rate)
+ .le(KpiGroupIndicatorLadders::getLower, rate),
+ Boolean.FALSE
);
- BV.isNotEmpty(stepper, () -> "得分阶梯不能为空");
- final BigDecimal value = Optional.ofNullable(indicatorValue.getIndicatorValue()).orElse(BigDecimal.ZERO);
- KpiGroupIndicatorLadders ladder = stepper.stream()
- .filter(r -> r.getLower().compareTo(value) <= 0)
- .filter(x -> x.getUpper().compareTo(value) > 0)
- .findAny()
- .orElse(null);
- if (PublicUtil.isEmpty(ladder)) {
+ if (Objects.isNull(ladder)) {
return BigDecimal.ZERO;
}
- BigDecimal baseScore = BigDecimal.valueOf(ladder.getStandardScore());
- saveHitLog(indicatorValue, groupIndicator.getId(), ladder.getId(), value);
- BigDecimal res = baseScore.multiply(value);
- if (res.compareTo(baseScore) > 0) {
- return baseScore;
- }
- return res;
+ saveParamHitLog(kpiGroupIndicatorId, ladder.getId(), rate, user);
+ BigDecimal standardScore = BigDecimal.valueOf(ladder.getStandardScore());
+ return standardScore.multiply(rate);
}
}
diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/kpi/NormalCalculator.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/kpi/NormalCalculator.java
index 433c692..a2d9d1a 100644
--- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/kpi/NormalCalculator.java
+++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/kpi/NormalCalculator.java
@@ -1,13 +1,16 @@
package cn.fw.morax.service.biz.calculator.kpi;
-import cn.fw.morax.domain.db.kpi.KpiGroupIndicator;
-import cn.fw.morax.domain.db.kpi.KpiPoolIndicatorValue;
+import cn.fw.morax.domain.bo.kpi.KpiIndicatorBO;
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorParam;
+import cn.fw.morax.domain.db.kpi.KpiGroupIndicatorPrecondition;
+import cn.fw.morax.domain.db.kpi.KpiGroupUser;
import cn.fw.morax.domain.enums.ScoreWayEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
-import java.util.Optional;
+import java.math.RoundingMode;
+import java.util.List;
/**
* @author : kurisu
@@ -25,13 +28,14 @@ public class NormalCalculator extends KpiAbsBaseCalculator {
}
@Override
- public BigDecimal calculate(KpiPoolIndicatorValue indicatorValue, KpiGroupIndicator groupIndicator) {
- BigDecimal baseScore = Optional.ofNullable(groupIndicator.getBaseScore()).map(BigDecimal::valueOf).orElse(BigDecimal.ZERO);
- BigDecimal value = Optional.ofNullable(indicatorValue.getIndicatorValue()).orElse(BigDecimal.ZERO);
- BigDecimal res = baseScore.multiply(value);
- if (res.compareTo(baseScore) > 0) {
- return baseScore;
- }
- return res;
+ public BigDecimal calculate(KpiGroupUser user, KpiIndicatorBO bo) {
+ final BigDecimal baseScore = BigDecimal.valueOf(bo.getBaseScore());
+ final Long kpiGroupIndicatorId = bo.getKpiGroupIndicatorId();
+ List list = queryPrecondition(kpiGroupIndicatorId, bo.getKpiGroupId());
+ BigDecimal coefficient = calcCoefficient(user, list);
+ List paramList = queryParam(kpiGroupIndicatorId, bo.getKpiGroupId());
+ BigDecimal finalIndValue = calculateFinalIndValue(paramList, user, kpiGroupIndicatorId);
+ BigDecimal multiply = baseScore.multiply(finalIndValue).multiply(coefficient);
+ return multiply.divide(BigDecimal.ONE, 2, RoundingMode.HALF_UP);
}
}
diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/salary/ConditionSalaryCalculator.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/salary/ConditionSalaryCalculator.java
index 518b46a..ac979f4 100644
--- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/salary/ConditionSalaryCalculator.java
+++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/salary/ConditionSalaryCalculator.java
@@ -1,25 +1,24 @@
package cn.fw.morax.service.biz.calculator.salary;
-import cn.fw.morax.domain.db.salary.SalaryGroupProject;
-import cn.fw.morax.domain.db.salary.SalaryGroupProjectSettin;
-import cn.fw.morax.domain.db.salary.SalaryGroupUser;
+import cn.fw.morax.domain.db.salary.*;
+import cn.fw.morax.domain.enums.ParamTypeEnum;
import cn.fw.morax.domain.enums.SalaryCalMethodEnum;
-import cn.fw.morax.domain.enums.SalaryValueTypeEnum;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
-import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
+import java.util.stream.Collectors;
/**
* @author : kurisu
* @version : 1.0
* @className : ConditionSalaryCalculator
- * @description : 条件薪资计算器
+ * @description : 条件薪资计算器 目前适用与车系提成计算
* @date : 2022-04-28 14:34
*/
@Component
@@ -27,28 +26,49 @@ import java.util.Optional;
public class ConditionSalaryCalculator extends SalaryBaseCalculator {
@Override
public BigDecimal calculate(SalaryGroupProject param1, SalaryGroupUser param2) {
- List settins = queryProjectSettins(param1.getId());
+ if (Boolean.TRUE.equals(param2.getProbationer())) {
+ return null;
+ }
+ final Long salaryGroupProjectId = param1.getId();
+ List settins = queryProjectSettins(salaryGroupProjectId);
if (CollectionUtils.isEmpty(settins)) {
+ log.error("[{}]薪酬项配置不存在", salaryGroupProjectId);
+ return BigDecimal.ZERO;
+ }
+ List preconditionList = queryPrecondition(salaryGroupProjectId);
+ boolean examined = examinePrecondition(preconditionList, param2);
+ if (!examined) {
return BigDecimal.ZERO;
}
- Optional projectValue = queryRawDataValue(param2.getUserId(), param2.getDataDate(), param1.getSalaryProjectCode(), SalaryValueTypeEnum.CONDITION);
- if (! projectValue.isPresent()) {
+ Map