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
c274f9f9
Commit
c274f9f9
authored
Dec 15, 2025
by
刘斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 增加编制计划初版
parent
48e0d69f
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
3344 additions
and
81 deletions
+3344
-81
ResumeTemplateStyleHandler.java
...java/com/anplus/hr/config/ResumeTemplateStyleHandler.java
+0
-29
StaffingPlanExportHandler.java
.../java/com/anplus/hr/config/StaffingPlanExportHandler.java
+111
-0
StaffingPlanDataCtrl.java
...n/java/com/anplus/hr/controller/StaffingPlanDataCtrl.java
+130
-0
StaffingPlanRecordsCtrl.java
...ava/com/anplus/hr/controller/StaffingPlanRecordsCtrl.java
+103
-0
StaffingPlanData.java
.../src/main/java/com/anplus/hr/domain/StaffingPlanData.java
+332
-0
StaffingPlanRecords.java
...c/main/java/com/anplus/hr/domain/StaffingPlanRecords.java
+57
-0
StaffingPlanDataListParam.java
...om/anplus/hr/domain/params/StaffingPlanDataListParam.java
+317
-0
StaffingPlanDataParam.java
...va/com/anplus/hr/domain/params/StaffingPlanDataParam.java
+381
-0
StaffingPlanRecordsListParam.java
...anplus/hr/domain/params/StaffingPlanRecordsListParam.java
+47
-0
StaffingPlanRecordsParam.java
...com/anplus/hr/domain/params/StaffingPlanRecordsParam.java
+63
-0
EmployeeDeptImportVo.java
...in/java/com/anplus/hr/domain/vo/EmployeeDeptImportVo.java
+52
-0
EmployeeInfoImportVo.java
...in/java/com/anplus/hr/domain/vo/EmployeeInfoImportVo.java
+1
-0
EmployeeInfoResignImportVo.java
...a/com/anplus/hr/domain/vo/EmployeeInfoResignImportVo.java
+1
-0
EmployeePartTimeInfoImportVo.java
...com/anplus/hr/domain/vo/EmployeePartTimeInfoImportVo.java
+1
-2
StaffingPlanDataImportVo.java
...ava/com/anplus/hr/domain/vo/StaffingPlanDataImportVo.java
+518
-0
StaffingPlanDataVo.java
...main/java/com/anplus/hr/domain/vo/StaffingPlanDataVo.java
+391
-0
StaffingPlanExportVo.java
...in/java/com/anplus/hr/domain/vo/StaffingPlanExportVo.java
+43
-0
StaffingPlanRecordsVo.java
...n/java/com/anplus/hr/domain/vo/StaffingPlanRecordsVo.java
+73
-0
StaffingPlanDataMapper.java
...ain/java/com/anplus/hr/mapper/StaffingPlanDataMapper.java
+16
-0
StaffingPlanRecordsMapper.java
.../java/com/anplus/hr/mapper/StaffingPlanRecordsMapper.java
+16
-0
EmployeeInfoServ.java
...src/main/java/com/anplus/hr/service/EmployeeInfoServ.java
+0
-40
EmployeeSysDeptServ.java
.../main/java/com/anplus/hr/service/EmployeeSysDeptServ.java
+72
-0
StaffingPlanDataServ.java
...main/java/com/anplus/hr/service/StaffingPlanDataServ.java
+82
-0
StaffingPlanRecordsServ.java
...n/java/com/anplus/hr/service/StaffingPlanRecordsServ.java
+68
-0
EmployeeInfoResignServImpl.java
...om/anplus/hr/service/impl/EmployeeInfoResignServImpl.java
+4
-2
EmployeeInfoServImpl.java
...java/com/anplus/hr/service/impl/EmployeeInfoServImpl.java
+3
-2
EmployeePartTimeInfoServImpl.java
.../anplus/hr/service/impl/EmployeePartTimeInfoServImpl.java
+3
-6
EmployeeSysDeptServImpl.java
...a/com/anplus/hr/service/impl/EmployeeSysDeptServImpl.java
+28
-0
StaffingPlanDataServImpl.java
.../com/anplus/hr/service/impl/StaffingPlanDataServImpl.java
+284
-0
StaffingPlanRecordsServImpl.java
...m/anplus/hr/service/impl/StaffingPlanRecordsServImpl.java
+133
-0
编制导出模板.xlsx
admin/src/main/resources/excel/编制导出模板.xlsx
+0
-0
编制模板.xlsx
admin/src/main/resources/excel/编制模板.xlsx
+0
-0
StaffingPlanDataMapper.xml
admin/src/main/resources/mapper/StaffingPlanDataMapper.xml
+7
-0
StaffingPlanRecordsMapper.xml
...n/src/main/resources/mapper/StaffingPlanRecordsMapper.xml
+7
-0
No files found.
admin/src/main/java/com/anplus/hr/config/ResumeTemplateStyleHandler.java
View file @
c274f9f9
...
...
@@ -13,36 +13,7 @@ public class ResumeTemplateStyleHandler implements CellWriteHandler, Order {
public
void
afterCellDispose
(
CellWriteHandlerContext
context
)
{
// 1. 获取当前单元格和它对应的“第一个单元格数据”(通常承载了模板的原始样式)
Cell
cell
=
context
.
getCell
();
WriteCellData
cellData
=
context
.
getFirstCellData
();
// 2. 如果模板单元格有样式,则将其应用到当前单元格
if
(
cellData
!=
null
)
{
WriteCellStyle
writeCellStyle
=
cellData
.
getWriteCellStyle
();
if
(
writeCellStyle
!=
null
)
{
// 使用EasyExcel的工具类安全地转换并设置样式
// CellStyle style = StyleUtil.buildCellStyle(
// context.getWriteWorkbookHolder().getWorkbook(),
// writeCellStyle,
// originalStyle
// );
Workbook
workbook
=
context
.
getWriteWorkbookHolder
().
getWorkbook
();
CellStyle
cellStyle
=
workbook
.
createCellStyle
();
cellStyle
.
setVerticalAlignment
(
VerticalAlignment
.
CENTER
);
cellStyle
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
cellStyle
.
setBorderBottom
(
BorderStyle
.
THIN
);
cellStyle
.
setBorderLeft
(
BorderStyle
.
THIN
);
cellStyle
.
setBorderRight
(
BorderStyle
.
THIN
);
cellStyle
.
setBorderTop
(
BorderStyle
.
THIN
);
// String content = cell.getStringCellValue();
// XSSFRichTextString text = new XSSFRichTextString(content);
// cell.setCellValue(text);
Font
font
=
workbook
.
createFont
();
font
.
setFontName
(
"微软雅黑"
);
font
.
setFontHeightInPoints
((
short
)
10
);
cellStyle
.
setFont
(
font
);
cell
.
setCellStyle
(
cellStyle
);
}
}
}
// 3. 关键:设置order值大于50000,确保本处理器在默认的FillStyleCellWriteHandler之后执行
...
...
admin/src/main/java/com/anplus/hr/config/StaffingPlanExportHandler.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
config
;
import
cn.idev.excel.write.handler.RowWriteHandler
;
import
cn.idev.excel.write.metadata.holder.WriteSheetHolder
;
import
cn.idev.excel.write.metadata.holder.WriteTableHolder
;
import
org.apache.poi.ss.usermodel.*
;
import
org.apache.poi.ss.util.CellRangeAddress
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Objects
;
/**
* @author 刘斌
* 2025/12/15 19:25
*/
public
class
StaffingPlanExportHandler
implements
RowWriteHandler
{
// 定义合计行的标识
private
static
final
String
DEPARTMENT_TOTAL
=
"部门合计"
;
private
static
final
String
AREA_TOTAL
=
"片区合计"
;
// 定义背景色(浅灰色)
private
static
final
IndexedColors
BACKGROUND_COLOR
=
IndexedColors
.
GREY_25_PERCENT
;
// 缓存样式,避免重复创建
private
final
Map
<
String
,
CellStyle
>
styleCache
=
new
HashMap
<>();
@Override
public
void
afterRowDispose
(
WriteSheetHolder
writeSheetHolder
,
WriteTableHolder
writeTableHolder
,
Row
row
,
Integer
relativeRowIndex
,
Boolean
isHead
)
{
Sheet
sheet
=
writeSheetHolder
.
getSheet
();
Workbook
workbook
=
sheet
.
getWorkbook
();
// 遍历行,找到合计行
// for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) {
// int rowNum = row.getRowNum();
//
// 获取板块列的值(假设是第一列,索引0)
Cell
plateCell
=
row
.
getCell
(
0
);
if
(
plateCell
==
null
)
{
return
;
}
// 获取单元格值,处理可能为null的情况
String
cellValue
;
if
(
Objects
.
requireNonNull
(
plateCell
.
getCellType
())
==
CellType
.
STRING
)
{
cellValue
=
plateCell
.
getStringCellValue
();
}
else
{
return
;
}
if
(
DEPARTMENT_TOTAL
.
equals
(
cellValue
)
||
AREA_TOTAL
.
equals
(
cellValue
))
{
int
rowNum
=
row
.
getRowNum
();
// 合并前四列(0-3列)
CellRangeAddress
region
=
new
CellRangeAddress
(
rowNum
,
rowNum
,
0
,
3
);
sheet
.
addMergedRegion
(
region
);
// 获取或创建样式
CellStyle
style
=
getOrCreateStyle
(
workbook
,
cellValue
);
if
(
DEPARTMENT_TOTAL
.
equals
(
cellValue
))
{
style
.
setFillForegroundColor
(
IndexedColors
.
ROSE
.
getIndex
());
}
else
{
style
.
setFillForegroundColor
(
IndexedColors
.
RED
.
getIndex
());
}
// 为合并后的单元格设置样式
for
(
int
col
=
0
;
col
<=
3
;
col
++)
{
Cell
cell
=
row
.
getCell
(
col
);
if
(
cell
==
null
)
{
cell
=
row
.
createCell
(
col
);
}
cell
.
setCellStyle
(
style
);
}
// // 如果需要,清空第5列(岗位名称)的内容
// Cell positionCell = row.getCell(4);
// if (positionCell != null) {
// positionCell.setCellValue("");
// positionCell.setCellStyle(style);
// }
}
// }
}
/**
* 获取或创建单元格样式
*/
private
CellStyle
getOrCreateStyle
(
Workbook
workbook
,
String
cellValue
)
{
return
styleCache
.
computeIfAbsent
(
cellValue
,
cv
->
{
CellStyle
style
=
workbook
.
createCellStyle
();
// 设置背景色
style
.
setFillForegroundColor
(
BACKGROUND_COLOR
.
getIndex
());
style
.
setFillPattern
(
FillPatternType
.
SOLID_FOREGROUND
);
// 设置对齐方式
style
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
style
.
setVerticalAlignment
(
VerticalAlignment
.
CENTER
);
// 设置边框
style
.
setBorderTop
(
BorderStyle
.
THIN
);
style
.
setBorderRight
(
BorderStyle
.
THIN
);
style
.
setBorderBottom
(
BorderStyle
.
THIN
);
style
.
setBorderLeft
(
BorderStyle
.
THIN
);
return
style
;
});
}
}
admin/src/main/java/com/anplus/hr/controller/StaffingPlanDataCtrl.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
controller
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.alibaba.cola.dto.Response
;
import
com.alibaba.cola.dto.SingleResponse
;
import
com.anplus.hr.config.StaffingPlanExportHandler
;
import
com.anplus.hr.domain.params.StaffingPlanDataListParam
;
import
com.anplus.hr.domain.params.StaffingPlanDataParam
;
import
com.anplus.hr.domain.vo.StaffingPlanDataImportVo
;
import
com.anplus.hr.domain.vo.StaffingPlanDataVo
;
import
com.anplus.hr.domain.vo.StaffingPlanExportVo
;
import
com.anplus.hr.service.StaffingPlanDataServ
;
import
jakarta.annotation.Resource
;
import
jakarta.validation.constraints.Min
;
import
jakarta.validation.constraints.NotEmpty
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
top.binfast.common.core.constant.BusinessType
;
import
top.binfast.common.core.util.ResponseUtils
;
import
top.binfast.common.core.validate.AddGroup
;
import
top.binfast.common.core.validate.EditGroup
;
import
top.binfast.common.excel.annotion.ExcelExport
;
import
top.binfast.common.excel.annotion.ExcelStream
;
import
top.binfast.common.log.annotation.PinSysLog
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Stream
;
/**
* 编制规划记录明细
*
* @author LiuBin
* @date 2025-12-14
*/
@Validated
@RestController
@RequestMapping
(
"/employee/staffingPlanData"
)
public
class
StaffingPlanDataCtrl
{
@Resource
private
StaffingPlanDataServ
staffingPlanDataServ
;
/**
* 查询编制规划记录明细列表
*/
@SaCheckPermission
(
"employee:staffingPlanData:list"
)
@GetMapping
(
"/page"
)
public
PageResponse
<
StaffingPlanDataVo
>
pageList
(
StaffingPlanDataListParam
param
)
{
return
staffingPlanDataServ
.
queryPageList
(
param
);
}
/**
* 导出编制规划记录明细列表
*/
@ExcelExport
(
template
=
"编制导出模板.xlsx"
,
fill
=
true
,
fillObjectFields
=
{
"dataList"
},
writeHandler
=
{
StaffingPlanExportHandler
.
class
})
@SaCheckPermission
(
"employee:staffingPlanData:export"
)
@PinSysLog
(
value
=
"编制规划记录明细"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export/{recordId}"
)
public
List
<
StaffingPlanExportVo
>
export
(
@PathVariable
Long
recordId
)
{
return
staffingPlanDataServ
.
exportList
(
recordId
);
}
/**
* 导入兼职员工信息列表
*/
// @NoRepeatSubmit(interval = 60_000)
@PinSysLog
(
value
=
"兼职员工-导入"
,
businessType
=
BusinessType
.
IMPORT
)
@SaCheckPermission
(
"employee:partTimeInfo:import"
)
@PostMapping
(
value
=
"/import/{recordId}"
)
public
Response
importEmployees
(
@ExcelStream
(
headRowNumber
=
2
)
Stream
<
StaffingPlanDataImportVo
>
stream
,
@PathVariable
@Min
(
1
)
Long
recordId
)
{
return
staffingPlanDataServ
.
importStaffingPlanDataList
(
recordId
,
stream
);
}
/**
* 获取导入模板
*/
@ExcelExport
(
template
=
"编制模板.xlsx"
,
fill
=
true
)
@PostMapping
(
"/importTemplate"
)
public
List
<
StaffingPlanDataVo
>
importTemplate
()
{
return
new
ArrayList
<>();
}
/**
* 获取编制规划记录明细详细信息
*
* @param id 主键
*/
@SaCheckPermission
(
"employee:staffingPlanData:query"
)
@GetMapping
(
"/{id}"
)
public
SingleResponse
<
StaffingPlanDataVo
>
getDetail
(
@PathVariable
@Min
(
1
)
Long
id
)
{
return
SingleResponse
.
of
(
staffingPlanDataServ
.
queryById
(
id
));
}
/**
* 新增编制规划记录明细
*/
@SaCheckPermission
(
"employee:staffingPlanData:add"
)
@PinSysLog
(
value
=
"编制规划记录明细"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
()
public
Response
add
(
@Validated
(
AddGroup
.
class
)
@RequestBody
StaffingPlanDataParam
param
)
{
return
ResponseUtils
.
ofResult
(
staffingPlanDataServ
.
insertByParam
(
param
));
}
/**
* 修改编制规划记录明细
*/
@SaCheckPermission
(
"employee:staffingPlanData:edit"
)
@PinSysLog
(
value
=
"编制规划记录明细"
,
businessType
=
BusinessType
.
UPDATE
)
@PutMapping
()
public
Response
edit
(
@Validated
(
EditGroup
.
class
)
@RequestBody
List
<
StaffingPlanDataParam
>
param
)
{
return
ResponseUtils
.
ofResult
(
staffingPlanDataServ
.
updateByParam
(
param
));
}
/**
* 删除编制规划记录明细
*
* @param ids 主键串
*/
@SaCheckPermission
(
"employee:staffingPlanData:remove"
)
@PinSysLog
(
value
=
"编制规划记录明细"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{ids}"
)
public
Response
remove
(
@NotEmpty
(
message
=
"主键不能为空"
)
@PathVariable
Long
[]
ids
)
{
return
ResponseUtils
.
ofResult
(
staffingPlanDataServ
.
delByIds
(
List
.
of
(
ids
)));
}
}
\ No newline at end of file
admin/src/main/java/com/anplus/hr/controller/StaffingPlanRecordsCtrl.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
controller
;
import
java.util.List
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.alibaba.cola.dto.Response
;
import
com.alibaba.cola.dto.SingleResponse
;
import
jakarta.annotation.Resource
;
import
jakarta.validation.constraints.Min
;
import
jakarta.validation.constraints.NotEmpty
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
top.binfast.common.core.constant.BusinessType
;
import
top.binfast.common.core.validate.AddGroup
;
import
top.binfast.common.core.validate.EditGroup
;
import
top.binfast.common.core.util.ResponseUtils
;
import
top.binfast.common.excel.annotion.ExcelExport
;
import
top.binfast.common.log.annotation.PinSysLog
;
import
com.anplus.hr.domain.params.StaffingPlanRecordsListParam
;
import
com.anplus.hr.domain.params.StaffingPlanRecordsParam
;
import
com.anplus.hr.domain.vo.StaffingPlanRecordsVo
;
import
com.anplus.hr.service.StaffingPlanRecordsServ
;
/**
* 编制规划记录
*
* @author LiuBin
* @date 2025-12-14
*/
@Validated
@RestController
@RequestMapping
(
"/employee/staffingPlanRecords"
)
public
class
StaffingPlanRecordsCtrl
{
@Resource
private
StaffingPlanRecordsServ
staffingPlanRecordsServ
;
/**
* 查询编制规划记录列表
*/
@SaCheckPermission
(
"employee:staffingPlanRecords:list"
)
@GetMapping
(
"/page"
)
public
PageResponse
<
StaffingPlanRecordsVo
>
pageList
(
StaffingPlanRecordsListParam
param
)
{
return
staffingPlanRecordsServ
.
queryPageList
(
param
);
}
/**
* 导出编制规划记录列表
*/
@ExcelExport
@SaCheckPermission
(
"employee:staffingPlanRecords:export"
)
@PinSysLog
(
value
=
"编制规划记录"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export"
)
public
List
<
StaffingPlanRecordsVo
>
export
(
StaffingPlanRecordsListParam
param
)
{
return
staffingPlanRecordsServ
.
queryList
(
param
);
}
/**
* 获取编制规划记录详细信息
*
* @param id 主键
*/
@SaCheckPermission
(
"employee:staffingPlanRecords:query"
)
@GetMapping
(
"/{id}"
)
public
SingleResponse
<
StaffingPlanRecordsVo
>
getDetail
(
@PathVariable
@Min
(
1
)
Long
id
)
{
return
SingleResponse
.
of
(
staffingPlanRecordsServ
.
queryById
(
id
));
}
/**
* 新增编制规划记录
*/
@SaCheckPermission
(
"employee:staffingPlanRecords:add"
)
@PinSysLog
(
value
=
"编制规划记录"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
()
public
Response
add
(
@Validated
(
AddGroup
.
class
)
@RequestBody
StaffingPlanRecordsParam
param
)
{
return
ResponseUtils
.
ofResult
(
staffingPlanRecordsServ
.
insertByParam
(
param
));
}
/**
* 修改编制规划记录
*/
@SaCheckPermission
(
"employee:staffingPlanRecords:edit"
)
@PinSysLog
(
value
=
"编制规划记录"
,
businessType
=
BusinessType
.
UPDATE
)
@PutMapping
()
public
Response
edit
(
@Validated
(
EditGroup
.
class
)
@RequestBody
StaffingPlanRecordsParam
param
)
{
return
ResponseUtils
.
ofResult
(
staffingPlanRecordsServ
.
updateByParam
(
param
));
}
/**
* 删除编制规划记录
*
* @param ids 主键串
*/
@SaCheckPermission
(
"employee:staffingPlanRecords:remove"
)
@PinSysLog
(
value
=
"编制规划记录"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{ids}"
)
public
Response
remove
(
@NotEmpty
(
message
=
"主键不能为空"
)
@PathVariable
Long
[]
ids
)
{
return
ResponseUtils
.
ofResult
(
staffingPlanRecordsServ
.
delByIds
(
List
.
of
(
ids
)));
}
}
\ No newline at end of file
admin/src/main/java/com/anplus/hr/domain/StaffingPlanData.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
domain
;
import
top.binfast.common.mybatis.bean.model.TenantModel
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serial
;
/**
* 编制规划记录明细对象 staffing_plan_data
*
* @author LiuBin
* @date 2025-12-14
*/
@Getter
@Setter
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"staffing_plan_data"
)
public
class
StaffingPlanData
extends
TenantModel
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* 编制记录ID
*/
private
Long
recordId
;
/**
* 板块
*/
private
String
plate
;
/**
* 一级部门
*/
private
String
firstLevelDepartment
;
/**
* 二级部门
*/
private
String
secondLevelDepartment
;
/**
* 三级部门
*/
private
String
thirdLevelDepartment
;
/**
* 部门ID
*/
private
Long
deptId
;
/**
* 一级部门ID
*/
private
Long
lv1DeptId
;
/**
* 主岗位
*/
private
String
position
;
/**
* 上一年编制
*/
private
Integer
lastYearStaffing
;
/**
* 今年编制
*/
private
Integer
thisYearStaffing
;
/**
* 下一年编制
*/
private
Integer
nextYearStaffing
;
/**
* 1月正式工计划
*/
private
Integer
m1FormalPlan
;
/**
* 1月正式工实际
*/
private
String
m1FormalActual
;
/**
* 1月兼职计划
*/
private
Integer
m1PartPlan
;
/**
* 1月兼职实际
*/
private
String
m1PartActual
;
/**
* 2月正式工计划
*/
private
Integer
m2FormalPlan
;
/**
* 2月正式工实际
*/
private
String
m2FormalActual
;
/**
* 2月兼职计划
*/
private
Integer
m2PartPlan
;
/**
* 2月兼职实际
*/
private
String
m2PartActual
;
/**
* 3月正式工计划
*/
private
Integer
m3FormalPlan
;
/**
* 3月正式工实际
*/
private
String
m3FormalActual
;
/**
* 3月兼职计划
*/
private
Integer
m3PartPlan
;
/**
* 3月兼职实际
*/
private
String
m3PartActual
;
/**
* 4月正式工计划
*/
private
Integer
m4FormalPlan
;
/**
* 4月正式工实际
*/
private
String
m4FormalActual
;
/**
* 4月兼职计划
*/
private
Integer
m4PartPlan
;
/**
* 4月兼职实际
*/
private
String
m4PartActual
;
/**
* 5月正式工计划
*/
private
Integer
m5FormalPlan
;
/**
* 5月正式工实际
*/
private
String
m5FormalActual
;
/**
* 5月兼职计划
*/
private
Integer
m5PartPlan
;
/**
* 5月兼职实际
*/
private
String
m5PartActual
;
/**
* 6月正式工计划
*/
private
Integer
m6FormalPlan
;
/**
* 6月正式工实际
*/
private
String
m6FormalActual
;
/**
* 6月兼职计划
*/
private
Integer
m6PartPlan
;
/**
* 6月兼职实际
*/
private
String
m6PartActual
;
/**
* 7月正式工计划
*/
private
Integer
m7FormalPlan
;
/**
* 7月正式工实际
*/
private
String
m7FormalActual
;
/**
* 7月兼职计划
*/
private
Integer
m7PartPlan
;
/**
* 7月兼职实际
*/
private
String
m7PartActual
;
/**
* 8月正式工计划
*/
private
Integer
m8FormalPlan
;
/**
* 8月正式工实际
*/
private
String
m8FormalActual
;
/**
* 8月兼职计划
*/
private
Integer
m8PartPlan
;
/**
* 8月兼职实际
*/
private
String
m8PartActual
;
/**
* 9月正式工计划
*/
private
Integer
m9FormalPlan
;
/**
* 9月正式工实际
*/
private
String
m9FormalActual
;
/**
* 9月兼职计划
*/
private
Integer
m9PartPlan
;
/**
* 9月兼职实际
*/
private
String
m9PartActual
;
/**
* 10月正式工计划
*/
private
Integer
m10FormalPlan
;
/**
* 10月正式工实际
*/
private
String
m10FormalActual
;
/**
* 10月兼职计划
*/
private
Integer
m10PartPlan
;
/**
* 10月兼职实际
*/
private
String
m10PartActual
;
/**
* 11月正式工计划
*/
private
Integer
m11FormalPlan
;
/**
* 11月正式工实际
*/
private
String
m11FormalActual
;
/**
* 11月兼职计划
*/
private
Integer
m11PartPlan
;
/**
* 11月兼职实际
*/
private
String
m11PartActual
;
/**
* 12月正式工计划
*/
private
Integer
m12FormalPlan
;
/**
* 12月正式工实际
*/
private
String
m12FormalActual
;
/**
* 12月兼职计划
*/
private
Integer
m12PartPlan
;
/**
* 12月兼职实际
*/
private
String
m12PartActual
;
/**
* 合计行
*/
private
String
summary
;
/**
* 备注
*/
private
String
remark
;
}
admin/src/main/java/com/anplus/hr/domain/StaffingPlanRecords.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
domain
;
import
top.binfast.common.mybatis.bean.model.TenantModel
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serial
;
/**
* 编制规划记录对象 staffing_plan_records
*
* @author LiuBin
* @date 2025-12-14
*/
@Getter
@Setter
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"staffing_plan_records"
)
public
class
StaffingPlanRecords
extends
TenantModel
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* 记录时间
*/
private
String
recordDate
;
/**
* 上一年标题
*/
private
String
lastYearTitle
;
/**
* 今年标题
*/
private
String
currentYearTitle
;
/**
* 明年标题
*/
private
String
nextYearTitle
;
/**
* 是否已初始化
*/
private
String
initFlag
;
/**
* 备注
*/
private
String
remark
;
}
admin/src/main/java/com/anplus/hr/domain/params/StaffingPlanDataListParam.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
domain
.
params
;
import
lombok.Getter
;
import
lombok.Setter
;
import
top.binfast.common.core.bean.params.PageQueryParam
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* 编制规划记录明细分页对象 staffing_plan_data
*
* @author LiuBin
* @date 2025-12-14
*/
@Getter
@Setter
public
class
StaffingPlanDataListParam
extends
PageQueryParam
{
/**
* 编制记录ID
*/
private
Long
recordId
;
/**
* 板块
*/
private
String
plate
;
/**
* 一级部门
*/
private
String
firstLevelDepartment
;
/**
* 二级部门
*/
private
String
secondLevelDepartment
;
/**
* 三级部门
*/
private
String
thirdLevelDepartment
;
/**
* 部门ID
*/
private
Long
deptId
;
/**
* 主岗位
*/
private
String
position
;
/**
* 上一年编制
*/
private
Integer
lastYearStaffing
;
/**
* 今年编制
*/
private
Integer
thisYearStaffing
;
/**
* 下一年编制
*/
private
Integer
nextYearStaffing
;
/**
* 1月正式工计划
*/
private
Integer
m1FormalPlan
;
/**
* 1月正式工实际
*/
private
String
m1FormalActual
;
/**
* 1月兼职计划
*/
private
Integer
m1PartPlan
;
/**
* 1月兼职实际
*/
private
String
m1PartActual
;
/**
* 2月正式工计划
*/
private
Integer
m2FormalPlan
;
/**
* 2月正式工实际
*/
private
String
m2FormalActual
;
/**
* 2月兼职计划
*/
private
Integer
m2PartPlan
;
/**
* 2月兼职实际
*/
private
String
m2PartActual
;
/**
* 3月正式工计划
*/
private
Integer
m3FormalPlan
;
/**
* 3月正式工实际
*/
private
String
m3FormalActual
;
/**
* 3月兼职计划
*/
private
Integer
m3PartPlan
;
/**
* 3月兼职实际
*/
private
String
m3PartActual
;
/**
* 4月正式工计划
*/
private
Integer
m4FormalPlan
;
/**
* 4月正式工实际
*/
private
String
m4FormalActual
;
/**
* 4月兼职计划
*/
private
Integer
m4PartPlan
;
/**
* 4月兼职实际
*/
private
String
m4PartActual
;
/**
* 5月正式工计划
*/
private
Integer
m5FormalPlan
;
/**
* 5月正式工实际
*/
private
String
m5FormalActual
;
/**
* 5月兼职计划
*/
private
Integer
m5PartPlan
;
/**
* 5月兼职实际
*/
private
String
m5PartActual
;
/**
* 6月正式工计划
*/
private
Integer
m6FormalPlan
;
/**
* 6月正式工实际
*/
private
String
m6FormalActual
;
/**
* 6月兼职计划
*/
private
Integer
m6PartPlan
;
/**
* 6月兼职实际
*/
private
String
m6PartActual
;
/**
* 7月正式工计划
*/
private
Integer
m7FormalPlan
;
/**
* 7月正式工实际
*/
private
String
m7FormalActual
;
/**
* 7月兼职计划
*/
private
Integer
m7PartPlan
;
/**
* 7月兼职实际
*/
private
String
m7PartActual
;
/**
* 8月正式工计划
*/
private
Integer
m8FormalPlan
;
/**
* 8月正式工实际
*/
private
String
m8FormalActual
;
/**
* 8月兼职计划
*/
private
Integer
m8PartPlan
;
/**
* 8月兼职实际
*/
private
String
m8PartActual
;
/**
* 9月正式工计划
*/
private
Integer
m9FormalPlan
;
/**
* 9月正式工实际
*/
private
String
m9FormalActual
;
/**
* 9月兼职计划
*/
private
Integer
m9PartPlan
;
/**
* 9月兼职实际
*/
private
String
m9PartActual
;
/**
* 10月正式工计划
*/
private
Integer
m10FormalPlan
;
/**
* 10月正式工实际
*/
private
String
m10FormalActual
;
/**
* 10月兼职计划
*/
private
Integer
m10PartPlan
;
/**
* 10月兼职实际
*/
private
String
m10PartActual
;
/**
* 11月正式工计划
*/
private
Integer
m11FormalPlan
;
/**
* 11月正式工实际
*/
private
String
m11FormalActual
;
/**
* 11月兼职计划
*/
private
Integer
m11PartPlan
;
/**
* 11月兼职实际
*/
private
String
m11PartActual
;
/**
* 12月正式工计划
*/
private
Integer
m12FormalPlan
;
/**
* 12月正式工实际
*/
private
String
m12FormalActual
;
/**
* 12月兼职计划
*/
private
Integer
m12PartPlan
;
/**
* 12月兼职实际
*/
private
String
m12PartActual
;
/**
* 合计行
*/
private
String
summary
;
private
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
}
admin/src/main/java/com/anplus/hr/domain/params/StaffingPlanDataParam.java
0 → 100644
View file @
c274f9f9
This diff is collapsed.
Click to expand it.
admin/src/main/java/com/anplus/hr/domain/params/StaffingPlanRecordsListParam.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
domain
.
params
;
import
lombok.Getter
;
import
lombok.Setter
;
import
top.binfast.common.core.bean.params.PageQueryParam
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* 编制规划记录分页对象 staffing_plan_records
*
* @author LiuBin
* @date 2025-12-14
*/
@Getter
@Setter
public
class
StaffingPlanRecordsListParam
extends
PageQueryParam
{
/**
* 记录时间
*/
private
String
recordDate
;
/**
* 上一年标题
*/
private
String
lastYearTitle
;
/**
* 今年标题
*/
private
String
currentYearTitle
;
/**
* 明年标题
*/
private
String
nextYearTitle
;
/**
* 是否已初始化
*/
private
String
initFlag
;
private
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
}
admin/src/main/java/com/anplus/hr/domain/params/StaffingPlanRecordsParam.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
domain
.
params
;
import
com.anplus.hr.domain.StaffingPlanRecords
;
import
top.binfast.common.core.validate.AddGroup
;
import
top.binfast.common.core.validate.EditGroup
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
jakarta.validation.constraints.*
;
/**
* 编制规划记录业务对象 staffing_plan_records
*
* @author LiuBin
* @date 2025-12-14
*/
@Data
@AutoMapper
(
target
=
StaffingPlanRecords
.
class
,
reverseConvertGenerate
=
false
)
public
class
StaffingPlanRecordsParam
{
/**
* 主键
*/
@NotNull
(
message
=
"主键不能为空"
,
groups
=
{
EditGroup
.
class
})
private
Long
id
;
/**
* 记录时间
*/
@NotBlank
(
message
=
"记录时间不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
recordDate
;
/**
* 上一年标题
*/
// @NotBlank(message = "上一年标题不能为空", groups = { AddGroup.class, EditGroup.class })
private
String
lastYearTitle
;
/**
* 今年标题
*/
// @NotBlank(message = "今年标题不能为空", groups = { AddGroup.class, EditGroup.class })
private
String
currentYearTitle
;
/**
* 明年标题
*/
// @NotBlank(message = "明年标题不能为空", groups = { AddGroup.class, EditGroup.class })
private
String
nextYearTitle
;
/**
* 是否已初始化
*/
// @NotBlank(message = "是否已初始化不能为空", groups = { AddGroup.class, EditGroup.class })
private
String
initFlag
;
/**
* 备注
*/
// @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private
String
remark
;
}
admin/src/main/java/com/anplus/hr/domain/vo/EmployeeDeptImportVo.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
domain
.
vo
;
import
lombok.Data
;
/**
* @author 刘斌
* @date 2025/12/15 11:35
*/
@Data
public
class
EmployeeDeptImportVo
{
/**
* 板块
*/
private
String
plate
;
/**
* 一级部门
*/
private
String
firstLevelDepartment
;
/**
* 二级部门
*/
private
String
secondLevelDepartment
;
/**
* 三级部门
*/
private
String
thirdLevelDepartment
;
/**
* 兼岗板块
*/
private
String
concurrentPlate
;
/**
* 兼岗一级部门
*/
private
String
concurrentFirstDept
;
/**
* 兼岗二级部门
*/
private
String
concurrentSecondDept
;
/**
* 兼岗三级部门
*/
private
String
concurrentThirdDept
;
}
admin/src/main/java/com/anplus/hr/domain/vo/EmployeeInfoImportVo.java
View file @
c274f9f9
...
...
@@ -26,6 +26,7 @@ import java.time.LocalDate;
@Getter
@AutoMappers
({
@AutoMapper
(
target
=
EmployeeInfo
.
class
,
reverseConvertGenerate
=
false
),
@AutoMapper
(
target
=
EmployeeDeptImportVo
.
class
,
reverseConvertGenerate
=
false
)
})
public
class
EmployeeInfoImportVo
extends
ExcelBaseEntity
implements
Serializable
{
@Serial
...
...
admin/src/main/java/com/anplus/hr/domain/vo/EmployeeInfoResignImportVo.java
View file @
c274f9f9
...
...
@@ -20,6 +20,7 @@ import java.time.LocalDate;
@Getter
@AutoMappers
({
@AutoMapper
(
target
=
EmployeeInfo
.
class
,
reverseConvertGenerate
=
false
),
@AutoMapper
(
target
=
EmployeeDeptImportVo
.
class
,
reverseConvertGenerate
=
false
)
})
public
class
EmployeeInfoResignImportVo
extends
EmployeeInfoImportVo
{
@Serial
...
...
admin/src/main/java/com/anplus/hr/domain/vo/EmployeePartTimeInfoImportVo.java
View file @
c274f9f9
...
...
@@ -3,7 +3,6 @@ package com.anplus.hr.domain.vo;
import
cn.idev.excel.annotation.ExcelProperty
;
import
com.anplus.hr.constant.HrConstant
;
import
com.anplus.hr.domain.EmployeeInfo
;
import
com.anplus.hr.domain.params.EmployeePartTimeInfoParam
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
io.github.linpeilie.annotations.AutoMappers
;
import
jakarta.validation.constraints.NotBlank
;
...
...
@@ -25,7 +24,7 @@ import java.time.LocalDate;
@Getter
@AutoMappers
({
@AutoMapper
(
target
=
EmployeeInfo
.
class
,
reverseConvertGenerate
=
false
),
@AutoMapper
(
target
=
Employee
Info
ImportVo
.
class
,
reverseConvertGenerate
=
false
)
@AutoMapper
(
target
=
Employee
Dept
ImportVo
.
class
,
reverseConvertGenerate
=
false
)
})
public
class
EmployeePartTimeInfoImportVo
extends
ExcelBaseEntity
implements
Serializable
{
@Serial
...
...
admin/src/main/java/com/anplus/hr/domain/vo/StaffingPlanDataImportVo.java
0 → 100644
View file @
c274f9f9
This diff is collapsed.
Click to expand it.
admin/src/main/java/com/anplus/hr/domain/vo/StaffingPlanDataVo.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
domain
.
vo
;
import
com.anplus.hr.domain.StaffingPlanData
;
import
cn.idev.excel.annotation.ExcelIgnoreUnannotated
;
import
cn.idev.excel.annotation.ExcelProperty
;
import
cn.idev.excel.annotation.ExcelIgnore
;
import
top.binfast.common.excel.annotion.ExcelDictFormat
;
import
top.binfast.common.excel.converters.ExcelDictConvert
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
java.io.Serial
;
import
java.io.Serializable
;
/**
* 编制规划记录明细视图对象 staffing_plan_data
*
* @author LiuBin
* @date 2025-12-14
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper
(
target
=
StaffingPlanData
.
class
)
public
class
StaffingPlanDataVo
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
*/
// @ExcelProperty(value = "部门ID")
private
Long
deptId
;
/**
* 主岗位
*/
@ExcelProperty
(
value
=
"主岗位"
)
private
String
position
;
/**
* 上一年编制
*/
@ExcelProperty
(
value
=
"上一年编制"
)
private
Integer
lastYearStaffing
;
/**
* 今年编制
*/
@ExcelProperty
(
value
=
"今年编制"
)
private
Integer
thisYearStaffing
;
/**
* 下一年编制
*/
@ExcelProperty
(
value
=
"下一年编制"
)
private
Integer
nextYearStaffing
;
/**
* 1月正式工计划
*/
@ExcelProperty
(
value
=
"1月正式工计划"
)
private
Integer
m1FormalPlan
;
/**
* 1月正式工实际
*/
@ExcelProperty
(
value
=
"1月正式工实际"
)
private
String
m1FormalActual
;
/**
* 1月兼职计划
*/
@ExcelProperty
(
value
=
"1月兼职计划"
)
private
Integer
m1PartPlan
;
/**
* 1月兼职实际
*/
@ExcelProperty
(
value
=
"1月兼职实际"
)
private
String
m1PartActual
;
/**
* 2月正式工计划
*/
@ExcelProperty
(
value
=
"2月正式工计划"
)
private
Integer
m2FormalPlan
;
/**
* 2月正式工实际
*/
@ExcelProperty
(
value
=
"2月正式工实际"
)
private
String
m2FormalActual
;
/**
* 2月兼职计划
*/
@ExcelProperty
(
value
=
"2月兼职计划"
)
private
Integer
m2PartPlan
;
/**
* 2月兼职实际
*/
@ExcelProperty
(
value
=
"2月兼职实际"
)
private
String
m2PartActual
;
/**
* 3月正式工计划
*/
@ExcelProperty
(
value
=
"3月正式工计划"
)
private
Integer
m3FormalPlan
;
/**
* 3月正式工实际
*/
@ExcelProperty
(
value
=
"3月正式工实际"
)
private
String
m3FormalActual
;
/**
* 3月兼职计划
*/
@ExcelProperty
(
value
=
"3月兼职计划"
)
private
Integer
m3PartPlan
;
/**
* 3月兼职实际
*/
@ExcelProperty
(
value
=
"3月兼职实际"
)
private
String
m3PartActual
;
/**
* 4月正式工计划
*/
@ExcelProperty
(
value
=
"4月正式工计划"
)
private
Integer
m4FormalPlan
;
/**
* 4月正式工实际
*/
@ExcelProperty
(
value
=
"4月正式工实际"
)
private
String
m4FormalActual
;
/**
* 4月兼职计划
*/
@ExcelProperty
(
value
=
"4月兼职计划"
)
private
Integer
m4PartPlan
;
/**
* 4月兼职实际
*/
@ExcelProperty
(
value
=
"4月兼职实际"
)
private
String
m4PartActual
;
/**
* 5月正式工计划
*/
@ExcelProperty
(
value
=
"5月正式工计划"
)
private
Integer
m5FormalPlan
;
/**
* 5月正式工实际
*/
@ExcelProperty
(
value
=
"5月正式工实际"
)
private
String
m5FormalActual
;
/**
* 5月兼职计划
*/
@ExcelProperty
(
value
=
"5月兼职计划"
)
private
Integer
m5PartPlan
;
/**
* 5月兼职实际
*/
@ExcelProperty
(
value
=
"5月兼职实际"
)
private
String
m5PartActual
;
/**
* 6月正式工计划
*/
@ExcelProperty
(
value
=
"6月正式工计划"
)
private
Integer
m6FormalPlan
;
/**
* 6月正式工实际
*/
@ExcelProperty
(
value
=
"6月正式工实际"
)
private
String
m6FormalActual
;
/**
* 6月兼职计划
*/
@ExcelProperty
(
value
=
"6月兼职计划"
)
private
Integer
m6PartPlan
;
/**
* 6月兼职实际
*/
@ExcelProperty
(
value
=
"6月兼职实际"
)
private
String
m6PartActual
;
/**
* 7月正式工计划
*/
@ExcelProperty
(
value
=
"7月正式工计划"
)
private
Integer
m7FormalPlan
;
/**
* 7月正式工实际
*/
@ExcelProperty
(
value
=
"7月正式工实际"
)
private
String
m7FormalActual
;
/**
* 7月兼职计划
*/
@ExcelProperty
(
value
=
"7月兼职计划"
)
private
Integer
m7PartPlan
;
/**
* 7月兼职实际
*/
@ExcelProperty
(
value
=
"7月兼职实际"
)
private
String
m7PartActual
;
/**
* 8月正式工计划
*/
@ExcelProperty
(
value
=
"8月正式工计划"
)
private
Integer
m8FormalPlan
;
/**
* 8月正式工实际
*/
@ExcelProperty
(
value
=
"8月正式工实际"
)
private
String
m8FormalActual
;
/**
* 8月兼职计划
*/
@ExcelProperty
(
value
=
"8月兼职计划"
)
private
Integer
m8PartPlan
;
/**
* 8月兼职实际
*/
@ExcelProperty
(
value
=
"8月兼职实际"
)
private
String
m8PartActual
;
/**
* 9月正式工计划
*/
@ExcelProperty
(
value
=
"9月正式工计划"
)
private
Integer
m9FormalPlan
;
/**
* 9月正式工实际
*/
@ExcelProperty
(
value
=
"9月正式工实际"
)
private
String
m9FormalActual
;
/**
* 9月兼职计划
*/
@ExcelProperty
(
value
=
"9月兼职计划"
)
private
Integer
m9PartPlan
;
/**
* 9月兼职实际
*/
@ExcelProperty
(
value
=
"9月兼职实际"
)
private
String
m9PartActual
;
/**
* 10月正式工计划
*/
@ExcelProperty
(
value
=
"10月正式工计划"
)
private
Integer
m10FormalPlan
;
/**
* 10月正式工实际
*/
@ExcelProperty
(
value
=
"10月正式工实际"
)
private
String
m10FormalActual
;
/**
* 10月兼职计划
*/
@ExcelProperty
(
value
=
"10月兼职计划"
)
private
Integer
m10PartPlan
;
/**
* 10月兼职实际
*/
@ExcelProperty
(
value
=
"10月兼职实际"
)
private
String
m10PartActual
;
/**
* 11月正式工计划
*/
@ExcelProperty
(
value
=
"11月正式工计划"
)
private
Integer
m11FormalPlan
;
/**
* 11月正式工实际
*/
@ExcelProperty
(
value
=
"11月正式工实际"
)
private
String
m11FormalActual
;
/**
* 11月兼职计划
*/
@ExcelProperty
(
value
=
"11月兼职计划"
)
private
Integer
m11PartPlan
;
/**
* 11月兼职实际
*/
@ExcelProperty
(
value
=
"11月兼职实际"
)
private
String
m11PartActual
;
/**
* 12月正式工计划
*/
@ExcelProperty
(
value
=
"12月正式工计划"
)
private
Integer
m12FormalPlan
;
/**
* 12月正式工实际
*/
@ExcelProperty
(
value
=
"12月正式工实际"
)
private
String
m12FormalActual
;
/**
* 12月兼职计划
*/
@ExcelProperty
(
value
=
"12月兼职计划"
)
private
Integer
m12PartPlan
;
/**
* 12月兼职实际
*/
@ExcelProperty
(
value
=
"12月兼职实际"
)
private
String
m12PartActual
;
/**
* 合计行
*/
@ExcelProperty
(
value
=
"合计行"
)
private
String
summary
;
/**
* 备注
*/
@ExcelProperty
(
value
=
"备注"
)
private
String
remark
;
}
admin/src/main/java/com/anplus/hr/domain/vo/StaffingPlanExportVo.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
domain
.
vo
;
import
cn.idev.excel.annotation.ExcelIgnoreUnannotated
;
import
cn.idev.excel.annotation.ExcelProperty
;
import
com.anplus.hr.domain.StaffingPlanRecords
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author 刘斌
* @date 2025/12/15 19:54
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper
(
target
=
StaffingPlanRecords
.
class
,
convertGenerate
=
false
)
public
class
StaffingPlanExportVo
{
/**
* 上一年标题
*/
@ExcelProperty
(
value
=
"上一年标题"
)
private
String
lastYearTitle
;
/**
* 今年标题
*/
@ExcelProperty
(
value
=
"今年标题"
)
private
String
currentYearTitle
;
/**
* 明年标题
*/
@ExcelProperty
(
value
=
"明年标题"
)
private
String
nextYearTitle
;
/**
* 编制明细
*/
@ExcelProperty
(
value
=
"编制明细"
)
private
List
<
StaffingPlanDataVo
>
dataList
;
}
admin/src/main/java/com/anplus/hr/domain/vo/StaffingPlanRecordsVo.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
domain
.
vo
;
import
com.anplus.hr.domain.StaffingPlanRecords
;
import
cn.idev.excel.annotation.ExcelIgnoreUnannotated
;
import
cn.idev.excel.annotation.ExcelProperty
;
import
cn.idev.excel.annotation.ExcelIgnore
;
import
top.binfast.common.excel.annotion.ExcelDictFormat
;
import
top.binfast.common.excel.converters.ExcelDictConvert
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
java.io.Serial
;
import
java.io.Serializable
;
/**
* 编制规划记录视图对象 staffing_plan_records
*
* @author LiuBin
* @date 2025-12-14
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper
(
target
=
StaffingPlanRecords
.
class
)
public
class
StaffingPlanRecordsVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
private
Long
id
;
/**
* 记录时间
*/
@ExcelProperty
(
value
=
"记录时间"
)
private
String
recordDate
;
/**
* 上一年标题
*/
@ExcelProperty
(
value
=
"上一年标题"
)
private
String
lastYearTitle
;
/**
* 今年标题
*/
@ExcelProperty
(
value
=
"今年标题"
)
private
String
currentYearTitle
;
/**
* 明年标题
*/
@ExcelProperty
(
value
=
"明年标题"
)
private
String
nextYearTitle
;
/**
* 是否已初始化
*/
@ExcelProperty
(
value
=
"是否已初始化"
)
private
String
initFlag
;
/**
* 备注
*/
@ExcelProperty
(
value
=
"备注"
)
private
String
remark
;
}
admin/src/main/java/com/anplus/hr/mapper/StaffingPlanDataMapper.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
mapper
;
import
com.anplus.hr.domain.StaffingPlanData
;
import
top.binfast.common.mybatis.mapper.BinBaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 编制规划记录明细Mapper接口
*
* @author LiuBin
* @date 2025-12-14
*/
@Mapper
public
interface
StaffingPlanDataMapper
extends
BinBaseMapper
<
StaffingPlanData
>
{
}
admin/src/main/java/com/anplus/hr/mapper/StaffingPlanRecordsMapper.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
mapper
;
import
com.anplus.hr.domain.StaffingPlanRecords
;
import
top.binfast.common.mybatis.mapper.BinBaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 编制规划记录Mapper接口
*
* @author LiuBin
* @date 2025-12-14
*/
@Mapper
public
interface
StaffingPlanRecordsMapper
extends
BinBaseMapper
<
StaffingPlanRecords
>
{
}
admin/src/main/java/com/anplus/hr/service/EmployeeInfoServ.java
View file @
c274f9f9
...
...
@@ -180,46 +180,6 @@ public interface EmployeeInfoServ extends IService<EmployeeInfo> {
*/
SysOssVo
upload
(
MultipartFile
file
);
/**
* 构建部门名称字符串
*
* @param importVo 导入数据
* @return 部门名称字符串
*/
default
String
buildDeptNameStr
(
EmployeeInfoImportVo
importVo
)
{
StringBuilder
builder
=
new
StringBuilder
(
importVo
.
getPlate
());
if
(
StrUtil
.
isNotBlank
(
importVo
.
getFirstLevelDepartment
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getFirstLevelDepartment
());
}
if
(
StrUtil
.
isNotBlank
(
importVo
.
getSecondLevelDepartment
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getSecondLevelDepartment
());
}
if
(
StrUtil
.
isNotBlank
(
importVo
.
getThirdLevelDepartment
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getThirdLevelDepartment
());
}
return
builder
.
toString
();
}
/**
* 构建部门名称字符串
*
* @param importVo 导入数据
* @return 部门名称字符串
*/
default
String
buildPartDeptNameStr
(
EmployeeInfoImportVo
importVo
)
{
StringBuilder
builder
=
new
StringBuilder
(
importVo
.
getConcurrentPlate
());
if
(
StrUtil
.
isNotBlank
(
importVo
.
getConcurrentFirstDept
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getConcurrentFirstDept
());
}
if
(
StrUtil
.
isNotBlank
(
importVo
.
getConcurrentSecondDept
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getConcurrentSecondDept
());
}
if
(
StrUtil
.
isNotBlank
(
importVo
.
getConcurrentThirdDept
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getConcurrentThirdDept
());
}
return
builder
.
toString
();
}
/**
* 构建员工家庭成员列表
* 按照【关系 姓名 出生年月 工作单位职务 联系方式】格式
...
...
admin/src/main/java/com/anplus/hr/service/EmployeeSysDeptServ.java
View file @
c274f9f9
package
com
.
anplus
.
hr
.
service
;
import
cn.hutool.core.util.StrUtil
;
import
com.anplus.hr.domain.vo.EmployeeDeptImportVo
;
import
com.anplus.hr.domain.vo.EmployeeInfoImportVo
;
import
org.apache.commons.lang3.tuple.MutablePair
;
import
org.apache.commons.lang3.tuple.Pair
;
import
top.binfast.app.biz.sysapi.bean.params.sysDept.SysDeptParam
;
import
top.binfast.app.biz.sysapi.bean.vo.sysDept.SysDeptDTO
;
...
...
@@ -29,6 +34,11 @@ public interface EmployeeSysDeptServ {
*/
Map
<
String
,
Long
>
selectJoinDeptNames
();
/**
* 获取部门名称,拼接成xx/xx/xx/xx或xx/xx
*/
Map
<
String
,
Long
>
selectJoinDeptNamesForStaffingPlan
();
/**
* 构建部门查询条件
*
...
...
@@ -36,4 +46,66 @@ public interface EmployeeSysDeptServ {
*/
List
<
Long
>
buildQueryWrapper
(
Long
belongDeptId
);
/**
* 构建部门名称字符串
*
* @param importVo 导入数据
* @return 部门名称字符串
*/
default
String
buildDeptNameStr
(
EmployeeDeptImportVo
importVo
)
{
StringBuilder
builder
=
new
StringBuilder
(
importVo
.
getPlate
());
if
(
StrUtil
.
isNotBlank
(
importVo
.
getFirstLevelDepartment
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getFirstLevelDepartment
());
}
if
(
StrUtil
.
isNotBlank
(
importVo
.
getSecondLevelDepartment
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getSecondLevelDepartment
());
}
if
(
StrUtil
.
isNotBlank
(
importVo
.
getThirdLevelDepartment
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getThirdLevelDepartment
());
}
return
builder
.
toString
();
}
/**
* 构建部门名称字符串
*
* @param importVo 导入数据
* @return 部门名称字符串
*/
default
Pair
<
String
,
String
>
buildDeptNameStrForStaffingPlan
(
EmployeeDeptImportVo
importVo
)
{
String
lv1DeptName
=
""
;
StringBuilder
builder
=
new
StringBuilder
(
importVo
.
getPlate
());
if
(
StrUtil
.
isNotBlank
(
importVo
.
getFirstLevelDepartment
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getFirstLevelDepartment
());
lv1DeptName
=
builder
.
toString
();
}
if
(
StrUtil
.
isNotBlank
(
importVo
.
getSecondLevelDepartment
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getSecondLevelDepartment
());
}
if
(
StrUtil
.
isNotBlank
(
importVo
.
getThirdLevelDepartment
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getThirdLevelDepartment
());
}
return
new
MutablePair
<>(
lv1DeptName
,
builder
.
toString
());
}
/**
* 构建部门名称字符串
*
* @param importVo 导入数据
* @return 部门名称字符串
*/
default
String
buildPartDeptNameStr
(
EmployeeDeptImportVo
importVo
)
{
StringBuilder
builder
=
new
StringBuilder
(
importVo
.
getConcurrentPlate
());
if
(
StrUtil
.
isNotBlank
(
importVo
.
getConcurrentFirstDept
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getConcurrentFirstDept
());
}
if
(
StrUtil
.
isNotBlank
(
importVo
.
getConcurrentSecondDept
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getConcurrentSecondDept
());
}
if
(
StrUtil
.
isNotBlank
(
importVo
.
getConcurrentThirdDept
()))
{
builder
.
append
(
StrUtil
.
SLASH
).
append
(
importVo
.
getConcurrentThirdDept
());
}
return
builder
.
toString
();
}
}
admin/src/main/java/com/anplus/hr/service/StaffingPlanDataServ.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
service
;
import
com.alibaba.cola.dto.Response
;
import
com.anplus.hr.domain.StaffingPlanData
;
import
com.anplus.hr.domain.vo.StaffingPlanDataImportVo
;
import
com.anplus.hr.domain.vo.StaffingPlanDataVo
;
import
com.anplus.hr.domain.params.StaffingPlanDataListParam
;
import
com.anplus.hr.domain.params.StaffingPlanDataParam
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.anplus.hr.domain.vo.StaffingPlanExportVo
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.List
;
import
java.util.stream.Stream
;
/**
* 编制规划记录明细Service接口
*
* @author LiuBin
* @date 2025-12-14
*/
public
interface
StaffingPlanDataServ
extends
IService
<
StaffingPlanData
>
{
/**
* 分页查询编制规划记录明细列表
*
* @param param 查询条件
* @return 编制规划记录明细分页列表
*/
PageResponse
<
StaffingPlanDataVo
>
queryPageList
(
StaffingPlanDataListParam
param
);
/**
* 查询符合条件的编制规划记录明细列表
*
* @param param 查询条件
* @return 编制规划记录明细列表
*/
List
<
StaffingPlanDataVo
>
queryList
(
StaffingPlanDataListParam
param
);
List
<
StaffingPlanExportVo
>
exportList
(
Long
recordId
);
/**
* 导入编制规划记录明细列表
*
* @param stream 查询条件
* @return 编制规划记录明细列表
*/
Response
importStaffingPlanDataList
(
Long
recordId
,
Stream
<
StaffingPlanDataImportVo
>
stream
);
/**
* 查询编制规划记录明细
*
* @param id 主键
* @return 编制规划记录明细
*/
StaffingPlanDataVo
queryById
(
Long
id
);
/**
* 新增编制规划记录明细
*
* @param param 编制规划记录明细
* @return 是否新增成功
*/
Boolean
insertByParam
(
StaffingPlanDataParam
param
);
/**
* 修改编制规划记录明细
*
* @param param 编制规划记录明细
* @return 是否修改成功
*/
Boolean
updateByParam
(
List
<
StaffingPlanDataParam
>
param
);
/**
* 校验并批量删除编制规划记录明细信息
*
* @param ids 待删除的主键集合
* @return 是否删除成功
*/
Boolean
delByIds
(
List
<
Long
>
ids
);
}
admin/src/main/java/com/anplus/hr/service/StaffingPlanRecordsServ.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
service
;
import
com.anplus.hr.domain.StaffingPlanRecords
;
import
com.anplus.hr.domain.vo.StaffingPlanRecordsVo
;
import
com.anplus.hr.domain.params.StaffingPlanRecordsListParam
;
import
com.anplus.hr.domain.params.StaffingPlanRecordsParam
;
import
com.alibaba.cola.dto.PageResponse
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.List
;
/**
* 编制规划记录Service接口
*
* @author LiuBin
* @date 2025-12-14
*/
public
interface
StaffingPlanRecordsServ
extends
IService
<
StaffingPlanRecords
>
{
/**
* 分页查询编制规划记录列表
*
* @param param 查询条件
* @return 编制规划记录分页列表
*/
PageResponse
<
StaffingPlanRecordsVo
>
queryPageList
(
StaffingPlanRecordsListParam
param
);
/**
* 查询符合条件的编制规划记录列表
*
* @param param 查询条件
* @return 编制规划记录列表
*/
List
<
StaffingPlanRecordsVo
>
queryList
(
StaffingPlanRecordsListParam
param
);
/**
* 查询编制规划记录
*
* @param id 主键
* @return 编制规划记录
*/
StaffingPlanRecordsVo
queryById
(
Long
id
);
/**
* 新增编制规划记录
*
* @param param 编制规划记录
* @return 是否新增成功
*/
Boolean
insertByParam
(
StaffingPlanRecordsParam
param
);
/**
* 修改编制规划记录
*
* @param param 编制规划记录
* @return 是否修改成功
*/
Boolean
updateByParam
(
StaffingPlanRecordsParam
param
);
/**
* 校验并批量删除编制规划记录信息
*
* @param ids 待删除的主键集合
* @return 是否删除成功
*/
Boolean
delByIds
(
List
<
Long
>
ids
);
}
admin/src/main/java/com/anplus/hr/service/impl/EmployeeInfoResignServImpl.java
View file @
c274f9f9
...
...
@@ -8,6 +8,7 @@ import com.anplus.hr.domain.EmployeeFamilyMembers;
import
com.anplus.hr.domain.EmployeeInfo
;
import
com.anplus.hr.domain.params.EmployeeInfoListParam
;
import
com.anplus.hr.domain.params.EmployeeInfoParam
;
import
com.anplus.hr.domain.vo.EmployeeDeptImportVo
;
import
com.anplus.hr.domain.vo.EmployeeInfoResignImportVo
;
import
com.anplus.hr.domain.vo.EmployeeInfoResignVo
;
import
com.anplus.hr.domain.vo.EmployeeInfoVo
;
...
...
@@ -127,8 +128,9 @@ public class EmployeeInfoResignServImpl extends ServiceImpl<EmployeeInfoMapper,
List
<
EmployeeInfo
>
insertList
=
new
ArrayList
<>(
successList
.
size
());
for
(
EmployeeInfoResignImportVo
importVo
:
successList
)
{
SysOss
sysOss
=
employeeInfoServ
.
handleImageToUrl
(
excelProcessingResult
,
importVo
);
Long
leafDeptId
=
deptNamesIdMap
.
get
(
employeeInfoServ
.
buildDeptNameStr
(
importVo
));
Long
concurrentDeptId
=
deptNamesIdMap
.
get
(
employeeInfoServ
.
buildPartDeptNameStr
(
importVo
));
EmployeeDeptImportVo
deptInfo
=
MapstructUtils
.
convert
(
importVo
,
EmployeeDeptImportVo
.
class
);
Long
leafDeptId
=
deptNamesIdMap
.
get
(
employeeSysDeptServ
.
buildDeptNameStr
(
deptInfo
));
Long
concurrentDeptId
=
deptNamesIdMap
.
get
(
employeeSysDeptServ
.
buildPartDeptNameStr
(
deptInfo
));
// if (leafDeptId == null) {
// importVo.addError("部门不存在");
// errorList.add(importVo);
...
...
admin/src/main/java/com/anplus/hr/service/impl/EmployeeInfoServImpl.java
View file @
c274f9f9
...
...
@@ -279,13 +279,14 @@ public class EmployeeInfoServImpl extends ServiceImpl<EmployeeInfoMapper, Employ
List
<
EmployeeInfo
>
insertList
=
new
ArrayList
<>(
successList
.
size
());
for
(
EmployeeInfoImportVo
importVo
:
successList
)
{
SysOss
sysOss
=
this
.
handleImageToUrl
(
excelProcessingResult
,
importVo
);
Long
leafDeptId
=
deptNamesIdMap
.
get
(
buildDeptNameStr
(
importVo
));
EmployeeDeptImportVo
deptInfo
=
MapstructUtils
.
convert
(
importVo
,
EmployeeDeptImportVo
.
class
);
Long
leafDeptId
=
deptNamesIdMap
.
get
(
employeeSysDeptServ
.
buildDeptNameStr
(
deptInfo
));
if
(
leafDeptId
==
null
)
{
importVo
.
addError
(
"部门不存在"
);
errorList
.
add
(
importVo
);
continue
;
}
Long
concurrentDeptId
=
deptNamesIdMap
.
get
(
buildPartDeptNameStr
(
importV
o
));
Long
concurrentDeptId
=
deptNamesIdMap
.
get
(
employeeSysDeptServ
.
buildPartDeptNameStr
(
deptInf
o
));
List
<
EmployeeFamilyMembers
>
buildFamilyMembersList
=
buildFamilyMembers
(
importVo
.
getFamilyMembersInfo
());
if
(!
buildFamilyMembersList
.
isEmpty
())
{
familyMembersList
.
addAll
(
buildFamilyMembersList
);
...
...
admin/src/main/java/com/anplus/hr/service/impl/EmployeePartTimeInfoServImpl.java
View file @
c274f9f9
...
...
@@ -12,10 +12,7 @@ import com.anplus.hr.constant.HrStatusEnum;
import
com.anplus.hr.domain.EmployeeInfo
;
import
com.anplus.hr.domain.params.EmployeePartTimeInfoListParam
;
import
com.anplus.hr.domain.params.EmployeePartTimeInfoParam
;
import
com.anplus.hr.domain.vo.EmployeeInfoImportVo
;
import
com.anplus.hr.domain.vo.EmployeeInfoVo
;
import
com.anplus.hr.domain.vo.EmployeePartTimeInfoImportVo
;
import
com.anplus.hr.domain.vo.EmployeePartTimeInfoVo
;
import
com.anplus.hr.domain.vo.*
;
import
com.anplus.hr.mapper.EmployeeInfoMapper
;
import
com.anplus.hr.service.EmployeeInfoServ
;
import
com.anplus.hr.service.EmployeePartTimeInfoServ
;
...
...
@@ -162,8 +159,8 @@ public class EmployeePartTimeInfoServImpl extends ServiceImpl<EmployeeInfoMapper
Map
<
String
,
Long
>
deptNamesIdMap
=
employeeSysDeptServ
.
selectJoinDeptNames
();
List
<
EmployeeInfo
>
insertList
=
new
ArrayList
<>(
successList
.
size
());
for
(
EmployeePartTimeInfoImportVo
importVo
:
successList
)
{
Employee
InfoImportVo
deptInfo
=
MapstructUtils
.
convert
(
importVo
,
EmployeeInfo
ImportVo
.
class
);
Long
leafDeptId
=
deptNamesIdMap
.
get
(
employee
Info
Serv
.
buildDeptNameStr
(
deptInfo
));
Employee
DeptImportVo
deptInfo
=
MapstructUtils
.
convert
(
importVo
,
EmployeeDept
ImportVo
.
class
);
Long
leafDeptId
=
deptNamesIdMap
.
get
(
employee
SysDept
Serv
.
buildDeptNameStr
(
deptInfo
));
if
(
leafDeptId
==
null
)
{
importVo
.
addError
(
"部门不存在"
);
errorList
.
add
(
importVo
);
...
...
admin/src/main/java/com/anplus/hr/service/impl/EmployeeSysDeptServImpl.java
View file @
c274f9f9
...
...
@@ -64,6 +64,15 @@ public class EmployeeSysDeptServImpl implements EmployeeSysDeptServ {
return
result
;
}
@Override
public
Map
<
String
,
Long
>
selectJoinDeptNamesForStaffingPlan
()
{
Map
<
String
,
Long
>
result
=
new
HashMap
<>();
List
<
SysDeptDTO
>
sysDeptDTOS
=
sysDeptServ
.
deptTreeForOptions
();
traverseDeptTreeForStaffingPlan
(
sysDeptDTOS
,
""
,
1
,
result
);
return
result
;
}
/**
* 构建部门查询条件
*
...
...
@@ -93,4 +102,23 @@ public class EmployeeSysDeptServImpl implements EmployeeSysDeptServ {
}
}
}
// 遍历根节点列表
private
<
T
extends
TreeDTO
>
void
traverseDeptTreeForStaffingPlan
(
List
<
T
>
deptList
,
String
parentPath
,
Integer
level
,
Map
<
String
,
Long
>
result
)
{
if
(
CollUtil
.
isEmpty
(
deptList
))
{
return
;
}
for
(
TreeDTO
dept
:
deptList
)
{
String
currentPath
=
StrUtil
.
isEmpty
(
parentPath
)
?
dept
.
getLabel
()
:
parentPath
+
StrUtil
.
SLASH
+
dept
.
getLabel
();
if
(
level
==
2
||
level
==
4
)
{
result
.
put
(
currentPath
,
dept
.
getId
());
}
// 递归处理子节点
if
(
CollUtil
.
isNotEmpty
(
dept
.
getChildren
()))
{
traverseDeptTreeForStaffingPlan
(
dept
.
getChildren
(),
currentPath
,
level
+
1
,
result
);
}
}
}
}
admin/src/main/java/com/anplus/hr/service/impl/StaffingPlanDataServImpl.java
0 → 100644
View file @
c274f9f9
This diff is collapsed.
Click to expand it.
admin/src/main/java/com/anplus/hr/service/impl/StaffingPlanRecordsServImpl.java
0 → 100644
View file @
c274f9f9
package
com
.
anplus
.
hr
.
service
.
impl
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.cola.dto.PageResponse
;
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
com.anplus.hr.domain.StaffingPlanRecords
;
import
com.anplus.hr.domain.vo.StaffingPlanRecordsVo
;
import
com.anplus.hr.domain.params.StaffingPlanRecordsListParam
;
import
com.anplus.hr.domain.params.StaffingPlanRecordsParam
;
import
com.anplus.hr.mapper.StaffingPlanRecordsMapper
;
import
com.anplus.hr.service.StaffingPlanRecordsServ
;
import
java.util.List
;
/**
* 编制规划记录Service业务层处理
*
* @author LiuBin
* @date 2025-12-14
*/
@RequiredArgsConstructor
@Service
public
class
StaffingPlanRecordsServImpl
extends
ServiceImpl
<
StaffingPlanRecordsMapper
,
StaffingPlanRecords
>
implements
StaffingPlanRecordsServ
{
private
final
StaffingPlanRecordsMapper
staffingPlanRecordsMapper
;
/**
* 分页查询编制规划记录列表
*
* @param param 查询条件
* @return 编制规划记录分页列表
*/
@Override
public
PageResponse
<
StaffingPlanRecordsVo
>
queryPageList
(
StaffingPlanRecordsListParam
param
)
{
Page
<
StaffingPlanRecords
>
page
=
QueryUtil
.
getPage
(
param
);
LambdaQueryWrapper
<
StaffingPlanRecords
>
lambdaQuery
=
this
.
buildQueryWrapper
(
param
);
staffingPlanRecordsMapper
.
selectPage
(
page
,
lambdaQuery
);
return
QueryUtil
.
getPageResponse
(
page
,
MapstructUtils
.
convert
(
page
.
getRecords
(),
StaffingPlanRecordsVo
.
class
));
}
/**
* 查询符合条件的编制规划记录列表
*
* @param param 查询条件
* @return 编制规划记录列表
*/
@Override
public
List
<
StaffingPlanRecordsVo
>
queryList
(
StaffingPlanRecordsListParam
param
)
{
LambdaQueryWrapper
<
StaffingPlanRecords
>
lambdaQuery
=
this
.
buildQueryWrapper
(
param
);
return
MapstructUtils
.
convert
(
staffingPlanRecordsMapper
.
selectList
(
lambdaQuery
),
StaffingPlanRecordsVo
.
class
);
}
private
LambdaQueryWrapper
<
StaffingPlanRecords
>
buildQueryWrapper
(
StaffingPlanRecordsListParam
param
)
{
LambdaQueryWrapper
<
StaffingPlanRecords
>
lambdaQuery
=
Wrappers
.<
StaffingPlanRecords
>
lambdaQuery
();
lambdaQuery
.
orderByDesc
(
StaffingPlanRecords:
:
getId
);
lambdaQuery
.
eq
(
StrUtil
.
isNotBlank
(
param
.
getRecordDate
()),
StaffingPlanRecords:
:
getRecordDate
,
param
.
getRecordDate
());
// lambdaQuery.eq(StrUtil.isNotBlank(param.getLastYearTitle()), StaffingPlanRecords::getLastYearTitle, param.getLastYearTitle());
// lambdaQuery.eq(StrUtil.isNotBlank(param.getCurrentYearTitle()), StaffingPlanRecords::getCurrentYearTitle, param.getCurrentYearTitle());
// lambdaQuery.eq(StrUtil.isNotBlank(param.getNextYearTitle()), StaffingPlanRecords::getNextYearTitle, param.getNextYearTitle());
// lambdaQuery.eq(StrUtil.isNotBlank(param.getInitFlag()), StaffingPlanRecords::getInitFlag, param.getInitFlag());
return
lambdaQuery
;
}
/**
* 查询编制规划记录
*
* @param id 主键
* @return 编制规划记录
*/
@Override
public
StaffingPlanRecordsVo
queryById
(
Long
id
){
StaffingPlanRecords
staffingPlanRecords
=
staffingPlanRecordsMapper
.
selectById
(
id
);
return
MapstructUtils
.
convert
(
staffingPlanRecords
,
StaffingPlanRecordsVo
.
class
);
}
/**
* 新增编制规划记录
*
* @param param 编制规划记录
* @return 是否新增成功
*/
@Override
public
Boolean
insertByParam
(
StaffingPlanRecordsParam
param
)
{
StaffingPlanRecords
staffingPlanRecords
=
MapstructUtils
.
convert
(
param
,
StaffingPlanRecords
.
class
);
String
recordDate
=
staffingPlanRecords
.
getRecordDate
();
Integer
recordYear
=
Convert
.
toInt
(
recordDate
);
staffingPlanRecords
.
setLastYearTitle
(
StrUtil
.
subPre
((
recordYear
-
1
)
+
"年编制"
,
2
));
staffingPlanRecords
.
setCurrentYearTitle
(
StrUtil
.
subPre
(
recordDate
+
"年编制"
,
2
));
staffingPlanRecords
.
setNextYearTitle
(
StrUtil
.
subPre
((
recordYear
+
1
)
+
"年编制"
,
2
));
return
this
.
save
(
staffingPlanRecords
);
}
/**
* 修改编制规划记录
*
* @param param 编制规划记录
* @return 是否修改成功
*/
@Override
public
Boolean
updateByParam
(
StaffingPlanRecordsParam
param
)
{
StaffingPlanRecords
staffingPlanRecords
=
MapstructUtils
.
convert
(
param
,
StaffingPlanRecords
.
class
);
return
this
.
updateById
(
staffingPlanRecords
);
}
/**
* 保存前的数据校验
*/
private
void
validEntityBeforeSave
(
StaffingPlanRecords
entity
){
// 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除编制规划记录信息
*
* @param ids 待删除的主键集合
* @return 是否删除成功
*/
@Override
// @Transactional(rollbackFor = {Exception.class})
public
Boolean
delByIds
(
List
<
Long
>
ids
)
{
//做一些业务上的校验,判断是否需要校验
return
this
.
removeByIds
(
ids
);
}
}
admin/src/main/resources/excel/编制导出模板.xlsx
0 → 100644
View file @
c274f9f9
File added
admin/src/main/resources/excel/编制模板.xlsx
0 → 100644
View file @
c274f9f9
File added
admin/src/main/resources/mapper/StaffingPlanDataMapper.xml
0 → 100644
View file @
c274f9f9
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.anplus.hr.mapper.StaffingPlanDataMapper"
>
</mapper>
admin/src/main/resources/mapper/StaffingPlanRecordsMapper.xml
0 → 100644
View file @
c274f9f9
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.anplus.hr.mapper.StaffingPlanRecordsMapper"
>
</mapper>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment