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
Show 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 {
...
@@ -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
;
package
com
.
anplus
.
hr
.
controller
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
com.alibaba.cola.dto.MultiResponse
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.alibaba.cola.dto.Response
;
import
com.alibaba.cola.dto.Response
;
import
com.alibaba.cola.dto.SingleResponse
;
import
com.alibaba.cola.dto.SingleResponse
;
import
com.anplus.hr.domain.params.*
;
import
com.anplus.hr.domain.params.*
;
import
com.anplus.hr.domain.vo.EmployeeInfoImportVo
;
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.domain.vo.EmployeeInfoVo
;
import
com.anplus.hr.service.EmployeeInfoServ
;
import
com.anplus.hr.service.EmployeeInfoServ
;
import
jakarta.annotation.Resource
;
import
jakarta.annotation.Resource
;
...
@@ -16,6 +16,9 @@ import org.dromara.core.trans.anno.TransMethodResult;
...
@@ -16,6 +16,9 @@ import org.dromara.core.trans.anno.TransMethodResult;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
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.constant.BusinessType
;
import
top.binfast.common.core.util.ResponseUtils
;
import
top.binfast.common.core.util.ResponseUtils
;
import
top.binfast.common.core.validate.AddGroup
;
import
top.binfast.common.core.validate.AddGroup
;
...
@@ -42,6 +45,8 @@ public class EmployeeInfoCtrl {
...
@@ -42,6 +45,8 @@ public class EmployeeInfoCtrl {
@Resource
@Resource
private
EmployeeInfoServ
employeeInfoServ
;
private
EmployeeInfoServ
employeeInfoServ
;
@Resource
private
SysDeptServ
deptService
;
/**
/**
* 查询员工信息列表
* 查询员工信息列表
...
@@ -178,6 +183,28 @@ public class EmployeeInfoCtrl {
...
@@ -178,6 +183,28 @@ public class EmployeeInfoCtrl {
return
ResponseUtils
.
ofResult
(
employeeInfoServ
.
applyResign
(
param
));
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 {
...
@@ -191,4 +218,13 @@ public class EmployeeInfoCtrl {
@PathVariable
Long
[]
ids
)
{
@PathVariable
Long
[]
ids
)
{
return
ResponseUtils
.
ofResult
(
employeeInfoServ
.
delByIds
(
List
.
of
(
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 {
...
@@ -360,6 +360,11 @@ public class EmployeeInfo extends TenantModel {
*/
*/
private
LocalDate
regularizationDate
;
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 {
...
@@ -52,6 +52,11 @@ public class EmployeeChangeLogListParam extends PageQueryParam {
*/
*/
private
String
resignYearsOfServiceType
;
private
String
resignYearsOfServiceType
;
/**
* 归属部门id(部门树)
*/
private
Long
belongDeptId
;
private
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
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 {
...
@@ -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 {
...
@@ -443,6 +443,10 @@ public class EmployeeInfoListParam extends PageQueryParam {
// */
// */
// private Integer transferApplyStatus;
// private Integer transferApplyStatus;
/**
* 归属部门id(部门树)
*/
private
Long
belongDeptId
;
private
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
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 {
...
@@ -60,7 +60,7 @@ public class EmployeeInfoParam {
* 工号
* 工号
*/
*/
// @NotBlank(message = "工号不能为空", groups = { AddGroup.class, EditGroup.class })
// @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 {
...
@@ -71,6 +71,11 @@ public class EmployeePhoneBookListParam extends PageQueryParam {
*/
*/
private
String
remarks
;
private
String
remarks
;
/**
* 归属部门id(部门树)
*/
private
Long
belongDeptId
;
private
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
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 {
...
@@ -14,7 +14,7 @@ public interface EmployeeAuditLogServ {
Boolean
saveAuditLogs
(
List
<
SysAuditLog
>
auditLog
);
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
();
SysAuditLog
auditLog
=
new
SysAuditLog
();
auditLog
.
setAuditName
(
auditName
);
auditLog
.
setAuditName
(
auditName
);
auditLog
.
setAuditField
(
auditField
);
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> {
...
@@ -170,4 +170,18 @@ public interface EmployeeInfoServ extends IService<EmployeeInfo> {
return
builder
.
toString
();
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 {
...
@@ -18,4 +18,11 @@ public interface EmployeeSysDeptServ {
Map
<
String
,
Long
>
selectJoinDeptNames
();
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
;
package
com
.
anplus
.
hr
.
service
.
impl
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.anplus.hr.constant.EmployeeChangeLogTypeConstant
;
import
com.anplus.hr.constant.EmployeeChangeLogTypeConstant
;
...
@@ -13,6 +14,7 @@ import com.anplus.hr.domain.params.EmployeeChangeLogParam;
...
@@ -13,6 +14,7 @@ import com.anplus.hr.domain.params.EmployeeChangeLogParam;
import
com.anplus.hr.domain.vo.EmployeeChangeLogVo
;
import
com.anplus.hr.domain.vo.EmployeeChangeLogVo
;
import
com.anplus.hr.mapper.EmployeeChangeLogMapper
;
import
com.anplus.hr.mapper.EmployeeChangeLogMapper
;
import
com.anplus.hr.service.EmployeeChangeLogServ
;
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.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
...
@@ -39,6 +41,7 @@ public class EmployeeChangeLogServImpl extends ServiceImpl<EmployeeChangeLogMapp
...
@@ -39,6 +41,7 @@ public class EmployeeChangeLogServImpl extends ServiceImpl<EmployeeChangeLogMapp
private
final
EmployeeChangeLogMapper
employeeChangeLogMapper
;
private
final
EmployeeChangeLogMapper
employeeChangeLogMapper
;
private
final
SysDeptMapper
sysDeptMapper
;
private
final
SysDeptMapper
sysDeptMapper
;
private
final
EmployeeSysDeptServ
employeeSysDeptServ
;
/**
/**
* 分页查询员工异动记录列表
* 分页查询员工异动记录列表
...
@@ -71,7 +74,16 @@ public class EmployeeChangeLogServImpl extends ServiceImpl<EmployeeChangeLogMapp
...
@@ -71,7 +74,16 @@ public class EmployeeChangeLogServImpl extends ServiceImpl<EmployeeChangeLogMapp
LambdaQueryWrapper
<
EmployeeChangeLog
>
lambdaQuery
=
Wrappers
.<
EmployeeChangeLog
>
lambdaQuery
();
LambdaQueryWrapper
<
EmployeeChangeLog
>
lambdaQuery
=
Wrappers
.<
EmployeeChangeLog
>
lambdaQuery
();
lambdaQuery
.
orderByDesc
(
EmployeeChangeLog:
:
getId
);
lambdaQuery
.
orderByDesc
(
EmployeeChangeLog:
:
getId
);
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getType
()),
EmployeeChangeLog:
:
getType
,
param
.
getType
());
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
.
getEmployeeId
()
!=
null
,
EmployeeChangeLog:
:
getEmployeeId
,
param
.
getEmployeeId
());
lambdaQuery
.
eq
(
param
.
getChangeDate
()
!=
null
,
EmployeeChangeLog:
:
getChangeDate
,
param
.
getChangeDate
());
lambdaQuery
.
eq
(
param
.
getChangeDate
()
!=
null
,
EmployeeChangeLog:
:
getChangeDate
,
param
.
getChangeDate
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getResignType
()),
EmployeeChangeLog:
:
getResignType
,
param
.
getResignType
());
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;
...
@@ -13,6 +13,7 @@ import com.anplus.hr.domain.vo.EmployeeInfoVo;
import
com.anplus.hr.mapper.EmployeeInfoMapper
;
import
com.anplus.hr.mapper.EmployeeInfoMapper
;
import
com.anplus.hr.service.EmployeeInfoResignServ
;
import
com.anplus.hr.service.EmployeeInfoResignServ
;
import
com.anplus.hr.service.EmployeeInfoServ
;
import
com.anplus.hr.service.EmployeeInfoServ
;
import
com.anplus.hr.service.EmployeeSysDeptServ
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
...
@@ -52,6 +53,7 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
...
@@ -52,6 +53,7 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
private
final
TransService
transService
;
private
final
TransService
transService
;
private
final
SysOssMapper
sysOssMapper
;
private
final
SysOssMapper
sysOssMapper
;
private
final
EmployeeAsyncService
employeeAsyncService
;
private
final
EmployeeAsyncService
employeeAsyncService
;
private
final
EmployeeSysDeptServ
employeeSysDeptServ
;
/**
/**
* 分页查询员工信息列表
* 分页查询员工信息列表
...
@@ -119,12 +121,13 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
...
@@ -119,12 +121,13 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
successList
.
add
(
item
);
successList
.
add
(
item
);
});
});
if
(
CollUtil
.
isNotEmpty
(
successList
))
{
if
(
CollUtil
.
isNotEmpty
(
successList
))
{
//
Map<String, Long> deptNamesIdMap = employeeSysDeptServ.selectJoinDeptNames();
Map
<
String
,
Long
>
deptNamesIdMap
=
employeeSysDeptServ
.
selectJoinDeptNames
();
ExcelProcessingResult
excelProcessingResult
=
future
.
join
();
ExcelProcessingResult
excelProcessingResult
=
future
.
join
();
List
<
EmployeeInfo
>
insertList
=
new
ArrayList
<>(
successList
.
size
());
List
<
EmployeeInfo
>
insertList
=
new
ArrayList
<>(
successList
.
size
());
for
(
EmployeeInfoResignImportVo
importVo
:
successList
)
{
for
(
EmployeeInfoResignImportVo
importVo
:
successList
)
{
SysOss
sysOss
=
employeeInfoServ
.
handleImageToUrl
(
excelProcessingResult
,
importVo
);
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) {
// if (leafDeptId == null) {
// importVo.addError("部门不存在");
// importVo.addError("部门不存在");
// errorList.add(importVo);
// errorList.add(importVo);
...
@@ -132,7 +135,8 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
...
@@ -132,7 +135,8 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
// }
// }
EmployeeInfo
employeeInfo
=
MapstructUtils
.
convert
(
importVo
,
EmployeeInfo
.
class
);
EmployeeInfo
employeeInfo
=
MapstructUtils
.
convert
(
importVo
,
EmployeeInfo
.
class
);
employeeInfo
.
setStatus
(
HrStatusEnum
.
RESIGN
.
getStatus
());
employeeInfo
.
setStatus
(
HrStatusEnum
.
RESIGN
.
getStatus
());
// employeeInfo.setDeptId(leafDeptId);
employeeInfo
.
setDeptId
(
leafDeptId
);
employeeInfo
.
setPartDeptId
(
partDeptId
);
if
(
sysOss
!=
null
)
{
if
(
sysOss
!=
null
)
{
ossList
.
add
(
sysOss
);
ossList
.
add
(
sysOss
);
ossEmployeeInfoMap
.
put
(
sysOss
.
getFileName
(),
employeeInfo
);
ossEmployeeInfoMap
.
put
(
sysOss
.
getFileName
(),
employeeInfo
);
...
...
admin/src/main/java/com/anplus/hr/service/impl/EmployeeInfoServImpl.java
View file @
b00ed09c
...
@@ -8,10 +8,8 @@ import cn.hutool.core.util.ObjectUtil;
...
@@ -8,10 +8,8 @@ import cn.hutool.core.util.ObjectUtil;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.alibaba.cola.dto.Response
;
import
com.alibaba.cola.dto.Response
;
import
com.anplus.hr.constant.HrEmployeeConstants
;
import
com.anplus.hr.config.SeniorityUtils
;
import
com.anplus.hr.constant.HrFlowEnum
;
import
com.anplus.hr.constant.*
;
import
com.anplus.hr.constant.HrFlowTypeConstant
;
import
com.anplus.hr.constant.HrStatusEnum
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
com.anplus.hr.domain.params.*
;
import
com.anplus.hr.domain.params.*
;
import
com.anplus.hr.domain.vo.EmployeeInfoImportVo
;
import
com.anplus.hr.domain.vo.EmployeeInfoImportVo
;
...
@@ -23,6 +21,7 @@ import com.anplus.hr.service.EmployeeInfoServ;
...
@@ -23,6 +21,7 @@ import com.anplus.hr.service.EmployeeInfoServ;
import
com.anplus.hr.service.EmployeeSysDeptServ
;
import
com.anplus.hr.service.EmployeeSysDeptServ
;
import
com.baomidou.dynamic.datasource.annotation.DSTransactional
;
import
com.baomidou.dynamic.datasource.annotation.DSTransactional
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
...
@@ -32,9 +31,12 @@ import org.dromara.trans.service.impl.TransService;
...
@@ -32,9 +31,12 @@ import org.dromara.trans.service.impl.TransService;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
top.binfast.app.biz.sysapi.bean.model.auth.SysDept
;
import
top.binfast.app.biz.sysapi.bean.model.oss.SysOss
;
import
top.binfast.app.biz.sysapi.bean.model.oss.SysOss
;
import
top.binfast.app.biz.sysapi.dao.system.SysOssMapper
;
import
top.binfast.app.biz.sysapi.dao.system.SysOssMapper
;
import
top.binfast.common.core.constant.NormalStatus
;
import
top.binfast.common.core.enums.ResultCode
;
import
top.binfast.common.core.enums.ResultCode
;
import
top.binfast.common.core.exception.PlatformException
;
import
top.binfast.common.core.util.LambdaUtil
;
import
top.binfast.common.core.util.LambdaUtil
;
import
top.binfast.common.core.util.MapstructUtils
;
import
top.binfast.common.core.util.MapstructUtils
;
import
top.binfast.common.core.validate.AddGroup
;
import
top.binfast.common.core.validate.AddGroup
;
...
@@ -47,10 +49,7 @@ import top.binfast.common.mybatis.util.QueryUtil;
...
@@ -47,10 +49,7 @@ import top.binfast.common.mybatis.util.QueryUtil;
import
top.binfast.common.oss.core.OssService
;
import
top.binfast.common.oss.core.OssService
;
import
top.binfast.common.oss.entity.UploadResult
;
import
top.binfast.common.oss.entity.UploadResult
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.stream.Stream
;
import
java.util.stream.Stream
;
...
@@ -124,8 +123,17 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
...
@@ -124,8 +123,17 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getFirstLevelDepartment
()),
EmployeeInfo:
:
getFirstLevelDepartment
,
param
.
getFirstLevelDepartment
());
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
.
getSecondLevelDepartment
()),
EmployeeInfo:
:
getSecondLevelDepartment
,
param
.
getSecondLevelDepartment
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getThirdLevelDepartment
()),
EmployeeInfo:
:
getThirdLevelDepartment
,
param
.
getThirdLevelDepartment
());
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());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getEmployeeId
()),
EmployeeInfo:
:
getEmployeeNo
,
param
.
getEmployeeId
());
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
.
getEmployeeNo
()),
EmployeeInfo:
:
getEmployeeNo
,
param
.
getEmployeeNo
());
lambdaQuery
.
eq
(
param
.
getJobLevel
()
!=
null
,
EmployeeInfo:
:
getJobLevel
,
param
.
getJobLevel
());
lambdaQuery
.
eq
(
param
.
getJobLevel
()
!=
null
,
EmployeeInfo:
:
getJobLevel
,
param
.
getJobLevel
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getPositionType
()),
EmployeeInfo:
:
getPositionType
,
param
.
getPositionType
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getPositionType
()),
EmployeeInfo:
:
getPositionType
,
param
.
getPositionType
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getSequence
()),
EmployeeInfo:
:
getSequence
,
param
.
getSequence
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getSequence
()),
EmployeeInfo:
:
getSequence
,
param
.
getSequence
());
...
@@ -202,6 +210,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
...
@@ -202,6 +210,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
lambdaQuery
.
eq
(
param
.
getResignationDate
()
!=
null
,
EmployeeInfo:
:
getResignationDate
,
param
.
getResignationDate
());
lambdaQuery
.
eq
(
param
.
getResignationDate
()
!=
null
,
EmployeeInfo:
:
getResignationDate
,
param
.
getResignationDate
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getResignationReason
()),
EmployeeInfo:
:
getResignationReason
,
param
.
getResignationReason
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getResignationReason
()),
EmployeeInfo:
:
getResignationReason
,
param
.
getResignationReason
());
lambdaQuery
.
eq
(
param
.
getFinalPayDate
()
!=
null
,
EmployeeInfo:
:
getFinalPayDate
,
param
.
getFinalPayDate
());
lambdaQuery
.
eq
(
param
.
getFinalPayDate
()
!=
null
,
EmployeeInfo:
:
getFinalPayDate
,
param
.
getFinalPayDate
());
// lambdaQuery.eq(param.getResignationApplyStatus() != null, EmployeeInfo::getResignationApplyStatus, param.getResignationApplyStatus());
// lambdaQuery.eq(param.getResignationApplyStatus() != null, EmployeeInfo::getResignationApplyStatus, param.getResignationApplyStatus());
// lambdaQuery.eq(param.getEntryApplyStatus() != null, EmployeeInfo::getEntryApplyStatus, param.getEntryApplyStatus());
// lambdaQuery.eq(param.getEntryApplyStatus() != null, EmployeeInfo::getEntryApplyStatus, param.getEntryApplyStatus());
// lambdaQuery.eq(param.getTransferApplyStatus() != null, EmployeeInfo::getTransferApplyStatus, param.getTransferApplyStatus());
// lambdaQuery.eq(param.getTransferApplyStatus() != null, EmployeeInfo::getTransferApplyStatus, param.getTransferApplyStatus());
...
@@ -256,10 +265,13 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
...
@@ -256,10 +265,13 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
errorList
.
add
(
importVo
);
errorList
.
add
(
importVo
);
continue
;
continue
;
}
}
Long
partDeptId
=
deptNamesIdMap
.
get
(
buildPartDeptNameStr
(
importVo
));
EmployeeInfo
employeeInfo
=
MapstructUtils
.
convert
(
importVo
,
EmployeeInfo
.
class
);
EmployeeInfo
employeeInfo
=
MapstructUtils
.
convert
(
importVo
,
EmployeeInfo
.
class
);
employeeInfo
.
setDeptId
(
leafDeptId
);
employeeInfo
.
setDeptId
(
leafDeptId
);
employeeInfo
.
setPartDeptId
(
partDeptId
);
employeeInfo
.
setStatus
(
HrEmployeeConstants
.
EMPLOYEE_TYPE_REGULAR
.
equals
(
employeeInfo
.
getEmployeeType
())
employeeInfo
.
setStatus
(
HrEmployeeConstants
.
EMPLOYEE_TYPE_REGULAR
.
equals
(
employeeInfo
.
getEmployeeType
())
?
HrStatusEnum
.
REGULARIZATION
.
getStatus
()
:
HrStatusEnum
.
ENTRY
.
getStatus
());
?
HrStatusEnum
.
REGULARIZATION
.
getStatus
()
:
HrStatusEnum
.
ENTRY
.
getStatus
());
calcExpectedRegularDate
(
employeeInfo
);
if
(
sysOss
!=
null
)
{
if
(
sysOss
!=
null
)
{
ossList
.
add
(
sysOss
);
ossList
.
add
(
sysOss
);
ossEmployeeInfoMap
.
put
(
sysOss
.
getFileName
(),
employeeInfo
);
ossEmployeeInfoMap
.
put
(
sysOss
.
getFileName
(),
employeeInfo
);
...
@@ -375,6 +387,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
...
@@ -375,6 +387,7 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
@Override
@Override
public
Boolean
insertByParam
(
EmployeeInfoParam
param
)
{
public
Boolean
insertByParam
(
EmployeeInfoParam
param
)
{
EmployeeInfo
employeeInfo
=
MapstructUtils
.
convert
(
param
,
EmployeeInfo
.
class
);
EmployeeInfo
employeeInfo
=
MapstructUtils
.
convert
(
param
,
EmployeeInfo
.
class
);
initDefaultEmployeeInfo
(
employeeInfo
);
// List<String> deptNameAncestors = employeeSysDeptServ.selectDeptNameAncestorsById(param.getDeptId());
// List<String> deptNameAncestors = employeeSysDeptServ.selectDeptNameAncestorsById(param.getDeptId());
// 检查或增加部门
// 检查或增加部门
// Set<String> deptNameGroups = new HashSet<>();
// Set<String> deptNameGroups = new HashSet<>();
...
@@ -382,10 +395,44 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
...
@@ -382,10 +395,44 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
// EmployeeDeptCheckAndSaveParam checkAndSaveParam =
// EmployeeDeptCheckAndSaveParam checkAndSaveParam =
// new EmployeeDeptCheckAndSaveParam(deptNameGroups, SecurityUtils.getCurrentUserId(), SecurityUtils.getTenantId());
// new EmployeeDeptCheckAndSaveParam(deptNameGroups, SecurityUtils.getCurrentUserId(), SecurityUtils.getTenantId());
// employeeDeptServ.checkAndSaveDept(checkAndSaveParam);
// employeeDeptServ.checkAndSaveDept(checkAndSaveParam);
employeeInfo
.
setEntryApplyStatus
(
HrFlowEnum
.
WAITING
.
getStatus
());
employeeInfo
.
setEntryApplyStatus
(
HrFlowEnum
.
DRAFT
.
getStatus
());
employeeInfo
.
setStatus
(
HrStatusEnum
.
DRAFT
.
getStatus
());
return
this
.
save
(
employeeInfo
);
return
this
.
save
(
employeeInfo
);
}
}
private
void
initDefaultEmployeeInfo
(
EmployeeInfo
employeeInfo
)
{
calcExpectedRegularDate
(
employeeInfo
);
// 更新员工年龄组
if
(
employeeInfo
.
getAge
()
!=
null
)
{
HrAgeGroupEnum
ageGroupEnum
=
HrAgeGroupEnum
.
getByAge
(
employeeInfo
.
getAge
());
if
(
ageGroupEnum
!=
null
)
{
employeeInfo
.
setAgeGroup
(
ageGroupEnum
.
getCode
());
}
}
if
(
employeeInfo
.
getEntryDate
()
!=
null
)
{
int
newTotalMonths
=
SeniorityUtils
.
calculateTotalMonths
(
employeeInfo
.
getEntryDate
());
employeeInfo
.
setYearsOfServiceMonths
(
newTotalMonths
);
employeeInfo
.
setYearsOfService
(
SeniorityUtils
.
formatMonthsToSeniority
(
newTotalMonths
));
// 更新员工工龄组
HrYearsOfServiceSegmentEnum
yearsOfServiceSegmentEnum
=
HrYearsOfServiceSegmentEnum
.
getByTotalMonths
(
newTotalMonths
);
if
(
yearsOfServiceSegmentEnum
!=
null
)
{
employeeInfo
.
setYearsOfServiceSegment
(
yearsOfServiceSegmentEnum
.
getCode
());
}
}
}
/**
* 计算预计转正时间
*/
private
void
calcExpectedRegularDate
(
EmployeeInfo
employeeInfo
)
{
if
(
HrEmployeeConstants
.
EMPLOYEE_TYPE_REGULAR
.
equals
(
employeeInfo
.
getEmployeeType
()))
{
return
;
}
if
(
employeeInfo
.
getEntryDate
()
!=
null
&&
employeeInfo
.
getProbationPeriod
()
!=
null
)
{
employeeInfo
.
setExpectedRegularDate
(
employeeInfo
.
getEntryDate
().
plusMonths
(
employeeInfo
.
getProbationPeriod
()));
}
}
/**
/**
* 修改员工信息
* 修改员工信息
*
*
...
@@ -414,8 +461,15 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
...
@@ -414,8 +461,15 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
applyEntry
(
EmployeeEntryApplyParam
param
)
{
public
Boolean
applyEntry
(
EmployeeEntryApplyParam
param
)
{
EmployeeInfo
employeeInfo
=
employeeInfoMapper
.
selectById
(
param
.
getId
());
if
(
Objects
.
equals
(
employeeInfo
.
getEntryApplyStatus
(),
HrFlowEnum
.
WAITING
.
getStatus
()))
{
throw
new
PlatformException
(
"当前员工正在申请入职,请勿重复申请"
);
}
employeeInfoMapper
.
update
(
null
,
new
LambdaUpdateWrapper
<
EmployeeInfo
>()
.
set
(
EmployeeInfo:
:
getEntryApplyStatus
,
HrFlowEnum
.
WAITING
.
getStatus
())
.
eq
(
EmployeeInfo:
:
getId
,
param
.
getId
()));
List
<
SysAuditLog
>
list
=
new
ArrayList
<>(
6
);
List
<
SysAuditLog
>
list
=
new
ArrayList
<>(
6
);
employeeAuditLogServ
.
save
AuditLog
(
"入职申请"
,
"entryDate"
,
employeeAuditLogServ
.
init
AuditLog
(
"入职申请"
,
"entryDate"
,
"入职时间"
,
LocalDateTimeUtil
.
format
(
param
.
getEntryDate
(),
DatePattern
.
NORM_DATE_PATTERN
),
list
);
"入职时间"
,
LocalDateTimeUtil
.
format
(
param
.
getEntryDate
(),
DatePattern
.
NORM_DATE_PATTERN
),
list
);
employeeAuditLogServ
.
saveAuditLogs
(
list
);
employeeAuditLogServ
.
saveAuditLogs
(
list
);
String
logIds
=
LambdaUtil
.
join
(
list
,
(
item
)
->
item
.
getId
()
+
StrUtil
.
EMPTY
,
StrUtil
.
COMMA
);
String
logIds
=
LambdaUtil
.
join
(
list
,
(
item
)
->
item
.
getId
()
+
StrUtil
.
EMPTY
,
StrUtil
.
COMMA
);
...
@@ -437,16 +491,23 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
...
@@ -437,16 +491,23 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
*/
*/
@Override
@Override
public
Boolean
applyTransfer
(
EmployeeTransferApplyParam
param
)
{
public
Boolean
applyTransfer
(
EmployeeTransferApplyParam
param
)
{
EmployeeInfo
employeeInfo
=
employeeInfoMapper
.
selectById
(
param
.
getId
());
if
(
Objects
.
equals
(
employeeInfo
.
getTransferApplyStatus
(),
HrFlowEnum
.
WAITING
.
getStatus
()))
{
throw
new
PlatformException
(
"当前员工正在申请调配,请勿重复申请"
);
}
employeeInfoMapper
.
update
(
null
,
new
LambdaUpdateWrapper
<
EmployeeInfo
>()
.
set
(
EmployeeInfo:
:
getTransferApplyStatus
,
HrFlowEnum
.
WAITING
.
getStatus
())
.
eq
(
EmployeeInfo:
:
getId
,
param
.
getId
()));
List
<
SysAuditLog
>
list
=
new
ArrayList
<>(
6
);
List
<
SysAuditLog
>
list
=
new
ArrayList
<>(
6
);
employeeAuditLogServ
.
save
AuditLog
(
"调职申请"
,
"plate"
,
employeeAuditLogServ
.
init
AuditLog
(
"调职申请"
,
"plate"
,
"板块"
,
param
.
getPlate
(),
list
);
"板块"
,
param
.
getPlate
(),
list
);
employeeAuditLogServ
.
save
AuditLog
(
"调职申请"
,
"firstLevelDepartment"
,
employeeAuditLogServ
.
init
AuditLog
(
"调职申请"
,
"firstLevelDepartment"
,
"一级部门"
,
param
.
getFirstLevelDepartment
(),
list
);
"一级部门"
,
param
.
getFirstLevelDepartment
(),
list
);
employeeAuditLogServ
.
save
AuditLog
(
"调职申请"
,
"secondLevelDepartment"
,
employeeAuditLogServ
.
init
AuditLog
(
"调职申请"
,
"secondLevelDepartment"
,
"二级部门"
,
param
.
getSecondLevelDepartment
(),
list
);
"二级部门"
,
param
.
getSecondLevelDepartment
(),
list
);
employeeAuditLogServ
.
save
AuditLog
(
"调职申请"
,
"thirdLevelDepartment"
,
employeeAuditLogServ
.
init
AuditLog
(
"调职申请"
,
"thirdLevelDepartment"
,
"三级部门"
,
param
.
getThirdLevelDepartment
(),
list
);
"三级部门"
,
param
.
getThirdLevelDepartment
(),
list
);
employeeAuditLogServ
.
save
AuditLog
(
"调职申请"
,
"deptId"
,
employeeAuditLogServ
.
init
AuditLog
(
"调职申请"
,
"deptId"
,
"部门序号"
,
Convert
.
toStr
(
param
.
getDeptId
()),
list
);
"部门序号"
,
Convert
.
toStr
(
param
.
getDeptId
()),
list
);
employeeAuditLogServ
.
saveAuditLogs
(
list
);
employeeAuditLogServ
.
saveAuditLogs
(
list
);
...
@@ -470,18 +531,25 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
...
@@ -470,18 +531,25 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
@Override
@Override
@DSTransactional
(
rollbackFor
=
Exception
.
class
)
@DSTransactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
applyResign
(
EmployeeResignApplyParam
param
)
{
public
Boolean
applyResign
(
EmployeeResignApplyParam
param
)
{
EmployeeInfo
employeeInfo
=
employeeInfoMapper
.
selectById
(
param
.
getId
());
if
(
Objects
.
equals
(
employeeInfo
.
getResignationApplyStatus
(),
HrFlowEnum
.
WAITING
.
getStatus
()))
{
throw
new
PlatformException
(
"当前员工正在申请离职,请勿重复申请"
);
}
employeeInfoMapper
.
update
(
null
,
new
LambdaUpdateWrapper
<
EmployeeInfo
>()
.
set
(
EmployeeInfo:
:
getResignationApplyStatus
,
HrFlowEnum
.
WAITING
.
getStatus
())
.
eq
(
EmployeeInfo:
:
getId
,
param
.
getId
()));
List
<
SysAuditLog
>
list
=
new
ArrayList
<>(
6
);
List
<
SysAuditLog
>
list
=
new
ArrayList
<>(
6
);
employeeAuditLogServ
.
save
AuditLog
(
"离职申请"
,
"resignationType"
,
employeeAuditLogServ
.
init
AuditLog
(
"离职申请"
,
"resignationType"
,
"离职类型"
,
param
.
getResignationType
(),
list
);
"离职类型"
,
param
.
getResignationType
(),
list
);
employeeAuditLogServ
.
save
AuditLog
(
"离职申请"
,
"resignationDate"
,
employeeAuditLogServ
.
init
AuditLog
(
"离职申请"
,
"resignationDate"
,
"离职时间"
,
LocalDateTimeUtil
.
format
(
param
.
getResignDate
(),
DatePattern
.
NORM_DATE_PATTERN
),
list
);
"离职时间"
,
LocalDateTimeUtil
.
format
(
param
.
getResignDate
(),
DatePattern
.
NORM_DATE_PATTERN
),
list
);
if
(
StrUtil
.
isNotBlank
(
param
.
getResignReason
()))
{
if
(
StrUtil
.
isNotBlank
(
param
.
getResignReason
()))
{
employeeAuditLogServ
.
save
AuditLog
(
"离职申请"
,
"resignationReason"
,
employeeAuditLogServ
.
init
AuditLog
(
"离职申请"
,
"resignationReason"
,
"离职原因"
,
param
.
getResignReason
(),
list
);
"离职原因"
,
param
.
getResignReason
(),
list
);
}
}
if
(
ObjectUtil
.
isNotNull
(
param
.
getFinalPayDate
()))
{
if
(
ObjectUtil
.
isNotNull
(
param
.
getFinalPayDate
()))
{
employeeAuditLogServ
.
save
AuditLog
(
"离职申请"
,
"finalPayDate"
,
employeeAuditLogServ
.
init
AuditLog
(
"离职申请"
,
"finalPayDate"
,
"最后结薪日"
,
LocalDateTimeUtil
.
format
(
param
.
getFinalPayDate
(),
DatePattern
.
NORM_DATE_PATTERN
),
list
);
"最后结薪日"
,
LocalDateTimeUtil
.
format
(
param
.
getFinalPayDate
(),
DatePattern
.
NORM_DATE_PATTERN
),
list
);
}
}
employeeAuditLogServ
.
saveAuditLogs
(
list
);
employeeAuditLogServ
.
saveAuditLogs
(
list
);
...
@@ -504,39 +572,46 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
...
@@ -504,39 +572,46 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
*/
*/
@Override
@Override
public
Boolean
applyRegular
(
EmployeeRegularApplyParam
param
)
{
public
Boolean
applyRegular
(
EmployeeRegularApplyParam
param
)
{
EmployeeInfo
employeeInfo
=
employeeInfoMapper
.
selectById
(
param
.
getId
());
if
(
Objects
.
equals
(
employeeInfo
.
getRegularApplyStatus
(),
HrFlowEnum
.
WAITING
.
getStatus
()))
{
throw
new
PlatformException
(
"当前员工正在申请转正,请勿重复申请"
);
}
employeeInfoMapper
.
update
(
null
,
new
LambdaUpdateWrapper
<
EmployeeInfo
>()
.
set
(
EmployeeInfo:
:
getRegularApplyStatus
,
HrFlowEnum
.
WAITING
.
getStatus
())
.
eq
(
EmployeeInfo:
:
getId
,
param
.
getId
()));
List
<
SysAuditLog
>
list
=
new
ArrayList
<>(
6
);
List
<
SysAuditLog
>
list
=
new
ArrayList
<>(
6
);
String
contractStartDateStr
=
LocalDateTimeUtil
.
format
(
param
.
getContractStartDate
(),
DatePattern
.
NORM_DATE_PATTERN
);
String
contractStartDateStr
=
LocalDateTimeUtil
.
format
(
param
.
getContractStartDate
(),
DatePattern
.
NORM_DATE_PATTERN
);
String
contractEndDateStr
=
LocalDateTimeUtil
.
format
(
param
.
getContractEndDate
(),
DatePattern
.
NORM_DATE_PATTERN
);
String
contractEndDateStr
=
LocalDateTimeUtil
.
format
(
param
.
getContractEndDate
(),
DatePattern
.
NORM_DATE_PATTERN
);
String
contractExpirationReminderStr
=
LocalDateTimeUtil
.
format
(
param
.
getContractEndDate
().
minusMonths
(
1
),
String
contractExpirationReminderStr
=
LocalDateTimeUtil
.
format
(
param
.
getContractEndDate
().
minusMonths
(
1
),
DatePattern
.
NORM_DATE_PATTERN
);
DatePattern
.
NORM_DATE_PATTERN
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"contractStartDate"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"contractStartDate"
,
"劳动合同开始时间"
,
contractStartDateStr
,
list
);
"劳动合同开始时间"
,
contractStartDateStr
,
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"contractEndDate"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"contractEndDate"
,
"劳动合同截止时间"
,
contractEndDateStr
,
list
);
"劳动合同截止时间"
,
contractEndDateStr
,
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"contractSigningStatus"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"contractSigningStatus"
,
"劳动合同签订情况"
,
param
.
getContractSigningStatus
(),
list
);
"劳动合同签订情况"
,
param
.
getContractSigningStatus
(),
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"contractEntity"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"contractEntity"
,
"合同主体"
,
param
.
getContractEntity
(),
list
);
"合同主体"
,
param
.
getContractEntity
(),
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"socialSecurityEntity"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"socialSecurityEntity"
,
"社保主体"
,
param
.
getSocialSecurityEntity
(),
list
);
"社保主体"
,
param
.
getSocialSecurityEntity
(),
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"hasSocialSecurityPaid"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"hasSocialSecurityPaid"
,
"是否缴纳社保"
,
param
.
getHasSocialSecurityPaid
(),
list
);
"是否缴纳社保"
,
param
.
getHasSocialSecurityPaid
(),
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"providentFundEntity"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"providentFundEntity"
,
"公积金主体"
,
param
.
getProvidentFundEntity
(),
list
);
"公积金主体"
,
param
.
getProvidentFundEntity
(),
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"hasProvidentFundPaid"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"hasProvidentFundPaid"
,
"是否缴纳公积金"
,
param
.
getHasProvidentFundPaid
(),
list
);
"是否缴纳公积金"
,
param
.
getHasProvidentFundPaid
(),
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"regularizationDate"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"regularizationDate"
,
"转正时间"
,
LocalDateTimeUtil
.
format
(
param
.
getRegularizationDate
(),
DatePattern
.
NORM_DATE_PATTERN
),
list
);
"转正时间"
,
LocalDateTimeUtil
.
format
(
param
.
getRegularizationDate
(),
DatePattern
.
NORM_DATE_PATTERN
),
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"employeeType"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"employeeType"
,
"员工类型"
,
HrEmployeeConstants
.
EMPLOYEE_TYPE_REGULAR
,
list
);
"员工类型"
,
HrEmployeeConstants
.
EMPLOYEE_TYPE_REGULAR
,
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"employmentForm"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"employmentForm"
,
"用工形式"
,
HrEmployeeConstants
.
EMPLOYMENT_FORM_REGULAR
,
list
);
"用工形式"
,
HrEmployeeConstants
.
EMPLOYMENT_FORM_REGULAR
,
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"contractForm"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"contractForm"
,
"合同形式"
,
HrEmployeeConstants
.
CONTRACT_FORM_NEW
,
list
);
"合同形式"
,
HrEmployeeConstants
.
CONTRACT_FORM_NEW
,
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"contractTerm"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"contractTerm"
,
"劳动合同期限"
,
contractStartDateStr
+
"-"
+
contractEndDateStr
,
list
);
"劳动合同期限"
,
contractStartDateStr
+
"-"
+
contractEndDateStr
,
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"contractExpirationReminder"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"contractExpirationReminder"
,
"合同到期提醒"
,
contractExpirationReminderStr
,
list
);
"合同到期提醒"
,
contractExpirationReminderStr
,
list
);
employeeAuditLogServ
.
saveAuditLogs
(
list
);
employeeAuditLogServ
.
saveAuditLogs
(
list
);
...
@@ -559,23 +634,30 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
...
@@ -559,23 +634,30 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
*/
*/
@Override
@Override
public
Boolean
applyRenewalContract
(
EmployeeRenewalContractApplyParam
param
)
{
public
Boolean
applyRenewalContract
(
EmployeeRenewalContractApplyParam
param
)
{
EmployeeInfo
employeeInfo
=
employeeInfoMapper
.
selectById
(
param
.
getId
());
if
(
Objects
.
equals
(
employeeInfo
.
getRenewalApplyStatus
(),
HrFlowEnum
.
WAITING
.
getStatus
()))
{
throw
new
PlatformException
(
"当前员工正在申请合同续约,请勿重复申请"
);
}
employeeInfoMapper
.
update
(
null
,
new
LambdaUpdateWrapper
<
EmployeeInfo
>()
.
set
(
EmployeeInfo:
:
getRenewalApplyStatus
,
HrFlowEnum
.
WAITING
.
getStatus
())
.
eq
(
EmployeeInfo:
:
getId
,
param
.
getId
()));
List
<
SysAuditLog
>
list
=
new
ArrayList
<>(
6
);
List
<
SysAuditLog
>
list
=
new
ArrayList
<>(
6
);
String
contractStartDateStr
=
LocalDateTimeUtil
.
format
(
param
.
getContractStartDate
(),
DatePattern
.
NORM_DATE_PATTERN
);
String
contractStartDateStr
=
LocalDateTimeUtil
.
format
(
param
.
getContractStartDate
(),
DatePattern
.
NORM_DATE_PATTERN
);
String
contractEndDateStr
=
LocalDateTimeUtil
.
format
(
param
.
getContractEndDate
(),
DatePattern
.
NORM_DATE_PATTERN
);
String
contractEndDateStr
=
LocalDateTimeUtil
.
format
(
param
.
getContractEndDate
(),
DatePattern
.
NORM_DATE_PATTERN
);
String
contractExpirationReminderStr
=
LocalDateTimeUtil
.
format
(
param
.
getContractEndDate
().
minusMonths
(
1
),
String
contractExpirationReminderStr
=
LocalDateTimeUtil
.
format
(
param
.
getContractEndDate
().
minusMonths
(
1
),
DatePattern
.
NORM_DATE_PATTERN
);
DatePattern
.
NORM_DATE_PATTERN
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"contractForm"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"contractForm"
,
"合同形式"
,
param
.
getContractForm
(),
list
);
"合同形式"
,
param
.
getContractForm
(),
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"contractStartDate"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"contractStartDate"
,
"劳动合同开始时间"
,
contractStartDateStr
,
list
);
"劳动合同开始时间"
,
contractStartDateStr
,
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"contractEndDate"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"contractEndDate"
,
"劳动合同截止时间"
,
contractEndDateStr
,
list
);
"劳动合同截止时间"
,
contractEndDateStr
,
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"contractSigningStatus"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"contractSigningStatus"
,
"劳动合同签订情况"
,
param
.
getContractSigningStatus
(),
list
);
"劳动合同签订情况"
,
param
.
getContractSigningStatus
(),
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"contractTerm"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"contractTerm"
,
"劳动合同期限"
,
contractStartDateStr
+
"-"
+
contractEndDateStr
,
list
);
"劳动合同期限"
,
contractStartDateStr
+
"-"
+
contractEndDateStr
,
list
);
employeeAuditLogServ
.
save
AuditLog
(
"转正申请"
,
"contractExpirationReminder"
,
employeeAuditLogServ
.
init
AuditLog
(
"转正申请"
,
"contractExpirationReminder"
,
"合同到期提醒"
,
contractExpirationReminderStr
,
list
);
"合同到期提醒"
,
contractExpirationReminderStr
,
list
);
employeeAuditLogServ
.
saveAuditLogs
(
list
);
employeeAuditLogServ
.
saveAuditLogs
(
list
);
...
...
admin/src/main/java/com/anplus/hr/service/impl/EmployeePhoneBookServImpl.java
View file @
b00ed09c
package
com
.
anplus
.
hr
.
service
.
impl
;
package
com
.
anplus
.
hr
.
service
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.anplus.hr.constant.HrStatusEnum
;
import
com.anplus.hr.constant.HrStatusEnum
;
...
@@ -10,6 +11,7 @@ import com.anplus.hr.domain.params.EmployeePhoneBookParam;
...
@@ -10,6 +11,7 @@ import com.anplus.hr.domain.params.EmployeePhoneBookParam;
import
com.anplus.hr.domain.vo.EmployeePhoneBookVo
;
import
com.anplus.hr.domain.vo.EmployeePhoneBookVo
;
import
com.anplus.hr.mapper.EmployeeInfoMapper
;
import
com.anplus.hr.mapper.EmployeeInfoMapper
;
import
com.anplus.hr.service.EmployeePhoneBookServ
;
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.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
...
@@ -32,6 +34,7 @@ import java.util.List;
...
@@ -32,6 +34,7 @@ import java.util.List;
public
class
EmployeePhoneBookServImpl
extends
ServiceImpl
<
EmployeeInfoMapper
,
EmployeeInfo
>
implements
EmployeePhoneBookServ
{
public
class
EmployeePhoneBookServImpl
extends
ServiceImpl
<
EmployeeInfoMapper
,
EmployeeInfo
>
implements
EmployeePhoneBookServ
{
private
final
EmployeeInfoMapper
employeeInfoMapper
;
private
final
EmployeeInfoMapper
employeeInfoMapper
;
private
final
EmployeeSysDeptServ
employeeSysDeptServ
;
/**
/**
* 分页查询电话本管理列表
* 分页查询电话本管理列表
...
@@ -68,7 +71,16 @@ public class EmployeePhoneBookServImpl extends ServiceImpl<EmployeeInfoMapper, E
...
@@ -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
.
getFirstLevelDepartment
()),
EmployeeInfo:
:
getFirstLevelDepartment
,
param
.
getFirstLevelDepartment
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getSecondLevelDepartment
()),
EmployeeInfo:
:
getSecondLevelDepartment
,
param
.
getSecondLevelDepartment
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getSecondLevelDepartment
()),
EmployeeInfo:
:
getSecondLevelDepartment
,
param
.
getSecondLevelDepartment
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getThirdLevelDepartment
()),
EmployeeInfo:
:
getThirdLevelDepartment
,
param
.
getThirdLevelDepartment
());
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
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getPosition
()),
EmployeeInfo:
:
getPosition
,
param
.
getPosition
());
lambdaQuery
.
like
(
StrUtil
.
isNotBlank
(
param
.
getName
()),
EmployeeInfo:
:
getName
,
param
.
getName
());
lambdaQuery
.
like
(
StrUtil
.
isNotBlank
(
param
.
getName
()),
EmployeeInfo:
:
getName
,
param
.
getName
());
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getPhoneNumber
()),
EmployeeInfo:
:
getPhoneNumber
,
param
.
getPhoneNumber
());
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;
...
@@ -4,6 +4,7 @@ import cn.hutool.core.date.LocalDateTimeUtil;
import
com.anplus.hr.config.SeniorityUtils
;
import
com.anplus.hr.config.SeniorityUtils
;
import
com.anplus.hr.constant.HrAgeGroupEnum
;
import
com.anplus.hr.constant.HrAgeGroupEnum
;
import
com.anplus.hr.constant.HrFlowEnum
;
import
com.anplus.hr.constant.HrFlowEnum
;
import
com.anplus.hr.constant.HrStatusEnum
;
import
com.anplus.hr.constant.HrYearsOfServiceSegmentEnum
;
import
com.anplus.hr.constant.HrYearsOfServiceSegmentEnum
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
com.anplus.hr.mapper.EmployeeInfoMapper
;
import
com.anplus.hr.mapper.EmployeeInfoMapper
;
...
@@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
...
@@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
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.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
...
@@ -38,6 +41,36 @@ public class EmployeeScheduleService {
...
@@ -38,6 +41,36 @@ public class EmployeeScheduleService {
executeSafely
(
"刷新员工工龄以及年龄"
,
this
::
processRefreshInfo
);
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,8 +81,9 @@ public class EmployeeScheduleService {
...
@@ -48,8 +81,9 @@ public class EmployeeScheduleService {
List
<
EmployeeInfo
>
updateList
=
new
ArrayList
<>();
List
<
EmployeeInfo
>
updateList
=
new
ArrayList
<>();
for
(
EmployeeInfo
employeeInfo
:
employeeInfos
)
{
for
(
EmployeeInfo
employeeInfo
:
employeeInfos
)
{
boolean
isUpdate
=
false
;
boolean
isUpdate
=
false
;
if
(
employeeInfo
.
getEntryDate
()
!=
null
)
{
int
newTotalMonths
=
SeniorityUtils
.
calculateTotalMonths
(
employeeInfo
.
getEntryDate
());
int
newTotalMonths
=
SeniorityUtils
.
calculateTotalMonths
(
employeeInfo
.
getEntryDate
());
if
(
employeeInfo
.
getYearsOfServiceMonths
()
!=
newTotalMonths
)
{
if
(
employeeInfo
.
getYearsOfServiceMonths
()
==
null
||
employeeInfo
.
getYearsOfServiceMonths
()
!=
newTotalMonths
)
{
isUpdate
=
true
;
isUpdate
=
true
;
employeeInfo
.
setYearsOfServiceMonths
(
newTotalMonths
);
employeeInfo
.
setYearsOfServiceMonths
(
newTotalMonths
);
employeeInfo
.
setYearsOfService
(
SeniorityUtils
.
formatMonthsToSeniority
(
newTotalMonths
));
employeeInfo
.
setYearsOfService
(
SeniorityUtils
.
formatMonthsToSeniority
(
newTotalMonths
));
...
@@ -59,6 +93,7 @@ public class EmployeeScheduleService {
...
@@ -59,6 +93,7 @@ public class EmployeeScheduleService {
employeeInfo
.
setYearsOfServiceSegment
(
yearsOfServiceSegmentEnum
.
getCode
());
employeeInfo
.
setYearsOfServiceSegment
(
yearsOfServiceSegmentEnum
.
getCode
());
}
}
}
}
}
isUpdate
=
isUpdate
||
precessRefreshAge
(
employeeInfo
);
isUpdate
=
isUpdate
||
precessRefreshAge
(
employeeInfo
);
if
(
isUpdate
)
{
if
(
isUpdate
)
{
updateList
.
add
(
employeeInfo
);
updateList
.
add
(
employeeInfo
);
...
@@ -69,9 +104,12 @@ public class EmployeeScheduleService {
...
@@ -69,9 +104,12 @@ public class EmployeeScheduleService {
private
boolean
precessRefreshAge
(
EmployeeInfo
employeeInfo
)
{
private
boolean
precessRefreshAge
(
EmployeeInfo
employeeInfo
)
{
boolean
isUpdate
=
false
;
boolean
isUpdate
=
false
;
if
(
employeeInfo
.
getBirthDate
()
==
null
)
{
return
false
;
}
Period
period
=
LocalDateTimeUtil
.
betweenPeriod
(
employeeInfo
.
getBirthDate
(),
LocalDate
.
from
(
LocalDateTime
.
now
()));
Period
period
=
LocalDateTimeUtil
.
betweenPeriod
(
employeeInfo
.
getBirthDate
(),
LocalDate
.
from
(
LocalDateTime
.
now
()));
int
years
=
period
.
getYears
();
int
years
=
period
.
getYears
();
if
(
employeeInfo
.
getAge
()
!=
years
)
{
if
(
employeeInfo
.
getAge
()
==
null
||
employeeInfo
.
getAge
()
!=
years
)
{
isUpdate
=
true
;
isUpdate
=
true
;
employeeInfo
.
setAge
(
years
);
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 {
...
@@ -54,6 +54,19 @@ public class EmployeeSysDeptServImpl implements EmployeeSysDeptServ {
return
result
;
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
)
{
private
<
T
extends
TreeDTO
>
void
traverseDeptTree
(
List
<
T
>
deptList
,
String
parentPath
,
Map
<
String
,
Long
>
result
)
{
if
(
CollUtil
.
isEmpty
(
deptList
))
{
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';
...
@@ -17,9 +17,18 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup';
const
emit
=
defineEmits
<
{
const
emit
=
defineEmits
<
{
success
:
[];
success
:
[];
}
>
();
}
>
();
const
formData
=
ref
<
$
{
BusinessName
}
Api
.
$
{
BusinessName
}
>
(
);
const
isUpdate
=
ref
(
false
);
const
formSchema
:
VbenFormSchema
[]
=
[
const
formSchema
:
VbenFormSchema
[]
=
[
{
component
:
'Input'
,
dependencies
:
{
show
:
()
=>
false
,
triggerFields
:
[
''
],
},
fieldName
:
'id'
,
label
:
'id'
,
},
#
foreach
(
$column
in
$columns
)
#
foreach
(
$column
in
$columns
)
#
set
(
$field
=
$column
.
javaField
)
#
set
(
$field
=
$column
.
javaField
)
#
if
((
$column
.
insert
||
$column
.
edit
)
&&
!
$column
.
pk
)
#
if
((
$column
.
insert
||
$column
.
edit
)
&&
!
$column
.
pk
)
...
@@ -168,9 +177,9 @@ const [Drawer, drawerApi] = useVbenDrawer({
...
@@ -168,9 +177,9 @@ const [Drawer, drawerApi] = useVbenDrawer({
return
null
;
return
null
;
}
}
const
data
=
drawerApi
.
getData
<
$
{
BusinessName
}
Api
.
$
{
BusinessName
}
>
();
const
data
=
drawerApi
.
getData
<
$
{
BusinessName
}
Api
.
$
{
BusinessName
}
>
();
i
f
(
data
)
{
i
sUpdate
.
value
=
!!
data
?.
id
;
formData
.
value
=
data
;
if
(
isUpdate
.
value
)
{
await
formApi
.
setValues
(
formData
.
value
);
await
formApi
.
setValues
(
data
);
}
else
{
}
else
{
formApi
.
resetForm
();
formApi
.
resetForm
();
}
}
...
@@ -184,9 +193,7 @@ async function onSubmit() {
...
@@ -184,9 +193,7 @@ async function onSubmit() {
drawerApi
.
lock
();
drawerApi
.
lock
();
const
data
=
await
formApi
.
getValues
<
$
{
BusinessName
}
Api
.
$
{
BusinessName
}
>
();
const
data
=
await
formApi
.
getValues
<
$
{
BusinessName
}
Api
.
$
{
BusinessName
}
>
();
try
{
try
{
await
(
formData
.
value
?.
id
await
(
isUpdate
.
value
?
apiUpdate
(
data
)
:
apiAdd
(
data
));
?
apiUpdate
({
id
:
formData
.
value
.
id
,
...
data
})
:
apiAdd
(
data
));
resetInitialized
();
resetInitialized
();
emit
(
'success'
);
emit
(
'success'
);
drawerApi
.
close
();
drawerApi
.
close
();
...
@@ -202,7 +209,7 @@ async function handleClosed() {
...
@@ -202,7 +209,7 @@ async function handleClosed() {
}
}
const
getDrawerTitle
=
computed
(()
=>
const
getDrawerTitle
=
computed
(()
=>
formData
.
value
?.
id
?
'修改${functionName}'
:
'新增${functionName}'
,
isUpdate
.
value
?
'修改${functionName}'
:
'新增${functionName}'
,
);
);
</script>
</script>
<template>
<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