Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
A
an-plus-hr
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
anjia-hr
an-plus-hr
Commits
0c887632
Commit
0c887632
authored
Dec 16, 2025
by
刘斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 异动记录增加岗位,增加发送站内信给管理员
parent
3f6786ac
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
189 additions
and
11 deletions
+189
-11
EmployeeChangeLog.java
...src/main/java/com/anplus/hr/domain/EmployeeChangeLog.java
+5
-0
StaffingPositionMonthSummary.java
...va/com/anplus/hr/domain/StaffingPositionMonthSummary.java
+69
-0
EmployeeTransferApplyParam.java
...m/anplus/hr/domain/params/EmployeeTransferApplyParam.java
+6
-0
EmployeeFlowTransferApplyVo.java
.../com/anplus/hr/domain/vo/EmployeeFlowTransferApplyVo.java
+6
-0
StaffingPositionMonthSummaryMapper.java
.../anplus/hr/mapper/StaffingPositionMonthSummaryMapper.java
+16
-0
EmployeeChangeLogServImpl.java
...com/anplus/hr/service/impl/EmployeeChangeLogServImpl.java
+1
-0
EmployeeFlowServImpl.java
...java/com/anplus/hr/service/impl/EmployeeFlowServImpl.java
+5
-0
EmployeeInfoServImpl.java
...java/com/anplus/hr/service/impl/EmployeeInfoServImpl.java
+6
-1
EmployeeScheduleService.java
...a/com/anplus/hr/service/impl/EmployeeScheduleService.java
+19
-10
SendMessageCmdExe.java
...com/anplus/hr/service/impl/command/SendMessageCmdExe.java
+49
-0
StaffingPositionMonthSummaryMapper.xml
...n/resources/mapper/StaffingPositionMonthSummaryMapper.xml
+7
-0
No files found.
admin/src/main/java/com/anplus/hr/domain/EmployeeChangeLog.java
View file @
0c887632
...
...
@@ -56,6 +56,11 @@ public class EmployeeChangeLog extends TenantModel {
*/
private
Long
employeeId
;
/**
* 主岗位
*/
private
String
position
;
/**
* 变动时间
*/
...
...
admin/src/main/java/com/anplus/hr/domain/StaffingPositionMonthSummary.java
0 → 100644
View file @
0c887632
package
com
.
anplus
.
hr
.
domain
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
top.binfast.common.mybatis.bean.model.TenantModel
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serial
;
/**
* 部门职位月度统计对象 staffing_position_month_summary
*
* @author LiuBin
* @date 2025-12-16
*/
@Getter
@Setter
@EqualsAndHashCode
(
callSuper
=
true
)
@AutoMapper
(
target
=
StaffingPlanData
.
class
,
convertGenerate
=
false
)
@TableName
(
"staffing_position_month_summary"
)
public
class
StaffingPositionMonthSummary
extends
TenantModel
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* 部门ID
*/
private
Long
deptId
;
/**
* 一级部门ID
*/
private
Long
lv1DeptId
;
/**
* 主岗位
*/
private
String
position
;
/**
* 月份
*/
private
Integer
month
;
/**
* 正式开始人数
*/
private
Integer
formalStartCount
;
/**
* 正式结束人数
*/
private
Integer
formalEndCount
;
/**
* 兼职开始人数
*/
private
Integer
partStartCount
;
/**
* 兼职结束人数
*/
private
Integer
partEndCount
;
}
admin/src/main/java/com/anplus/hr/domain/params/EmployeeTransferApplyParam.java
View file @
0c887632
...
...
@@ -51,6 +51,12 @@ public class EmployeeTransferApplyParam {
@NotNull
(
message
=
"部门id不能为空"
)
private
Long
deptId
;
/**
* 主岗位
*/
@NotBlank
(
message
=
"岗位不能为空"
)
private
String
position
;
/**
* 调配时间
*/
...
...
admin/src/main/java/com/anplus/hr/domain/vo/EmployeeFlowTransferApplyVo.java
View file @
0c887632
package
com
.
anplus
.
hr
.
domain
.
vo
;
import
cn.idev.excel.annotation.ExcelProperty
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
io.github.linpeilie.annotations.AutoMappers
;
...
...
@@ -22,4 +23,9 @@ public class EmployeeFlowTransferApplyVo extends EmployeeFlowVo {
* 内部个人履历
*/
private
String
internalResume
;
/**
* 主岗位
*/
private
String
position
;
}
admin/src/main/java/com/anplus/hr/mapper/StaffingPositionMonthSummaryMapper.java
0 → 100644
View file @
0c887632
package
com
.
anplus
.
hr
.
mapper
;
import
com.anplus.hr.domain.StaffingPositionMonthSummary
;
import
top.binfast.common.mybatis.mapper.BinBaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 部门职位月度统计Mapper接口
*
* @author LiuBin
* @date 2025-12-16
*/
@Mapper
public
interface
StaffingPositionMonthSummaryMapper
extends
BinBaseMapper
<
StaffingPositionMonthSummary
>
{
}
admin/src/main/java/com/anplus/hr/service/impl/EmployeeChangeLogServImpl.java
View file @
0c887632
...
...
@@ -120,6 +120,7 @@ public class EmployeeChangeLogServImpl extends ServiceImpl<EmployeeChangeLogMapp
changeLog
.
setDeptId
(
employeeInfo
.
getDeptId
());
changeLog
.
setPlateId
(
parentDeptId
);
changeLog
.
setPlate
(
parentDept
.
getName
());
changeLog
.
setPosition
(
employeeInfo
.
getPosition
());
changeLog
.
setType
(
changeType
);
changeLog
.
setChangeDate
(
changeDate
!=
null
?
changeDate
:
LocalDate
.
now
());
if
(
EmployeeChangeLogTypeConstant
.
Resign
.
equals
(
changeType
))
{
...
...
admin/src/main/java/com/anplus/hr/service/impl/EmployeeFlowServImpl.java
View file @
0c887632
...
...
@@ -153,6 +153,7 @@ public class EmployeeFlowServImpl extends ServiceImpl<EmployeeFlowMapper, Employ
case
HrFlowTypeConstant
.
TRANSFER
:
EmployeeFlowTransferApplyVo
employeeFlowTransferApplyVo
=
MapstructUtils
.
convert
(
employeeFlowVo
,
EmployeeFlowTransferApplyVo
.
class
);
employeeFlowTransferApplyVo
.
setInternalResume
(
employeeInfo
.
getInternalResume
());
employeeFlowTransferApplyVo
.
setPosition
(
employeeInfo
.
getPosition
());
employeeFlowVo
=
employeeFlowTransferApplyVo
;
break
;
case
HrFlowTypeConstant
.
RENEWAL_CONTRACT
:
...
...
@@ -511,6 +512,7 @@ public class EmployeeFlowServImpl extends ServiceImpl<EmployeeFlowMapper, Employ
EmployeeInfo
oldEmployeeInfo
=
new
EmployeeInfo
();
oldEmployeeInfo
.
setId
(
employeeInfo
.
getId
());
oldEmployeeInfo
.
setDeptId
(
employeeInfo
.
getDeptId
());
oldEmployeeInfo
.
setPosition
(
employeeInfo
.
getPosition
());
employeeInfo
.
setTransferApplyStatus
(
HrFlowEnum
.
FINISH
.
getStatus
());
LocalDate
transferDate
=
null
;
for
(
SysAuditLog
auditLog
:
auditLogs
)
{
...
...
@@ -530,6 +532,9 @@ public class EmployeeFlowServImpl extends ServiceImpl<EmployeeFlowMapper, Employ
case
"deptId"
:
employeeInfo
.
setDeptId
(
Convert
.
toLong
(
auditLog
.
getAfterVal
()));
break
;
case
"position"
:
employeeInfo
.
setPosition
(
auditLog
.
getAfterVal
());
break
;
case
"performanceRatio"
:
employeeInfo
.
setPerformanceRatio
(
auditLog
.
getAfterVal
());
break
;
...
...
admin/src/main/java/com/anplus/hr/service/impl/EmployeeInfoServImpl.java
View file @
0c887632
...
...
@@ -24,6 +24,7 @@ import com.anplus.hr.service.EmployeeFlowServ;
import
com.anplus.hr.service.EmployeeInfoServ
;
import
com.anplus.hr.service.EmployeeSysDeptServ
;
import
com.anplus.hr.service.impl.command.EmployeeFamilyMembersCmdExe
;
import
com.anplus.hr.service.impl.command.SendMessageCmdExe
;
import
com.baomidou.dynamic.datasource.annotation.DSTransactional
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
...
...
@@ -56,7 +57,6 @@ import top.binfast.common.mybatis.util.QueryUtil;
import
top.binfast.common.oss.core.OssService
;
import
top.binfast.common.oss.entity.UploadResult
;
import
java.time.LocalDate
;
import
java.util.*
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.stream.Stream
;
...
...
@@ -84,6 +84,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
private
final
EmployeeAsyncService
employeeAsyncService
;
private
final
EmployeeTrainingMapper
employeeTrainingMapper
;
private
final
InterviewProfileMapper
interviewProfileMapper
;
private
final
SendMessageCmdExe
sendMessageCmdExe
;
/**
* 分页查询员工信息列表
...
...
@@ -488,6 +489,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
boolean
flag
=
this
.
save
(
employeeInfo
);
if
(
flag
)
{
familyMembersCmdExe
.
insertByEmployee
(
param
.
getFamilyMembers
(),
employeeInfo
);
sendMessageCmdExe
.
sendMessageToAdmin
(
"有新员工录入,请及时处理"
);
}
return
flag
;
}
...
...
@@ -538,6 +540,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
boolean
flag
=
this
.
save
(
employeeInfo
);
if
(
flag
)
{
familyMembersCmdExe
.
insertByEmployee
(
param
.
getFamilyMembers
(),
employeeInfo
);
sendMessageCmdExe
.
sendMessageToAdmin
(
"有新员工录入,请及时处理"
);
}
return
flag
;
}
...
...
@@ -610,6 +613,8 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
"三级部门"
,
param
.
getThirdLevelDepartment
(),
list
);
employeeAuditLogServ
.
initAuditLog
(
"调职申请"
,
"deptId"
,
"部门序号"
,
Convert
.
toStr
(
param
.
getDeptId
()),
list
);
employeeAuditLogServ
.
initAuditLog
(
"调职申请"
,
"position"
,
"岗位"
,
param
.
getPosition
(),
list
);
employeeAuditLogServ
.
initAuditLog
(
"调职申请"
,
"transferDate"
,
"调配时间"
,
Convert
.
toStr
(
param
.
getTransferDate
()),
list
);
employeeAuditLogServ
.
initAuditLog
(
"调职申请"
,
"performanceRatio"
,
...
...
admin/src/main/java/com/anplus/hr/service/impl/EmployeeScheduleService.java
View file @
0c887632
...
...
@@ -5,18 +5,20 @@ import com.anplus.hr.constant.HrFlowEnum;
import
com.anplus.hr.constant.HrStatusEnum
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
com.anplus.hr.mapper.EmployeeInfoMapper
;
import
com.anplus.hr.service.impl.command.SendMessageCmdExe
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
top.binfast.common.sse.dto.SseMessageDto
;
import
top.binfast.common.sse.utils.SseMessageUtils
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 定时任务管理器
*
* @author 刘斌
* @date 2025/11/5 17:01
*/
...
...
@@ -26,6 +28,7 @@ import java.util.List;
public
class
EmployeeScheduleService
{
private
final
EmployeeInfoMapper
employeeInfoMapper
;
private
final
SendMessageCmdExe
sendMessageCmdExe
;
/**
* 方式1:使用cron表达式
...
...
@@ -46,6 +49,18 @@ public class EmployeeScheduleService {
executeSafely
(
"每月检查提醒"
,
this
::
remindPerMonth
);
}
/**
* 每月1号0点执行
*/
// @Scheduled(cron = "0 0 0 1 * ?")
// @Scheduled(cron = "0 30 9 * * ?")
// @Scheduled(cron = "0 0 23 L * ?")
public
void
monthlyInDay1Task
()
{
executeSafely
(
"每月1号0点执行"
,
()
->
{
System
.
out
.
println
(
"每月1号0点执行"
);
});
}
/**
* 每月15到20号号8点10分执行
*/
...
...
@@ -57,10 +72,7 @@ public class EmployeeScheduleService {
.
between
(
EmployeeInfo:
:
getExpectedRegularDate
,
LocalDate
.
now
(),
LocalDate
.
now
().
plusMonths
(
1
))
);
if
(
existNewRegularReminders
)
{
SseMessageDto
dto
=
new
SseMessageDto
();
dto
.
setMessage
(
"有新的转正提醒!请检查!"
);
dto
.
setUserIds
(
List
.
of
(
6L
));
SseMessageUtils
.
publishMessage
(
dto
);
sendMessageCmdExe
.
sendMessageToAdmin
(
"有新的转正提醒!请检查!"
);
}
boolean
existContractRenewalReminders
=
employeeInfoMapper
.
exists
(
new
LambdaUpdateWrapper
<
EmployeeInfo
>()
.
eq
(
EmployeeInfo:
:
getStatus
,
HrStatusEnum
.
REGULARIZATION
.
getStatus
())
...
...
@@ -68,10 +80,7 @@ public class EmployeeScheduleService {
.
between
(
EmployeeInfo:
:
getContractEndDate
,
LocalDate
.
now
(),
LocalDate
.
now
().
plusMonths
(
1
))
);
if
(
existContractRenewalReminders
)
{
SseMessageDto
dto
=
new
SseMessageDto
();
dto
.
setMessage
(
"有新的合同续约提醒!请检查!"
);
dto
.
setUserIds
(
List
.
of
(
6L
));
SseMessageUtils
.
publishMessage
(
dto
);
sendMessageCmdExe
.
sendMessageToAdmin
(
"有新的合同续约提醒!请检查!"
);
}
}
...
...
admin/src/main/java/com/anplus/hr/service/impl/command/SendMessageCmdExe.java
0 → 100644
View file @
0c887632
package
com
.
anplus
.
hr
.
service
.
impl
.
command
;
import
cn.hutool.core.collection.CollUtil
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Component
;
import
top.binfast.app.biz.sysapi.bean.model.auth.SysRole
;
import
top.binfast.app.biz.sysapi.dao.auth.SysRoleMapper
;
import
top.binfast.app.biz.sysapi.dao.auth.SysUserRoleMapper
;
import
top.binfast.common.sse.dto.SseMessageDto
;
import
top.binfast.common.sse.utils.SseMessageUtils
;
import
java.util.List
;
/**
* @author 刘斌
* @date 2025/12/16 20:08
*/
@Component
@RequiredArgsConstructor
public
class
SendMessageCmdExe
{
private
final
SysRoleMapper
sysRoleMapper
;
private
final
SysUserRoleMapper
sysUserRoleMapper
;
/**
* 发送消息给管理员
* 标识:hr_admin
*
* @param message 消息
*/
@Async
public
void
sendMessageToAdmin
(
String
message
)
{
SysRole
hrAdmin
=
sysRoleMapper
.
selectOne
(
new
LambdaUpdateWrapper
<
SysRole
>()
.
eq
(
SysRole:
:
getRoleKey
,
"hr_admin"
));
if
(
hrAdmin
==
null
)
{
return
;
}
List
<
Long
>
userIdList
=
sysUserRoleMapper
.
selectUserIdsByRoleId
(
hrAdmin
.
getId
());
if
(
CollUtil
.
isEmpty
(
userIdList
))
{
return
;
}
SseMessageDto
dto
=
new
SseMessageDto
();
dto
.
setUserIds
(
userIdList
);
dto
.
setMessage
(
message
);
SseMessageUtils
.
publishMessage
(
dto
);
}
}
admin/src/main/resources/mapper/StaffingPositionMonthSummaryMapper.xml
0 → 100644
View file @
0c887632
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.anplus.hr.mapper.StaffingPositionMonthSummaryMapper"
>
</mapper>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment