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
b00ed09c
Commit
b00ed09c
authored
Nov 21, 2025
by
刘斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 增加转正提醒,合同续约提醒
parent
3bc25ba8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
1545 additions
and
70 deletions
+1545
-70
HrFlowTypeConstant.java
.../main/java/com/anplus/hr/constant/HrFlowTypeConstant.java
+1
-1
ContractExpirationReminderCtrl.java
.../anplus/hr/controller/ContractExpirationReminderCtrl.java
+98
-0
EmployeeInfoCtrl.java
.../main/java/com/anplus/hr/controller/EmployeeInfoCtrl.java
+38
-2
EmployeeRegularReminderCtrl.java
...com/anplus/hr/controller/EmployeeRegularReminderCtrl.java
+98
-0
EmployeeInfo.java
admin/src/main/java/com/anplus/hr/domain/EmployeeInfo.java
+5
-0
ContractExpirationReminderListParam.java
...hr/domain/params/ContractExpirationReminderListParam.java
+89
-0
ContractExpirationReminderParam.java
...lus/hr/domain/params/ContractExpirationReminderParam.java
+102
-0
EmployeeChangeLogListParam.java
...m/anplus/hr/domain/params/EmployeeChangeLogListParam.java
+5
-0
EmployeeInfoListParam.java
...va/com/anplus/hr/domain/params/EmployeeInfoListParam.java
+5
-1
EmployeeInfoParam.java
...n/java/com/anplus/hr/domain/params/EmployeeInfoParam.java
+1
-1
EmployeePhoneBookListParam.java
...m/anplus/hr/domain/params/EmployeePhoneBookListParam.java
+5
-0
EmployeeRegularReminderListParam.java
...us/hr/domain/params/EmployeeRegularReminderListParam.java
+79
-0
EmployeeRegularReminderParam.java
...anplus/hr/domain/params/EmployeeRegularReminderParam.java
+96
-0
ContractExpirationReminderVo.java
...com/anplus/hr/domain/vo/ContractExpirationReminderVo.java
+114
-0
EmployeeRegularReminderVo.java
...va/com/anplus/hr/domain/vo/EmployeeRegularReminderVo.java
+107
-0
ContractExpirationReminderServ.java
...com/anplus/hr/service/ContractExpirationReminderServ.java
+69
-0
EmployeeAuditLogServ.java
...main/java/com/anplus/hr/service/EmployeeAuditLogServ.java
+1
-1
EmployeeInfoServ.java
...src/main/java/com/anplus/hr/service/EmployeeInfoServ.java
+14
-0
EmployeeRegularReminderServ.java
...va/com/anplus/hr/service/EmployeeRegularReminderServ.java
+69
-0
EmployeeSysDeptServ.java
.../main/java/com/anplus/hr/service/EmployeeSysDeptServ.java
+7
-0
ContractExpirationReminderServImpl.java
...s/hr/service/impl/ContractExpirationReminderServImpl.java
+153
-0
EmployeeChangeLogServImpl.java
...com/anplus/hr/service/impl/EmployeeChangeLogServImpl.java
+13
-1
EmployeeInfoResignServImpl.java
...om/anplus/hr/service/impl/EmployeeInfoResignServImpl.java
+7
-3
EmployeeInfoServImpl.java
...java/com/anplus/hr/service/impl/EmployeeInfoServImpl.java
+123
-41
EmployeePhoneBookServImpl.java
...com/anplus/hr/service/impl/EmployeePhoneBookServImpl.java
+13
-1
EmployeeRegularReminderServImpl.java
...plus/hr/service/impl/EmployeeRegularReminderServImpl.java
+157
-0
EmployeeScheduleService.java
...a/com/anplus/hr/service/impl/EmployeeScheduleService.java
+48
-10
EmployeeSysDeptServImpl.java
...a/com/anplus/hr/service/impl/EmployeeSysDeptServImpl.java
+13
-0
form.vue.vm
admin/src/main/resources/vm/vue/form.vue.vm
+15
-8
No files found.
admin/src/main/java/com/anplus/hr/constant/HrFlowTypeConstant.java
View file @
b00ed09c
...
...
@@ -59,7 +59,7 @@ public interface HrFlowTypeConstant {
/**
* 续签流程编码
*/
String
RENEWAL_CONTRACT_CODE
=
"
r
enewalContractFlow"
;
String
RENEWAL_CONTRACT_CODE
=
"
hrR
enewalContractFlow"
;
/**
* 部门调整流程编码
...
...
admin/src/main/java/com/anplus/hr/controller/ContractExpirationReminderCtrl.java
0 → 100644
View file @
b00ed09c
package
com
.
anplus
.
hr
.
controller
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.anplus.hr.domain.params.ContractExpirationReminderListParam
;
import
com.anplus.hr.domain.vo.ContractExpirationReminderVo
;
import
com.anplus.hr.service.ContractExpirationReminderServ
;
import
jakarta.annotation.Resource
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
top.binfast.common.core.constant.BusinessType
;
import
top.binfast.common.excel.annotion.ExcelExport
;
import
top.binfast.common.log.annotation.PinSysLog
;
import
java.util.List
;
/**
* 员工合同续签提醒
*
* @author LiuBin
* @date 2025-11-20
*/
@Validated
@RestController
@RequestMapping
(
"/employee/contractExpiration"
)
public
class
ContractExpirationReminderCtrl
{
@Resource
private
ContractExpirationReminderServ
contractExpirationReminderServ
;
/**
* 查询员工合同续签提醒列表
*/
@SaCheckPermission
(
"employee:contractExpiration:list"
)
@GetMapping
(
"/page"
)
public
PageResponse
<
ContractExpirationReminderVo
>
pageList
(
ContractExpirationReminderListParam
param
)
{
return
contractExpirationReminderServ
.
queryPageList
(
param
);
}
/**
* 导出员工合同续签提醒列表
*/
@ExcelExport
@SaCheckPermission
(
"employee:contractExpiration:export"
)
@PinSysLog
(
value
=
"员工合同续签提醒"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export"
)
public
List
<
ContractExpirationReminderVo
>
export
(
ContractExpirationReminderListParam
param
)
{
return
contractExpirationReminderServ
.
queryList
(
param
);
}
// /**
// * 获取员工合同续签提醒详细信息
// *
// * @param id 主键
// */
// @SaCheckPermission("employee:contractExpirationReminder:query")
// @GetMapping("/{id}")
// public SingleResponse<ContractExpirationReminderVo> getDetail(@PathVariable @Min(1)
// Long id) {
// return SingleResponse.of(contractExpirationReminderServ.queryById(id));
// }
//
// /**
// * 新增员工合同续签提醒
// */
// @SaCheckPermission("employee:contractExpirationReminder:add")
// @PinSysLog(value = "员工合同续签提醒", businessType = BusinessType.INSERT)
// @PostMapping()
// public Response add(@Validated(AddGroup.class) @RequestBody ContractExpirationReminderParam param) {
// return ResponseUtils.ofResult(contractExpirationReminderServ.insertByParam(param));
// }
//
// /**
// * 修改员工合同续签提醒
// */
// @SaCheckPermission("employee:contractExpirationReminder:edit")
// @PinSysLog(value = "员工合同续签提醒", businessType = BusinessType.UPDATE)
// @PutMapping()
// public Response edit(@Validated(EditGroup.class) @RequestBody ContractExpirationReminderParam param) {
// return ResponseUtils.ofResult(contractExpirationReminderServ.updateByParam(param));
// }
//
// /**
// * 删除员工合同续签提醒
// *
// * @param ids 主键串
// */
// @SaCheckPermission("employee:contractExpirationReminder:remove")
// @PinSysLog(value = "员工合同续签提醒", businessType = BusinessType.DELETE)
// @DeleteMapping("/{ids}")
// public Response remove(@NotEmpty(message = "主键不能为空")
// @PathVariable Long[] ids) {
// return ResponseUtils.ofResult(contractExpirationReminderServ.delByIds(List.of(ids)));
// }
}
\ No newline at end of file
admin/src/main/java/com/anplus/hr/controller/EmployeeInfoCtrl.java
View file @
b00ed09c
package
com
.
anplus
.
hr
.
controller
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
com.alibaba.cola.dto.MultiResponse
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.alibaba.cola.dto.Response
;
import
com.alibaba.cola.dto.SingleResponse
;
import
com.anplus.hr.domain.params.*
;
import
com.anplus.hr.domain.vo.EmployeeInfoImportVo
;
import
com.anplus.hr.domain.vo.EmployeeInfoResignImportVo
;
import
com.anplus.hr.domain.vo.EmployeeInfoVo
;
import
com.anplus.hr.service.EmployeeInfoServ
;
import
jakarta.annotation.Resource
;
...
...
@@ -16,6 +16,9 @@ import org.dromara.core.trans.anno.TransMethodResult;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
top.binfast.app.biz.sysapi.bean.params.sysDept.SysDeptParam
;
import
top.binfast.app.biz.sysapi.bean.vo.sysDept.SysDeptDTO
;
import
top.binfast.app.biz.sysbiz.service.SysDeptServ
;
import
top.binfast.common.core.constant.BusinessType
;
import
top.binfast.common.core.util.ResponseUtils
;
import
top.binfast.common.core.validate.AddGroup
;
...
...
@@ -42,6 +45,8 @@ public class EmployeeInfoCtrl {
@Resource
private
EmployeeInfoServ
employeeInfoServ
;
@Resource
private
SysDeptServ
deptService
;
/**
* 查询员工信息列表
...
...
@@ -119,7 +124,7 @@ public class EmployeeInfoCtrl {
@SaCheckPermission
(
"employee:info:query"
)
@GetMapping
(
"/detail/{id}"
)
public
SingleResponse
<
EmployeeInfoVo
>
infoDetail
(
@PathVariable
@Min
(
1
)
Long
id
)
{
Long
id
)
{
return
SingleResponse
.
of
(
employeeInfoServ
.
infoDetail
(
id
));
}
...
...
@@ -178,6 +183,28 @@ public class EmployeeInfoCtrl {
return
ResponseUtils
.
ofResult
(
employeeInfoServ
.
applyResign
(
param
));
}
/**
* 申请离职
*/
@NoRepeatSubmit
(
interval
=
60_000
)
@SaCheckPermission
(
"employee:info:regular"
)
@PinSysLog
(
value
=
"员工信息-转正申请"
,
businessType
=
BusinessType
.
UPDATE
)
@PostMapping
(
"/applyRegular"
)
public
Response
applyRegular
(
@Validated
@RequestBody
EmployeeRegularApplyParam
param
)
{
return
ResponseUtils
.
ofResult
(
employeeInfoServ
.
applyRegular
(
param
));
}
/**
* 申请离职
*/
@NoRepeatSubmit
(
interval
=
60_000
)
@SaCheckPermission
(
"employee:info:contractRenewal"
)
@PinSysLog
(
value
=
"员工信息-合同续约申请"
,
businessType
=
BusinessType
.
UPDATE
)
@PostMapping
(
"/applyRenewalContract"
)
public
Response
applyRenewalContract
(
@Validated
@RequestBody
EmployeeRenewalContractApplyParam
param
)
{
return
ResponseUtils
.
ofResult
(
employeeInfoServ
.
applyRenewalContract
(
param
));
}
/**
* 删除员工信息
*
...
...
@@ -191,4 +218,13 @@ public class EmployeeInfoCtrl {
@PathVariable
Long
[]
ids
)
{
return
ResponseUtils
.
ofResult
(
employeeInfoServ
.
delByIds
(
List
.
of
(
ids
)));
}
/**
* 获取部门树列表
*/
@SaCheckPermission
(
"employee:info:export"
)
@GetMapping
(
"/deptTree"
)
public
MultiResponse
<
SysDeptDTO
>
deptTree
(
SysDeptParam
dept
)
{
return
MultiResponse
.
of
(
deptService
.
selectDeptTreeList
(
dept
));
}
}
\ No newline at end of file
admin/src/main/java/com/anplus/hr/controller/EmployeeRegularReminderCtrl.java
0 → 100644
View file @
b00ed09c
package
com
.
anplus
.
hr
.
controller
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.anplus.hr.domain.params.EmployeeRegularReminderListParam
;
import
com.anplus.hr.domain.vo.EmployeeRegularReminderVo
;
import
com.anplus.hr.service.EmployeeRegularReminderServ
;
import
jakarta.annotation.Resource
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
top.binfast.common.core.constant.BusinessType
;
import
top.binfast.common.excel.annotion.ExcelExport
;
import
top.binfast.common.log.annotation.PinSysLog
;
import
java.util.List
;
/**
* 转正提醒
*
* @author LiuBin
* @date 2025-11-20
*/
@Validated
@RestController
@RequestMapping
(
"/employee/regularReminder"
)
public
class
EmployeeRegularReminderCtrl
{
@Resource
private
EmployeeRegularReminderServ
employeeRegularReminderServ
;
/**
* 查询转正提醒列表
*/
@SaCheckPermission
(
"employee:regularReminder:list"
)
@GetMapping
(
"/page"
)
public
PageResponse
<
EmployeeRegularReminderVo
>
pageList
(
EmployeeRegularReminderListParam
param
)
{
return
employeeRegularReminderServ
.
queryPageList
(
param
);
}
/**
* 导出转正提醒列表
*/
@ExcelExport
@SaCheckPermission
(
"employee:regularReminder:export"
)
@PinSysLog
(
value
=
"转正提醒"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export"
)
public
List
<
EmployeeRegularReminderVo
>
export
(
EmployeeRegularReminderListParam
param
)
{
return
employeeRegularReminderServ
.
queryList
(
param
);
}
// /**
// * 获取转正提醒详细信息
// *
// * @param id 主键
// */
// @SaCheckPermission("employee:regularReminder:query")
// @GetMapping("/{id}")
// public SingleResponse<EmployeeRegularReminderVo> getDetail(@PathVariable @Min(1)
// Long id) {
// return SingleResponse.of(employeeRegularReminderServ.queryById(id));
// }
// /**
// * 新增转正提醒
// */
// @SaCheckPermission("employee:regularReminder:add")
// @PinSysLog(value = "转正提醒", businessType = BusinessType.INSERT)
// @PostMapping()
// public Response add(@Validated(AddGroup.class) @RequestBody EmployeeRegularReminderParam param) {
// return ResponseUtils.ofResult(employeeRegularReminderServ.insertByParam(param));
// }
//
// /**
// * 修改转正提醒
// */
// @SaCheckPermission("employee:regularReminder:edit")
// @PinSysLog(value = "转正提醒", businessType = BusinessType.UPDATE)
// @PutMapping()
// public Response edit(@Validated(EditGroup.class) @RequestBody EmployeeRegularReminderParam param) {
// return ResponseUtils.ofResult(employeeRegularReminderServ.updateByParam(param));
// }
//
// /**
// * 删除转正提醒
// *
// * @param ids 主键串
// */
// @SaCheckPermission("employee:regularReminder:remove")
// @PinSysLog(value = "转正提醒", businessType = BusinessType.DELETE)
// @DeleteMapping("/{ids}")
// public Response remove(@NotEmpty(message = "主键不能为空")
// @PathVariable Long[] ids) {
// return ResponseUtils.ofResult(employeeRegularReminderServ.delByIds(List.of(ids)));
// }
}
\ No newline at end of file
admin/src/main/java/com/anplus/hr/domain/EmployeeInfo.java
View file @
b00ed09c
...
...
@@ -360,6 +360,11 @@ public class EmployeeInfo extends TenantModel {
*/
private
LocalDate
regularizationDate
;
/**
* 预计转正时间
*/
private
LocalDate
expectedRegularDate
;
/**
* 奖励情况
*/
...
...
admin/src/main/java/com/anplus/hr/domain/params/ContractExpirationReminderListParam.java
0 → 100644
View file @
b00ed09c
package
com
.
anplus
.
hr
.
domain
.
params
;
import
lombok.Getter
;
import
lombok.Setter
;
import
top.binfast.common.core.bean.params.PageQueryParam
;
import
java.time.LocalDate
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* 员工合同续签提醒分页对象 employee_contract_expiration_reminder
*
* @author LiuBin
* @date 2025-11-20
*/
@Getter
@Setter
public
class
ContractExpirationReminderListParam
extends
PageQueryParam
{
/**
* 板块
*/
private
String
plate
;
/**
* 一级部门
*/
private
String
firstLevelDepartment
;
/**
* 二级部门
*/
private
String
secondLevelDepartment
;
/**
* 三级部门
*/
private
String
thirdLevelDepartment
;
/**
* 部门ID
*/
private
Long
deptId
;
/**
* 主岗位
*/
private
String
position
;
/**
* 姓名
*/
private
String
name
;
/**
* 手机号码
*/
private
String
phoneNumber
;
/**
* 劳动合同开始时间
*/
private
LocalDate
contractStartDate
;
/**
* 劳动合同截止时间
*/
private
LocalDate
contractEndDate
;
/**
* 合同形式
*/
private
String
contractForm
;
/**
* 备注
*/
private
String
remarks
;
/**
* 归属部门id(部门树)
*/
private
Long
belongDeptId
;
private
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
}
admin/src/main/java/com/anplus/hr/domain/params/ContractExpirationReminderParam.java
0 → 100644
View file @
b00ed09c
package
com
.
anplus
.
hr
.
domain
.
params
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
jakarta.validation.constraints.NotBlank
;
import
jakarta.validation.constraints.NotNull
;
import
lombok.Data
;
import
top.binfast.common.core.validate.AddGroup
;
import
top.binfast.common.core.validate.EditGroup
;
import
java.time.LocalDate
;
/**
* 员工合同续签提醒业务对象 employee_contract_expiration_reminder
*
* @author LiuBin
* @date 2025-11-20
*/
@Data
@AutoMapper
(
target
=
EmployeeInfo
.
class
,
reverseConvertGenerate
=
false
)
public
class
ContractExpirationReminderParam
{
/**
* 主键
*/
@NotNull
(
message
=
"主键不能为空"
,
groups
=
{
EditGroup
.
class
})
private
Long
id
;
/**
* 板块
*/
@NotBlank
(
message
=
"板块不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
plate
;
/**
* 一级部门
*/
@NotBlank
(
message
=
"一级部门不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
firstLevelDepartment
;
/**
* 二级部门
*/
@NotBlank
(
message
=
"二级部门不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
secondLevelDepartment
;
/**
* 三级部门
*/
@NotBlank
(
message
=
"三级部门不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
thirdLevelDepartment
;
/**
* 部门ID
*/
@NotNull
(
message
=
"部门ID不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
deptId
;
/**
* 主岗位
*/
@NotBlank
(
message
=
"主岗位不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
position
;
/**
* 姓名
*/
@NotBlank
(
message
=
"姓名不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
name
;
/**
* 手机号码
*/
@NotBlank
(
message
=
"手机号码不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
phoneNumber
;
/**
* 劳动合同开始时间
*/
@NotNull
(
message
=
"劳动合同开始时间不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
LocalDate
contractStartDate
;
/**
* 劳动合同截止时间
*/
@NotNull
(
message
=
"劳动合同截止时间不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
LocalDate
contractEndDate
;
/**
* 合同形式
*/
@NotBlank
(
message
=
"合同形式不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
contractForm
;
/**
* 备注
*/
@NotBlank
(
message
=
"备注不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
remarks
;
}
admin/src/main/java/com/anplus/hr/domain/params/EmployeeChangeLogListParam.java
View file @
b00ed09c
...
...
@@ -52,6 +52,11 @@ public class EmployeeChangeLogListParam extends PageQueryParam {
*/
private
String
resignYearsOfServiceType
;
/**
* 归属部门id(部门树)
*/
private
Long
belongDeptId
;
private
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
...
...
admin/src/main/java/com/anplus/hr/domain/params/EmployeeInfoListParam.java
View file @
b00ed09c
...
...
@@ -46,7 +46,7 @@ public class EmployeeInfoListParam extends PageQueryParam {
/**
* 工号
*/
private
String
employee
Id
;
private
String
employee
No
;
/**
* 职级
...
...
@@ -443,6 +443,10 @@ public class EmployeeInfoListParam extends PageQueryParam {
// */
// private Integer transferApplyStatus;
/**
* 归属部门id(部门树)
*/
private
Long
belongDeptId
;
private
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
...
...
admin/src/main/java/com/anplus/hr/domain/params/EmployeeInfoParam.java
View file @
b00ed09c
...
...
@@ -60,7 +60,7 @@ public class EmployeeInfoParam {
* 工号
*/
// @NotBlank(message = "工号不能为空", groups = { AddGroup.class, EditGroup.class })
private
String
employee
Id
;
private
String
employee
No
;
/**
* 职级
...
...
admin/src/main/java/com/anplus/hr/domain/params/EmployeePhoneBookListParam.java
View file @
b00ed09c
...
...
@@ -71,6 +71,11 @@ public class EmployeePhoneBookListParam extends PageQueryParam {
*/
private
String
remarks
;
/**
* 归属部门id(部门树)
*/
private
Long
belongDeptId
;
private
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
...
...
admin/src/main/java/com/anplus/hr/domain/params/EmployeeRegularReminderListParam.java
0 → 100644
View file @
b00ed09c
package
com
.
anplus
.
hr
.
domain
.
params
;
import
lombok.Getter
;
import
lombok.Setter
;
import
top.binfast.common.core.bean.params.PageQueryParam
;
import
java.time.LocalDate
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* 转正提醒分页对象 employee_regular_reminder
*
* @author LiuBin
* @date 2025-11-20
*/
@Getter
@Setter
public
class
EmployeeRegularReminderListParam
extends
PageQueryParam
{
/**
* 板块
*/
private
String
plate
;
/**
* 一级部门
*/
private
String
firstLevelDepartment
;
/**
* 二级部门
*/
private
String
secondLevelDepartment
;
/**
* 三级部门
*/
private
String
thirdLevelDepartment
;
/**
* 部门ID
*/
private
Long
deptId
;
/**
* 主岗位
*/
private
String
position
;
/**
* 姓名
*/
private
String
name
;
/**
* 手机号码
*/
private
String
phoneNumber
;
/**
* 入职时间
*/
private
LocalDate
entryDate
;
/**
* 转正时间
*/
private
LocalDate
expectedRegularDate
;
/**
* 归属部门id(部门树)
*/
private
Long
belongDeptId
;
private
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
}
admin/src/main/java/com/anplus/hr/domain/params/EmployeeRegularReminderParam.java
0 → 100644
View file @
b00ed09c
package
com
.
anplus
.
hr
.
domain
.
params
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
jakarta.validation.constraints.NotBlank
;
import
jakarta.validation.constraints.NotNull
;
import
lombok.Data
;
import
top.binfast.common.core.validate.AddGroup
;
import
top.binfast.common.core.validate.EditGroup
;
import
java.time.LocalDate
;
/**
* 转正提醒业务对象 employee_regular_reminder
*
* @author LiuBin
* @date 2025-11-20
*/
@Data
@AutoMapper
(
target
=
EmployeeInfo
.
class
,
reverseConvertGenerate
=
false
)
public
class
EmployeeRegularReminderParam
{
/**
* 主键
*/
@NotNull
(
message
=
"主键不能为空"
,
groups
=
{
EditGroup
.
class
})
private
Long
id
;
/**
* 板块
*/
@NotBlank
(
message
=
"板块不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
plate
;
/**
* 一级部门
*/
@NotBlank
(
message
=
"一级部门不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
firstLevelDepartment
;
/**
* 二级部门
*/
@NotBlank
(
message
=
"二级部门不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
secondLevelDepartment
;
/**
* 三级部门
*/
@NotBlank
(
message
=
"三级部门不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
thirdLevelDepartment
;
/**
* 部门ID
*/
@NotNull
(
message
=
"部门ID不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
deptId
;
/**
* 主岗位
*/
@NotBlank
(
message
=
"主岗位不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
position
;
/**
* 姓名
*/
@NotBlank
(
message
=
"姓名不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
name
;
/**
* 手机号码
*/
@NotBlank
(
message
=
"手机号码不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
phoneNumber
;
/**
* 入职时间
*/
@NotNull
(
message
=
"入职时间不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
LocalDate
entryDate
;
/**
* 转正时间
*/
@NotNull
(
message
=
"转正时间不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
LocalDate
expectedRegularDate
;
/**
* 备注
*/
@NotBlank
(
message
=
"备注不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
remarks
;
}
admin/src/main/java/com/anplus/hr/domain/vo/ContractExpirationReminderVo.java
0 → 100644
View file @
b00ed09c
package
com
.
anplus
.
hr
.
domain
.
vo
;
import
cn.idev.excel.annotation.ExcelIgnore
;
import
cn.idev.excel.annotation.ExcelIgnoreUnannotated
;
import
cn.idev.excel.annotation.ExcelProperty
;
import
cn.idev.excel.annotation.write.style.ColumnWidth
;
import
cn.idev.excel.annotation.write.style.ContentRowHeight
;
import
cn.idev.excel.annotation.write.style.HeadRowHeight
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDate
;
/**
* 员工合同续签提醒视图对象 employee_contract_expiration_reminder
*
* @author LiuBin
* @date 2025-11-20
*/
@Data
@ExcelIgnoreUnannotated
@ContentRowHeight
(
30
)
@HeadRowHeight
(
32
)
@ColumnWidth
(
20
)
@AutoMapper
(
target
=
EmployeeInfo
.
class
)
public
class
ContractExpirationReminderVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
private
Long
id
;
/**
* 板块
*/
@ExcelProperty
(
value
=
{
"合同续签提醒"
,
"板块"
})
private
String
plate
;
/**
* 一级部门
*/
@ExcelProperty
(
value
=
{
"合同续签提醒"
,
"一级部门"
})
private
String
firstLevelDepartment
;
/**
* 二级部门
*/
@ExcelProperty
(
value
=
{
"合同续签提醒"
,
"二级部门"
})
private
String
secondLevelDepartment
;
/**
* 三级部门
*/
@ExcelProperty
(
value
=
{
"合同续签提醒"
,
"三级部门"
})
private
String
thirdLevelDepartment
;
/**
* 部门ID
*/
@ExcelIgnore
private
Long
deptId
;
/**
* 主岗位
*/
@ExcelProperty
(
value
=
{
"合同续签提醒"
,
"主岗位"
})
private
String
position
;
/**
* 姓名
*/
@ExcelProperty
(
value
=
{
"合同续签提醒"
,
"姓名"
})
private
String
name
;
/**
* 手机号码
*/
@ExcelProperty
(
value
=
{
"合同续签提醒"
,
"手机号码"
})
private
String
phoneNumber
;
/**
* 劳动合同开始时间
*/
@ExcelProperty
(
value
=
{
"合同续签提醒"
,
"合同开始时间"
})
private
LocalDate
contractStartDate
;
/**
* 劳动合同截止时间
*/
@ExcelProperty
(
value
=
{
"合同续签提醒"
,
"合同截止时间"
})
private
LocalDate
contractEndDate
;
/**
* 合同形式
*/
@ExcelProperty
(
value
=
{
"合同续签提醒"
,
"合同形式"
})
private
String
contractForm
;
/**
* 备注
*/
@ExcelProperty
(
value
=
{
"合同续签提醒"
,
"备注"
})
private
String
remarks
;
}
admin/src/main/java/com/anplus/hr/domain/vo/EmployeeRegularReminderVo.java
0 → 100644
View file @
b00ed09c
package
com
.
anplus
.
hr
.
domain
.
vo
;
import
cn.idev.excel.annotation.ExcelIgnore
;
import
cn.idev.excel.annotation.ExcelIgnoreUnannotated
;
import
cn.idev.excel.annotation.ExcelProperty
;
import
cn.idev.excel.annotation.write.style.ColumnWidth
;
import
cn.idev.excel.annotation.write.style.ContentRowHeight
;
import
cn.idev.excel.annotation.write.style.HeadRowHeight
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDate
;
/**
* 转正提醒视图对象 employee_regular_reminder
*
* @author LiuBin
* @date 2025-11-20
*/
@Data
@ExcelIgnoreUnannotated
@ContentRowHeight
(
30
)
@HeadRowHeight
(
32
)
@ColumnWidth
(
20
)
@AutoMapper
(
target
=
EmployeeInfo
.
class
)
public
class
EmployeeRegularReminderVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
private
Long
id
;
/**
* 板块
*/
@ExcelProperty
(
value
=
{
"转正提醒"
,
"板块"
})
private
String
plate
;
/**
* 一级部门
*/
@ExcelProperty
(
value
=
{
"转正提醒"
,
"一级部门"
})
private
String
firstLevelDepartment
;
/**
* 二级部门
*/
@ExcelProperty
(
value
=
{
"转正提醒"
,
"二级部门"
})
private
String
secondLevelDepartment
;
/**
* 三级部门
*/
@ExcelProperty
(
value
=
{
"转正提醒"
,
"三级部门"
})
private
String
thirdLevelDepartment
;
/**
* 部门ID
*/
@ExcelIgnore
private
Long
deptId
;
/**
* 主岗位
*/
@ExcelProperty
(
value
=
{
"转正提醒"
,
"主岗位"
})
private
String
position
;
/**
* 姓名
*/
@ExcelProperty
(
value
=
{
"转正提醒"
,
"姓名"
})
private
String
name
;
/**
* 手机号码
*/
@ExcelProperty
(
value
=
{
"转正提醒"
,
"手机"
})
private
String
phoneNumber
;
/**
* 入职时间
*/
@ExcelProperty
(
value
=
{
"转正提醒"
,
"入职时间"
})
private
LocalDate
entryDate
;
/**
* 转正时间
*/
@ExcelProperty
(
value
=
{
"转正提醒"
,
"转正时间"
})
private
LocalDate
expectedRegularDate
;
/**
* 备注
*/
@ExcelProperty
(
value
=
{
"转正提醒"
,
"备注"
})
private
String
remarks
;
}
admin/src/main/java/com/anplus/hr/service/ContractExpirationReminderServ.java
0 → 100644
View file @
b00ed09c
package
com
.
anplus
.
hr
.
service
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
com.anplus.hr.domain.params.ContractExpirationReminderListParam
;
import
com.anplus.hr.domain.params.ContractExpirationReminderParam
;
import
com.anplus.hr.domain.vo.ContractExpirationReminderVo
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.List
;
/**
* 员工合同续签提醒Service接口
*
* @author LiuBin
* @date 2025-11-20
*/
public
interface
ContractExpirationReminderServ
extends
IService
<
EmployeeInfo
>
{
/**
* 分页查询员工合同续签提醒列表
*
* @param param 查询条件
* @return 员工合同续签提醒分页列表
*/
PageResponse
<
ContractExpirationReminderVo
>
queryPageList
(
ContractExpirationReminderListParam
param
);
/**
* 查询符合条件的员工合同续签提醒列表
*
* @param param 查询条件
* @return 员工合同续签提醒列表
*/
List
<
ContractExpirationReminderVo
>
queryList
(
ContractExpirationReminderListParam
param
);
/**
* 查询员工合同续签提醒
*
* @param id 主键
* @return 员工合同续签提醒
*/
ContractExpirationReminderVo
queryById
(
Long
id
);
/**
* 新增员工合同续签提醒
*
* @param param 员工合同续签提醒
* @return 是否新增成功
*/
Boolean
insertByParam
(
ContractExpirationReminderParam
param
);
/**
* 修改员工合同续签提醒
*
* @param param 员工合同续签提醒
* @return 是否修改成功
*/
Boolean
updateByParam
(
ContractExpirationReminderParam
param
);
/**
* 校验并批量删除员工合同续签提醒信息
*
* @param ids 待删除的主键集合
* @return 是否删除成功
*/
Boolean
delByIds
(
List
<
Long
>
ids
);
}
admin/src/main/java/com/anplus/hr/service/EmployeeAuditLogServ.java
View file @
b00ed09c
...
...
@@ -14,7 +14,7 @@ public interface EmployeeAuditLogServ {
Boolean
saveAuditLogs
(
List
<
SysAuditLog
>
auditLog
);
default
void
save
AuditLog
(
String
auditName
,
String
auditField
,
String
auditFieldName
,
String
afterVal
,
List
<
SysAuditLog
>
list
)
{
default
void
init
AuditLog
(
String
auditName
,
String
auditField
,
String
auditFieldName
,
String
afterVal
,
List
<
SysAuditLog
>
list
)
{
SysAuditLog
auditLog
=
new
SysAuditLog
();
auditLog
.
setAuditName
(
auditName
);
auditLog
.
setAuditField
(
auditField
);
...
...
admin/src/main/java/com/anplus/hr/service/EmployeeInfoServ.java
View file @
b00ed09c
...
...
@@ -170,4 +170,18 @@ public interface EmployeeInfoServ extends IService<EmployeeInfo> {
return
builder
.
toString
();
}
default
String
buildPartDeptNameStr
(
EmployeeInfoImportVo
importVo
)
{
StringBuilder
builder
=
new
StringBuilder
(
importVo
.
getPartTimePlate
());
if
(
StrUtil
.
isNotBlank
(
importVo
.
getPartTimeFirstDept
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getPartTimeFirstDept
());
}
if
(
StrUtil
.
isNotBlank
(
importVo
.
getPartTimeSecondDept
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getPartTimeSecondDept
());
}
if
(
StrUtil
.
isNotBlank
(
importVo
.
getPartTimeThirdDept
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getPartTimeThirdDept
());
}
return
builder
.
toString
();
}
}
admin/src/main/java/com/anplus/hr/service/EmployeeRegularReminderServ.java
0 → 100644
View file @
b00ed09c
package
com
.
anplus
.
hr
.
service
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
com.anplus.hr.domain.params.EmployeeRegularReminderListParam
;
import
com.anplus.hr.domain.params.EmployeeRegularReminderParam
;
import
com.anplus.hr.domain.vo.EmployeeRegularReminderVo
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.List
;
/**
* 转正提醒Service接口
*
* @author LiuBin
* @date 2025-11-20
*/
public
interface
EmployeeRegularReminderServ
extends
IService
<
EmployeeInfo
>
{
/**
* 分页查询转正提醒列表
*
* @param param 查询条件
* @return 转正提醒分页列表
*/
PageResponse
<
EmployeeRegularReminderVo
>
queryPageList
(
EmployeeRegularReminderListParam
param
);
/**
* 查询符合条件的转正提醒列表
*
* @param param 查询条件
* @return 转正提醒列表
*/
List
<
EmployeeRegularReminderVo
>
queryList
(
EmployeeRegularReminderListParam
param
);
/**
* 查询转正提醒
*
* @param id 主键
* @return 转正提醒
*/
EmployeeRegularReminderVo
queryById
(
Long
id
);
/**
* 新增转正提醒
*
* @param param 转正提醒
* @return 是否新增成功
*/
Boolean
insertByParam
(
EmployeeRegularReminderParam
param
);
/**
* 修改转正提醒
*
* @param param 转正提醒
* @return 是否修改成功
*/
Boolean
updateByParam
(
EmployeeRegularReminderParam
param
);
/**
* 校验并批量删除转正提醒信息
*
* @param ids 待删除的主键集合
* @return 是否删除成功
*/
Boolean
delByIds
(
List
<
Long
>
ids
);
}
admin/src/main/java/com/anplus/hr/service/EmployeeSysDeptServ.java
View file @
b00ed09c
...
...
@@ -18,4 +18,11 @@ public interface EmployeeSysDeptServ {
Map
<
String
,
Long
>
selectJoinDeptNames
();
/**
* 构建部门查询条件
*
* @param belongDeptId 部门id
*/
List
<
Long
>
buildQueryWrapper
(
Long
belongDeptId
);
}
admin/src/main/java/com/anplus/hr/service/impl/ContractExpirationReminderServImpl.java
0 → 100644
View file @
b00ed09c
package
com
.
anplus
.
hr
.
service
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.anplus.hr.constant.HrStatusEnum
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
com.anplus.hr.domain.params.ContractExpirationReminderListParam
;
import
com.anplus.hr.domain.params.ContractExpirationReminderParam
;
import
com.anplus.hr.domain.vo.ContractExpirationReminderVo
;
import
com.anplus.hr.mapper.EmployeeInfoMapper
;
import
com.anplus.hr.service.ContractExpirationReminderServ
;
import
com.anplus.hr.service.EmployeeSysDeptServ
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
top.binfast.common.core.util.MapstructUtils
;
import
top.binfast.common.mybatis.util.QueryUtil
;
import
java.time.LocalDate
;
import
java.util.List
;
/**
* 员工合同续签提醒Service业务层处理
*
* @author LiuBin
* @date 2025-11-20
*/
@RequiredArgsConstructor
@Service
public
class
ContractExpirationReminderServImpl
extends
ServiceImpl
<
EmployeeInfoMapper
,
EmployeeInfo
>
implements
ContractExpirationReminderServ
{
private
final
EmployeeInfoMapper
employeeInfoMapper
;
private
final
EmployeeSysDeptServ
employeeSysDeptServ
;
/**
* 分页查询员工合同续签提醒列表
*
* @param param 查询条件
* @return 员工合同续签提醒分页列表
*/
@Override
public
PageResponse
<
ContractExpirationReminderVo
>
queryPageList
(
ContractExpirationReminderListParam
param
)
{
Page
<
EmployeeInfo
>
page
=
QueryUtil
.
getPage
(
param
);
LambdaQueryWrapper
<
EmployeeInfo
>
lambdaQuery
=
this
.
buildQueryWrapper
(
param
);
employeeInfoMapper
.
selectPage
(
page
,
lambdaQuery
);
return
QueryUtil
.
getPageResponse
(
page
,
MapstructUtils
.
convert
(
page
.
getRecords
(),
ContractExpirationReminderVo
.
class
));
}
/**
* 查询符合条件的员工合同续签提醒列表
*
* @param param 查询条件
* @return 员工合同续签提醒列表
*/
@Override
public
List
<
ContractExpirationReminderVo
>
queryList
(
ContractExpirationReminderListParam
param
)
{
LambdaQueryWrapper
<
EmployeeInfo
>
lambdaQuery
=
this
.
buildQueryWrapper
(
param
);
return
MapstructUtils
.
convert
(
employeeInfoMapper
.
selectList
(
lambdaQuery
),
ContractExpirationReminderVo
.
class
);
}
private
LambdaQueryWrapper
<
EmployeeInfo
>
buildQueryWrapper
(
ContractExpirationReminderListParam
param
)
{
LambdaQueryWrapper
<
EmployeeInfo
>
lambdaQuery
=
Wrappers
.<
EmployeeInfo
>
lambdaQuery
();
lambdaQuery
.
orderByDesc
(
EmployeeInfo:
:
getId
);
lambdaQuery
.
eq
(
EmployeeInfo:
:
getStatus
,
HrStatusEnum
.
REGULARIZATION
.
getStatus
());
lambdaQuery
.
between
(
EmployeeInfo:
:
getContractEndDate
,
LocalDate
.
now
().
minusMonths
(
1
),
LocalDate
.
now
().
plusMonths
(
1
));
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getPlate
()),
EmployeeInfo:
:
getPlate
,
param
.
getPlate
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getFirstLevelDepartment
()),
EmployeeInfo:
:
getFirstLevelDepartment
,
param
.
getFirstLevelDepartment
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getSecondLevelDepartment
()),
EmployeeInfo:
:
getSecondLevelDepartment
,
param
.
getSecondLevelDepartment
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getThirdLevelDepartment
()),
EmployeeInfo:
:
getThirdLevelDepartment
,
param
.
getThirdLevelDepartment
());
// lambdaQuery.eq(param.getDeptId() != null, EmployeeInfo::getDeptId, param.getDeptId());
if
(
ObjectUtil
.
isNotNull
(
param
.
getDeptId
()))
{
//优先单部门搜索
lambdaQuery
.
eq
(
EmployeeInfo:
:
getDeptId
,
param
.
getDeptId
());
}
else
if
(
ObjectUtil
.
isNotNull
(
param
.
getBelongDeptId
()))
{
//部门树搜索
lambdaQuery
.
and
(
x
->
{
x
.
in
(
EmployeeInfo:
:
getDeptId
,
employeeSysDeptServ
.
buildQueryWrapper
(
param
.
getBelongDeptId
()));
});
}
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getPosition
()),
EmployeeInfo:
:
getPosition
,
param
.
getPosition
());
lambdaQuery
.
like
(
StrUtil
.
isNotBlank
(
param
.
getName
()),
EmployeeInfo:
:
getName
,
param
.
getName
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getPhoneNumber
()),
EmployeeInfo:
:
getPhoneNumber
,
param
.
getPhoneNumber
());
lambdaQuery
.
eq
(
param
.
getContractStartDate
()
!=
null
,
EmployeeInfo:
:
getContractStartDate
,
param
.
getContractStartDate
());
lambdaQuery
.
eq
(
param
.
getContractEndDate
()
!=
null
,
EmployeeInfo:
:
getContractEndDate
,
param
.
getContractEndDate
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getContractForm
()),
EmployeeInfo:
:
getContractForm
,
param
.
getContractForm
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getRemarks
()),
EmployeeInfo:
:
getRemarks
,
param
.
getRemarks
());
return
lambdaQuery
;
}
/**
* 查询员工合同续签提醒
*
* @param id 主键
* @return 员工合同续签提醒
*/
@Override
public
ContractExpirationReminderVo
queryById
(
Long
id
)
{
EmployeeInfo
contractExpirationReminder
=
employeeInfoMapper
.
selectById
(
id
);
return
MapstructUtils
.
convert
(
contractExpirationReminder
,
ContractExpirationReminderVo
.
class
);
}
/**
* 新增员工合同续签提醒
*
* @param param 员工合同续签提醒
* @return 是否新增成功
*/
@Override
public
Boolean
insertByParam
(
ContractExpirationReminderParam
param
)
{
// EmployeeInfo contractExpirationReminder = MapstructUtils.convert(param, EmployeeInfo.class);
// return this.save(contractExpirationReminder);
return
true
;
}
/**
* 修改员工合同续签提醒
*
* @param param 员工合同续签提醒
* @return 是否修改成功
*/
@Override
public
Boolean
updateByParam
(
ContractExpirationReminderParam
param
)
{
// EmployeeInfo contractExpirationReminder = MapstructUtils.convert(param, EmployeeInfo.class);
// return this.updateById(contractExpirationReminder);
return
true
;
}
/**
* 保存前的数据校验
*/
private
void
validEntityBeforeSave
(
EmployeeInfo
entity
)
{
// 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除员工合同续签提醒信息
*
* @param ids 待删除的主键集合
* @return 是否删除成功
*/
@Override
// @Transactional(rollbackFor = {Exception.class})
public
Boolean
delByIds
(
List
<
Long
>
ids
)
{
//做一些业务上的校验,判断是否需要校验
// return this.removeByIds(ids);
return
true
;
}
}
admin/src/main/java/com/anplus/hr/service/impl/EmployeeChangeLogServImpl.java
View file @
b00ed09c
package
com
.
anplus
.
hr
.
service
.
impl
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.anplus.hr.constant.EmployeeChangeLogTypeConstant
;
...
...
@@ -13,6 +14,7 @@ import com.anplus.hr.domain.params.EmployeeChangeLogParam;
import
com.anplus.hr.domain.vo.EmployeeChangeLogVo
;
import
com.anplus.hr.mapper.EmployeeChangeLogMapper
;
import
com.anplus.hr.service.EmployeeChangeLogServ
;
import
com.anplus.hr.service.EmployeeSysDeptServ
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
...
...
@@ -39,6 +41,7 @@ public class EmployeeChangeLogServImpl extends ServiceImpl<EmployeeChangeLogMapp
private
final
EmployeeChangeLogMapper
employeeChangeLogMapper
;
private
final
SysDeptMapper
sysDeptMapper
;
private
final
EmployeeSysDeptServ
employeeSysDeptServ
;
/**
* 分页查询员工异动记录列表
...
...
@@ -71,7 +74,16 @@ public class EmployeeChangeLogServImpl extends ServiceImpl<EmployeeChangeLogMapp
LambdaQueryWrapper
<
EmployeeChangeLog
>
lambdaQuery
=
Wrappers
.<
EmployeeChangeLog
>
lambdaQuery
();
lambdaQuery
.
orderByDesc
(
EmployeeChangeLog:
:
getId
);
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getType
()),
EmployeeChangeLog:
:
getType
,
param
.
getType
());
lambdaQuery
.
eq
(
param
.
getDeptId
()
!=
null
,
EmployeeChangeLog:
:
getDeptId
,
param
.
getDeptId
());
// lambdaQuery.eq(param.getDeptId() != null, EmployeeChangeLog::getDeptId, param.getDeptId());
if
(
ObjectUtil
.
isNotNull
(
param
.
getDeptId
()))
{
//优先单部门搜索
lambdaQuery
.
eq
(
EmployeeChangeLog:
:
getDeptId
,
param
.
getDeptId
());
}
else
if
(
ObjectUtil
.
isNotNull
(
param
.
getBelongDeptId
()))
{
//部门树搜索
lambdaQuery
.
and
(
x
->
{
x
.
in
(
EmployeeChangeLog:
:
getDeptId
,
employeeSysDeptServ
.
buildQueryWrapper
(
param
.
getBelongDeptId
()));
});
}
lambdaQuery
.
eq
(
param
.
getEmployeeId
()
!=
null
,
EmployeeChangeLog:
:
getEmployeeId
,
param
.
getEmployeeId
());
lambdaQuery
.
eq
(
param
.
getChangeDate
()
!=
null
,
EmployeeChangeLog:
:
getChangeDate
,
param
.
getChangeDate
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getResignType
()),
EmployeeChangeLog:
:
getResignType
,
param
.
getResignType
());
...
...
admin/src/main/java/com/anplus/hr/service/impl/EmployeeInfoResignServImpl.java
View file @
b00ed09c
...
...
@@ -13,6 +13,7 @@ import com.anplus.hr.domain.vo.EmployeeInfoVo;
import
com.anplus.hr.mapper.EmployeeInfoMapper
;
import
com.anplus.hr.service.EmployeeInfoResignServ
;
import
com.anplus.hr.service.EmployeeInfoServ
;
import
com.anplus.hr.service.EmployeeSysDeptServ
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
...
...
@@ -52,6 +53,7 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
private
final
TransService
transService
;
private
final
SysOssMapper
sysOssMapper
;
private
final
EmployeeAsyncService
employeeAsyncService
;
private
final
EmployeeSysDeptServ
employeeSysDeptServ
;
/**
* 分页查询员工信息列表
...
...
@@ -119,12 +121,13 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
successList
.
add
(
item
);
});
if
(
CollUtil
.
isNotEmpty
(
successList
))
{
//
Map<String, Long> deptNamesIdMap = employeeSysDeptServ.selectJoinDeptNames();
Map
<
String
,
Long
>
deptNamesIdMap
=
employeeSysDeptServ
.
selectJoinDeptNames
();
ExcelProcessingResult
excelProcessingResult
=
future
.
join
();
List
<
EmployeeInfo
>
insertList
=
new
ArrayList
<>(
successList
.
size
());
for
(
EmployeeInfoResignImportVo
importVo
:
successList
)
{
SysOss
sysOss
=
employeeInfoServ
.
handleImageToUrl
(
excelProcessingResult
,
importVo
);
// Long leafDeptId = deptNamesIdMap.get(employeeInfoServ.buildDeptNameStr(importVo));
Long
leafDeptId
=
deptNamesIdMap
.
get
(
employeeInfoServ
.
buildDeptNameStr
(
importVo
));
Long
partDeptId
=
deptNamesIdMap
.
get
(
employeeInfoServ
.
buildPartDeptNameStr
(
importVo
));
// if (leafDeptId == null) {
// importVo.addError("部门不存在");
// errorList.add(importVo);
...
...
@@ -132,7 +135,8 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
// }
EmployeeInfo
employeeInfo
=
MapstructUtils
.
convert
(
importVo
,
EmployeeInfo
.
class
);
employeeInfo
.
setStatus
(
HrStatusEnum
.
RESIGN
.
getStatus
());
// employeeInfo.setDeptId(leafDeptId);
employeeInfo
.
setDeptId
(
leafDeptId
);
employeeInfo
.
setPartDeptId
(
partDeptId
);
if
(
sysOss
!=
null
)
{
ossList
.
add
(
sysOss
);
ossEmployeeInfoMap
.
put
(
sysOss
.
getFileName
(),
employeeInfo
);
...
...
admin/src/main/java/com/anplus/hr/service/impl/EmployeeInfoServImpl.java
View file @
b00ed09c
This diff is collapsed.
Click to expand it.
admin/src/main/java/com/anplus/hr/service/impl/EmployeePhoneBookServImpl.java
View file @
b00ed09c
package
com
.
anplus
.
hr
.
service
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.anplus.hr.constant.HrStatusEnum
;
...
...
@@ -10,6 +11,7 @@ import com.anplus.hr.domain.params.EmployeePhoneBookParam;
import
com.anplus.hr.domain.vo.EmployeePhoneBookVo
;
import
com.anplus.hr.mapper.EmployeeInfoMapper
;
import
com.anplus.hr.service.EmployeePhoneBookServ
;
import
com.anplus.hr.service.EmployeeSysDeptServ
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
...
...
@@ -32,6 +34,7 @@ import java.util.List;
public
class
EmployeePhoneBookServImpl
extends
ServiceImpl
<
EmployeeInfoMapper
,
EmployeeInfo
>
implements
EmployeePhoneBookServ
{
private
final
EmployeeInfoMapper
employeeInfoMapper
;
private
final
EmployeeSysDeptServ
employeeSysDeptServ
;
/**
* 分页查询电话本管理列表
...
...
@@ -68,7 +71,16 @@ public class EmployeePhoneBookServImpl extends ServiceImpl<EmployeeInfoMapper, E
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getFirstLevelDepartment
()),
EmployeeInfo:
:
getFirstLevelDepartment
,
param
.
getFirstLevelDepartment
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getSecondLevelDepartment
()),
EmployeeInfo:
:
getSecondLevelDepartment
,
param
.
getSecondLevelDepartment
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getThirdLevelDepartment
()),
EmployeeInfo:
:
getThirdLevelDepartment
,
param
.
getThirdLevelDepartment
());
lambdaQuery
.
eq
(
param
.
getDeptId
()
!=
null
,
EmployeeInfo:
:
getDeptId
,
param
.
getDeptId
());
// lambdaQuery.eq(param.getDeptId() != null, EmployeeInfo::getDeptId, param.getDeptId());
if
(
ObjectUtil
.
isNotNull
(
param
.
getDeptId
()))
{
//优先单部门搜索
lambdaQuery
.
eq
(
EmployeeInfo:
:
getDeptId
,
param
.
getDeptId
());
}
else
if
(
ObjectUtil
.
isNotNull
(
param
.
getBelongDeptId
()))
{
//部门树搜索
lambdaQuery
.
and
(
x
->
{
x
.
in
(
EmployeeInfo:
:
getDeptId
,
employeeSysDeptServ
.
buildQueryWrapper
(
param
.
getBelongDeptId
()));
});
}
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getPosition
()),
EmployeeInfo:
:
getPosition
,
param
.
getPosition
());
lambdaQuery
.
like
(
StrUtil
.
isNotBlank
(
param
.
getName
()),
EmployeeInfo:
:
getName
,
param
.
getName
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getPhoneNumber
()),
EmployeeInfo:
:
getPhoneNumber
,
param
.
getPhoneNumber
());
...
...
admin/src/main/java/com/anplus/hr/service/impl/EmployeeRegularReminderServImpl.java
0 → 100644
View file @
b00ed09c
package
com
.
anplus
.
hr
.
service
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.anplus.hr.constant.HrStatusEnum
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
com.anplus.hr.domain.params.EmployeeRegularReminderListParam
;
import
com.anplus.hr.domain.params.EmployeeRegularReminderParam
;
import
com.anplus.hr.domain.vo.EmployeeRegularReminderVo
;
import
com.anplus.hr.mapper.EmployeeInfoMapper
;
import
com.anplus.hr.service.EmployeeRegularReminderServ
;
import
com.anplus.hr.service.EmployeeSysDeptServ
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
top.binfast.common.core.util.MapstructUtils
;
import
top.binfast.common.mybatis.util.QueryUtil
;
import
java.time.LocalDate
;
import
java.util.List
;
import
java.util.Map
;
/**
* 转正提醒Service业务层处理
*
* @author LiuBin
* @date 2025-11-20
*/
@RequiredArgsConstructor
@Service
public
class
EmployeeRegularReminderServImpl
extends
ServiceImpl
<
EmployeeInfoMapper
,
EmployeeInfo
>
implements
EmployeeRegularReminderServ
{
private
final
EmployeeInfoMapper
employeeInfoMapper
;
private
final
EmployeeSysDeptServ
employeeSysDeptServ
;
/**
* 分页查询转正提醒列表
*
* @param param 查询条件
* @return 转正提醒分页列表
*/
@Override
public
PageResponse
<
EmployeeRegularReminderVo
>
queryPageList
(
EmployeeRegularReminderListParam
param
)
{
Page
<
EmployeeInfo
>
page
=
QueryUtil
.
getPage
(
param
);
LambdaQueryWrapper
<
EmployeeInfo
>
lambdaQuery
=
this
.
buildQueryWrapper
(
param
);
employeeInfoMapper
.
selectPage
(
page
,
lambdaQuery
);
return
QueryUtil
.
getPageResponse
(
page
,
MapstructUtils
.
convert
(
page
.
getRecords
(),
EmployeeRegularReminderVo
.
class
));
}
/**
* 查询符合条件的转正提醒列表
*
* @param param 查询条件
* @return 转正提醒列表
*/
@Override
public
List
<
EmployeeRegularReminderVo
>
queryList
(
EmployeeRegularReminderListParam
param
)
{
LambdaQueryWrapper
<
EmployeeInfo
>
lambdaQuery
=
this
.
buildQueryWrapper
(
param
);
return
MapstructUtils
.
convert
(
employeeInfoMapper
.
selectList
(
lambdaQuery
),
EmployeeRegularReminderVo
.
class
);
}
private
LambdaQueryWrapper
<
EmployeeInfo
>
buildQueryWrapper
(
EmployeeRegularReminderListParam
param
)
{
Map
<
String
,
Object
>
params
=
param
.
getParams
();
LambdaQueryWrapper
<
EmployeeInfo
>
lambdaQuery
=
Wrappers
.<
EmployeeInfo
>
lambdaQuery
();
lambdaQuery
.
orderByDesc
(
EmployeeInfo:
:
getId
);
lambdaQuery
.
eq
(
EmployeeInfo:
:
getStatus
,
HrStatusEnum
.
ENTRY
.
getStatus
());
lambdaQuery
.
between
(
EmployeeInfo:
:
getExpectedRegularDate
,
LocalDate
.
now
().
minusMonths
(
1
),
LocalDate
.
now
().
plusMonths
(
1
));
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getPlate
()),
EmployeeInfo:
:
getPlate
,
param
.
getPlate
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getFirstLevelDepartment
()),
EmployeeInfo:
:
getFirstLevelDepartment
,
param
.
getFirstLevelDepartment
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getSecondLevelDepartment
()),
EmployeeInfo:
:
getSecondLevelDepartment
,
param
.
getSecondLevelDepartment
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getThirdLevelDepartment
()),
EmployeeInfo:
:
getThirdLevelDepartment
,
param
.
getThirdLevelDepartment
());
// lambdaQuery.eq(param.getDeptId() != null, EmployeeInfo::getDeptId, param.getDeptId());
if
(
ObjectUtil
.
isNotNull
(
param
.
getDeptId
()))
{
//优先单部门搜索
lambdaQuery
.
eq
(
EmployeeInfo:
:
getDeptId
,
param
.
getDeptId
());
}
else
if
(
ObjectUtil
.
isNotNull
(
param
.
getBelongDeptId
()))
{
//部门树搜索
lambdaQuery
.
and
(
x
->
{
x
.
in
(
EmployeeInfo:
:
getDeptId
,
employeeSysDeptServ
.
buildQueryWrapper
(
param
.
getBelongDeptId
()));
});
}
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getPosition
()),
EmployeeInfo:
:
getPosition
,
param
.
getPosition
());
lambdaQuery
.
like
(
StrUtil
.
isNotBlank
(
param
.
getName
()),
EmployeeInfo:
:
getName
,
param
.
getName
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getPhoneNumber
()),
EmployeeInfo:
:
getPhoneNumber
,
param
.
getPhoneNumber
());
// lambdaQuery.eq(param.getEntryDate() != null, EmployeeInfo::getEntryDate, param.getEntryDate());
lambdaQuery
.
between
(
params
.
get
(
"entryBeginTime"
)
!=
null
&&
params
.
get
(
"entryEndTime"
)
!=
null
,
EmployeeInfo:
:
getEntryDate
,
params
.
get
(
"entryBeginTime"
),
params
.
get
(
"entryEndTime"
));
// lambdaQuery.eq(param.getExpectedRegularDate() != null, EmployeeInfo::getExpectedRegularDate, param.getExpectedRegularDate());
lambdaQuery
.
between
(
params
.
get
(
"expectedRegularBeginTime"
)
!=
null
&&
params
.
get
(
"expectedRegularEndTime"
)
!=
null
,
EmployeeInfo:
:
getExpectedRegularDate
,
params
.
get
(
"expectedRegularBeginTime"
),
params
.
get
(
"expectedRegularEndTime"
));
return
lambdaQuery
;
}
/**
* 查询转正提醒
*
* @param id 主键
* @return 转正提醒
*/
@Override
public
EmployeeRegularReminderVo
queryById
(
Long
id
)
{
EmployeeInfo
employeeRegularReminder
=
employeeInfoMapper
.
selectById
(
id
);
return
MapstructUtils
.
convert
(
employeeRegularReminder
,
EmployeeRegularReminderVo
.
class
);
}
/**
* 新增转正提醒
*
* @param param 转正提醒
* @return 是否新增成功
*/
@Override
public
Boolean
insertByParam
(
EmployeeRegularReminderParam
param
)
{
// EmployeeInfo employeeRegularReminder = MapstructUtils.convert(param, EmployeeInfo.class);
// return this.save(employeeRegularReminder);
return
true
;
}
/**
* 修改转正提醒
*
* @param param 转正提醒
* @return 是否修改成功
*/
@Override
public
Boolean
updateByParam
(
EmployeeRegularReminderParam
param
)
{
// EmployeeInfo employeeRegularReminder = MapstructUtils.convert(param, EmployeeInfo.class);
// return this.updateById(employeeRegularReminder);
return
true
;
}
/**
* 保存前的数据校验
*/
private
void
validEntityBeforeSave
(
EmployeeInfo
entity
)
{
// 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除转正提醒信息
*
* @param ids 待删除的主键集合
* @return 是否删除成功
*/
@Override
// @Transactional(rollbackFor = {Exception.class})
public
Boolean
delByIds
(
List
<
Long
>
ids
)
{
//做一些业务上的校验,判断是否需要校验
// return this.removeByIds(ids);
return
true
;
}
}
admin/src/main/java/com/anplus/hr/service/impl/EmployeeScheduleService.java
View file @
b00ed09c
...
...
@@ -4,6 +4,7 @@ import cn.hutool.core.date.LocalDateTimeUtil;
import
com.anplus.hr.config.SeniorityUtils
;
import
com.anplus.hr.constant.HrAgeGroupEnum
;
import
com.anplus.hr.constant.HrFlowEnum
;
import
com.anplus.hr.constant.HrStatusEnum
;
import
com.anplus.hr.constant.HrYearsOfServiceSegmentEnum
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
com.anplus.hr.mapper.EmployeeInfoMapper
;
...
...
@@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
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.time.LocalDateTime
;
...
...
@@ -38,6 +41,36 @@ public class EmployeeScheduleService {
executeSafely
(
"刷新员工工龄以及年龄"
,
this
::
processRefreshInfo
);
}
/**
* 使用cron表达式
* 每月15号8点10分执行
*/
// @Scheduled(cron = "0 10 8 15,16,17,18,19,20 * ?")
public
void
monthlyTask
()
{
// TODO: 实现每月任务逻辑
boolean
existNewRegularReminders
=
employeeInfoMapper
.
exists
(
new
LambdaUpdateWrapper
<
EmployeeInfo
>()
.
eq
(
EmployeeInfo:
:
getStatus
,
HrStatusEnum
.
ENTRY
.
getStatus
())
.
between
(
EmployeeInfo:
:
getExpectedRegularDate
,
LocalDate
.
now
(),
LocalDate
.
now
().
plusMonths
(
1
))
);
if
(
existNewRegularReminders
)
{
SseMessageDto
dto
=
new
SseMessageDto
();
dto
.
setMessage
(
"有新的转正提醒!请检查!"
);
dto
.
setUserIds
(
List
.
of
(
1L
));
SseMessageUtils
.
publishMessage
(
dto
);
}
boolean
existContractRenewalReminders
=
employeeInfoMapper
.
exists
(
new
LambdaUpdateWrapper
<
EmployeeInfo
>()
.
eq
(
EmployeeInfo:
:
getStatus
,
HrStatusEnum
.
REGULARIZATION
.
getStatus
())
.
between
(
EmployeeInfo:
:
getContractEndDate
,
LocalDate
.
now
(),
LocalDate
.
now
().
plusMonths
(
1
))
);
if
(
existContractRenewalReminders
)
{
SseMessageDto
dto
=
new
SseMessageDto
();
dto
.
setMessage
(
"有新的合同续约提醒!请检查!"
);
dto
.
setUserIds
(
List
.
of
(
1L
));
SseMessageUtils
.
publishMessage
(
dto
);
}
}
/**
* 刷新员工工龄以及工龄组
*/
...
...
@@ -48,15 +81,17 @@ public class EmployeeScheduleService {
List
<
EmployeeInfo
>
updateList
=
new
ArrayList
<>();
for
(
EmployeeInfo
employeeInfo
:
employeeInfos
)
{
boolean
isUpdate
=
false
;
int
newTotalMonths
=
SeniorityUtils
.
calculateTotalMonths
(
employeeInfo
.
getEntryDate
());
if
(
employeeInfo
.
getYearsOfServiceMonths
()
!=
newTotalMonths
)
{
isUpdate
=
true
;
employeeInfo
.
setYearsOfServiceMonths
(
newTotalMonths
);
employeeInfo
.
setYearsOfService
(
SeniorityUtils
.
formatMonthsToSeniority
(
newTotalMonths
));
// 更新员工工龄组
HrYearsOfServiceSegmentEnum
yearsOfServiceSegmentEnum
=
HrYearsOfServiceSegmentEnum
.
getByTotalMonths
(
newTotalMonths
);
if
(
yearsOfServiceSegmentEnum
!=
null
)
{
employeeInfo
.
setYearsOfServiceSegment
(
yearsOfServiceSegmentEnum
.
getCode
());
if
(
employeeInfo
.
getEntryDate
()
!=
null
)
{
int
newTotalMonths
=
SeniorityUtils
.
calculateTotalMonths
(
employeeInfo
.
getEntryDate
());
if
(
employeeInfo
.
getYearsOfServiceMonths
()
==
null
||
employeeInfo
.
getYearsOfServiceMonths
()
!=
newTotalMonths
)
{
isUpdate
=
true
;
employeeInfo
.
setYearsOfServiceMonths
(
newTotalMonths
);
employeeInfo
.
setYearsOfService
(
SeniorityUtils
.
formatMonthsToSeniority
(
newTotalMonths
));
// 更新员工工龄组
HrYearsOfServiceSegmentEnum
yearsOfServiceSegmentEnum
=
HrYearsOfServiceSegmentEnum
.
getByTotalMonths
(
newTotalMonths
);
if
(
yearsOfServiceSegmentEnum
!=
null
)
{
employeeInfo
.
setYearsOfServiceSegment
(
yearsOfServiceSegmentEnum
.
getCode
());
}
}
}
isUpdate
=
isUpdate
||
precessRefreshAge
(
employeeInfo
);
...
...
@@ -69,9 +104,12 @@ public class EmployeeScheduleService {
private
boolean
precessRefreshAge
(
EmployeeInfo
employeeInfo
)
{
boolean
isUpdate
=
false
;
if
(
employeeInfo
.
getBirthDate
()
==
null
)
{
return
false
;
}
Period
period
=
LocalDateTimeUtil
.
betweenPeriod
(
employeeInfo
.
getBirthDate
(),
LocalDate
.
from
(
LocalDateTime
.
now
()));
int
years
=
period
.
getYears
();
if
(
employeeInfo
.
getAge
()
!=
years
)
{
if
(
employeeInfo
.
getAge
()
==
null
||
employeeInfo
.
getAge
()
!=
years
)
{
isUpdate
=
true
;
employeeInfo
.
setAge
(
years
);
// 更新员工年龄组
...
...
admin/src/main/java/com/anplus/hr/service/impl/EmployeeSysDeptServImpl.java
View file @
b00ed09c
...
...
@@ -54,6 +54,19 @@ public class EmployeeSysDeptServImpl implements EmployeeSysDeptServ {
return
result
;
}
/**
* 构建部门查询条件
*
* @param belongDeptId 部门id
*/
@Override
public
List
<
Long
>
buildQueryWrapper
(
Long
belongDeptId
)
{
List
<
SysDept
>
deptList
=
sysDeptMapper
.
selectListByParentId
(
belongDeptId
);
List
<
Long
>
deptIds
=
LambdaUtil
.
mapToList
(
deptList
,
SysDept:
:
getId
);
deptIds
.
add
(
belongDeptId
);
return
deptIds
;
}
// 遍历根节点列表
private
<
T
extends
TreeDTO
>
void
traverseDeptTree
(
List
<
T
>
deptList
,
String
parentPath
,
Map
<
String
,
Long
>
result
)
{
if
(
CollUtil
.
isEmpty
(
deptList
))
{
...
...
admin/src/main/resources/vm/vue/form.vue.vm
View file @
b00ed09c
...
...
@@ -17,9 +17,18 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup';
const
emit
=
defineEmits
<
{
success
:
[];
}
>
();
const
formData
=
ref
<
$
{
BusinessName
}
Api
.
$
{
BusinessName
}
>
(
);
const
isUpdate
=
ref
(
false
);
const
formSchema
:
VbenFormSchema
[]
=
[
{
component
:
'Input'
,
dependencies
:
{
show
:
()
=>
false
,
triggerFields
:
[
''
],
},
fieldName
:
'id'
,
label
:
'id'
,
},
#
foreach
(
$column
in
$columns
)
#
set
(
$field
=
$column
.
javaField
)
#
if
((
$column
.
insert
||
$column
.
edit
)
&&
!
$column
.
pk
)
...
...
@@ -168,9 +177,9 @@ const [Drawer, drawerApi] = useVbenDrawer({
return
null
;
}
const
data
=
drawerApi
.
getData
<
$
{
BusinessName
}
Api
.
$
{
BusinessName
}
>
();
i
f
(
data
)
{
formData
.
value
=
data
;
await
formApi
.
setValues
(
formData
.
value
);
i
sUpdate
.
value
=
!!
data
?.
id
;
if
(
isUpdate
.
value
)
{
await
formApi
.
setValues
(
data
);
}
else
{
formApi
.
resetForm
();
}
...
...
@@ -184,9 +193,7 @@ async function onSubmit() {
drawerApi
.
lock
();
const
data
=
await
formApi
.
getValues
<
$
{
BusinessName
}
Api
.
$
{
BusinessName
}
>
();
try
{
await
(
formData
.
value
?.
id
?
apiUpdate
({
id
:
formData
.
value
.
id
,
...
data
})
:
apiAdd
(
data
));
await
(
isUpdate
.
value
?
apiUpdate
(
data
)
:
apiAdd
(
data
));
resetInitialized
();
emit
(
'success'
);
drawerApi
.
close
();
...
...
@@ -202,7 +209,7 @@ async function handleClosed() {
}
const
getDrawerTitle
=
computed
(()
=>
formData
.
value
?.
id
?
'修改${functionName}'
:
'新增${functionName}'
,
isUpdate
.
value
?
'修改${functionName}'
:
'新增${functionName}'
,
);
</script>
<template>
...
...
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