薪资计算逻辑

This commit is contained in:
2025-06-23 18:04:49 +08:00
parent 3b0d223da5
commit 3d6fe57c50
58 changed files with 3522 additions and 1 deletions

View File

@@ -0,0 +1,108 @@
package com.ruoyi.oa.controller;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.oa.domain.vo.OaBindingItemDetailVo;
import com.ruoyi.oa.domain.bo.OaBindingItemDetailBo;
import com.ruoyi.oa.service.IOaBindingItemDetailService;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 绑定记录明细
*
* @author ruoyi
* @date 2025-06-23
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/oa/bindingItemDetail")
public class OaBindingItemDetailController extends BaseController {
private final IOaBindingItemDetailService iOaBindingItemDetailService;
/**
* 查询绑定记录明细列表
*/
@GetMapping("/list")
public TableDataInfo<OaBindingItemDetailVo> list(OaBindingItemDetailBo bo, PageQuery pageQuery) {
return iOaBindingItemDetailService.queryPageList(bo, pageQuery);
}
/**
* 导出绑定记录明细列表
*/
@Log(title = "绑定记录明细", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OaBindingItemDetailBo bo, HttpServletResponse response) {
List<OaBindingItemDetailVo> list = iOaBindingItemDetailService.queryList(bo);
ExcelUtil.exportExcel(list, "绑定记录明细", OaBindingItemDetailVo.class, response);
}
/**
* 获取绑定记录明细详细信息
*
* @param bindingItemId 主键
*/
@GetMapping("/{bindingItemId}")
public R<OaBindingItemDetailVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long bindingItemId) {
return R.ok(iOaBindingItemDetailService.queryById(bindingItemId));
}
/**
* 新增绑定记录明细
*/
@Log(title = "绑定记录明细", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OaBindingItemDetailBo bo) {
return toAjax(iOaBindingItemDetailService.insertByBo(bo));
}
/**
* 修改绑定记录明细
*/
@Log(title = "绑定记录明细", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OaBindingItemDetailBo bo) {
return toAjax(iOaBindingItemDetailService.updateByBo(bo));
}
/**
* 删除绑定记录明细
*
* @param bindingItemIds 主键串
*/
@Log(title = "绑定记录明细", businessType = BusinessType.DELETE)
@DeleteMapping("/{bindingItemIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] bindingItemIds) {
return toAjax(iOaBindingItemDetailService.deleteWithValidByIds(Arrays.asList(bindingItemIds), true));
}
}

View File

@@ -0,0 +1,108 @@
package com.ruoyi.oa.controller;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.oa.domain.vo.OaEmployeeVo;
import com.ruoyi.oa.domain.bo.OaEmployeeBo;
import com.ruoyi.oa.service.IOaEmployeeService;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 员工基础信息
*
* @author ruoyi
* @date 2025-06-23
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/oa/employee")
public class OaEmployeeController extends BaseController {
private final IOaEmployeeService iOaEmployeeService;
/**
* 查询员工基础信息列表
*/
@GetMapping("/list")
public TableDataInfo<OaEmployeeVo> list(OaEmployeeBo bo, PageQuery pageQuery) {
return iOaEmployeeService.queryPageList(bo, pageQuery);
}
/**
* 导出员工基础信息列表
*/
@Log(title = "员工基础信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OaEmployeeBo bo, HttpServletResponse response) {
List<OaEmployeeVo> list = iOaEmployeeService.queryList(bo);
ExcelUtil.exportExcel(list, "员工基础信息", OaEmployeeVo.class, response);
}
/**
* 获取员工基础信息详细信息
*
* @param employeeId 主键
*/
@GetMapping("/{employeeId}")
public R<OaEmployeeVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long employeeId) {
return R.ok(iOaEmployeeService.queryById(employeeId));
}
/**
* 新增员工基础信息
*/
@Log(title = "员工基础信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OaEmployeeBo bo) {
return toAjax(iOaEmployeeService.insertByBo(bo));
}
/**
* 修改员工基础信息
*/
@Log(title = "员工基础信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OaEmployeeBo bo) {
return toAjax(iOaEmployeeService.updateByBo(bo));
}
/**
* 删除员工基础信息
*
* @param employeeIds 主键串
*/
@Log(title = "员工基础信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{employeeIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] employeeIds) {
return toAjax(iOaEmployeeService.deleteWithValidByIds(Arrays.asList(employeeIds), true));
}
}

View File

@@ -0,0 +1,136 @@
package com.ruoyi.oa.controller;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.ruoyi.oa.domain.vo.EmployeeSalaryRecordVo;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.oa.domain.vo.OaEmployeeTemplateBindingVo;
import com.ruoyi.oa.domain.bo.OaEmployeeTemplateBindingBo;
import com.ruoyi.oa.service.IOaEmployeeTemplateBindingService;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 员工模板绑定及月度发放记录
*
* @author ruoyi
* @date 2025-06-23
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/oa/employeeTemplateBinding")
public class OaEmployeeTemplateBindingController extends BaseController {
private final IOaEmployeeTemplateBindingService iOaEmployeeTemplateBindingService;
/**
* 查询员工模板绑定及月度发放记录列表
*/
@GetMapping("/list")
public TableDataInfo<OaEmployeeTemplateBindingVo> list(OaEmployeeTemplateBindingBo bo, PageQuery pageQuery) {
return iOaEmployeeTemplateBindingService.queryPageList(bo, pageQuery);
}
/**
* 导出员工模板绑定及月度发放记录列表
*/
@Log(title = "员工模板绑定及月度发放记录", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OaEmployeeTemplateBindingBo bo, HttpServletResponse response) {
List<OaEmployeeTemplateBindingVo> list = iOaEmployeeTemplateBindingService.queryList(bo);
ExcelUtil.exportExcel(list, "员工模板绑定及月度发放记录", OaEmployeeTemplateBindingVo.class, response);
}
/**
* 获取员工模板绑定及月度发放记录详细信息
*
* @param bindingId 主键
*/
@GetMapping("/{bindingId}")
public R<OaEmployeeTemplateBindingVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long bindingId) {
return R.ok(iOaEmployeeTemplateBindingService.queryById(bindingId));
}
/**
* 新增员工模板绑定及月度发放记录
*/
@Log(title = "员工模板绑定及月度发放记录", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OaEmployeeTemplateBindingBo bo) {
return toAjax(iOaEmployeeTemplateBindingService.insertByBo(bo));
}
/**
* 修改员工模板绑定及月度发放记录
*/
@Log(title = "员工模板绑定及月度发放记录", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OaEmployeeTemplateBindingBo bo) {
return toAjax(iOaEmployeeTemplateBindingService.updateByBo(bo));
}
/**
* 删除员工模板绑定及月度发放记录
*
* @param bindingIds 主键串
*/
@Log(title = "员工模板绑定及月度发放记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{bindingIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] bindingIds) {
return toAjax(iOaEmployeeTemplateBindingService.deleteWithValidByIds(Arrays.asList(bindingIds), true));
}
// 6. 薪资批量计算/一键复制上月
@PostMapping("/calculate")
public R<Void> calculateSalary(@RequestBody OaEmployeeTemplateBindingBo bo) {
if (CollectionUtils.isEmpty(bo.getEmployeeIds())) {
return R.fail("请选择员工");
}
if (bo.getPayYear() == null || bo.getPayMonth() == null) {
return R.fail("请选择发薪年月");
}
if (bo.getDefaultInsuranceTemplateId() == null || bo.getDefaultSalaryTemplateId() == null) {
return R.fail("请选择默认模板");
}
return toAjax(iOaEmployeeTemplateBindingService.calculateSalary(bo.getEmployeeIds(), bo.getPayYear(), bo.getPayMonth(), bo.getDefaultInsuranceTemplateId(), bo.getDefaultSalaryTemplateId()));
}
// 7. 批量确认发放
@PostMapping("/finalize")
public R<Void> finalizeSalary(@RequestBody List<Long> bindingIds) {
return toAjax(iOaEmployeeTemplateBindingService.finalizeSalary(bindingIds));
}
// 8. 查询单员工历史发放记录
@GetMapping("/history/{employeeId}")
public R<List<EmployeeSalaryRecordVo>> history(@PathVariable Long employeeId) {
return R.ok(iOaEmployeeTemplateBindingService.querySalaryHistory(employeeId));
}
}

View File

@@ -0,0 +1,108 @@
package com.ruoyi.oa.controller;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.oa.domain.vo.OaInsuranceTemplateVo;
import com.ruoyi.oa.domain.bo.OaInsuranceTemplateBo;
import com.ruoyi.oa.service.IOaInsuranceTemplateService;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 社保/公积金模板主
*
* @author ruoyi
* @date 2025-06-23
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/oa/insuranceTemplate")
public class OaInsuranceTemplateController extends BaseController {
private final IOaInsuranceTemplateService iOaInsuranceTemplateService;
/**
* 查询社保/公积金模板主列表
*/
@GetMapping("/list")
public TableDataInfo<OaInsuranceTemplateVo> list(OaInsuranceTemplateBo bo, PageQuery pageQuery) {
return iOaInsuranceTemplateService.queryPageList(bo, pageQuery);
}
/**
* 导出社保/公积金模板主列表
*/
@Log(title = "社保/公积金模板主", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OaInsuranceTemplateBo bo, HttpServletResponse response) {
List<OaInsuranceTemplateVo> list = iOaInsuranceTemplateService.queryList(bo);
ExcelUtil.exportExcel(list, "社保/公积金模板主", OaInsuranceTemplateVo.class, response);
}
/**
* 获取社保/公积金模板主详细信息
*
* @param insuranceTemplateId 主键
*/
@GetMapping("/{insuranceTemplateId}")
public R<OaInsuranceTemplateVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long insuranceTemplateId) {
return R.ok(iOaInsuranceTemplateService.queryById(insuranceTemplateId));
}
/**
* 新增社保/公积金模板主
*/
@Log(title = "社保/公积金模板主", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OaInsuranceTemplateBo bo) {
return toAjax(iOaInsuranceTemplateService.insertByBo(bo));
}
/**
* 修改社保/公积金模板主
*/
@Log(title = "社保/公积金模板主", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OaInsuranceTemplateBo bo) {
return toAjax(iOaInsuranceTemplateService.updateByBo(bo));
}
/**
* 删除社保/公积金模板主
*
* @param insuranceTemplateIds 主键串
*/
@Log(title = "社保/公积金模板主", businessType = BusinessType.DELETE)
@DeleteMapping("/{insuranceTemplateIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] insuranceTemplateIds) {
return toAjax(iOaInsuranceTemplateService.deleteWithValidByIds(Arrays.asList(insuranceTemplateIds), true));
}
}

View File

@@ -0,0 +1,108 @@
package com.ruoyi.oa.controller;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.oa.domain.vo.OaInsuranceTemplateDetailVo;
import com.ruoyi.oa.domain.bo.OaInsuranceTemplateDetailBo;
import com.ruoyi.oa.service.IOaInsuranceTemplateDetailService;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 社保/公积金模板明细
*
* @author ruoyi
* @date 2025-06-23
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/oa/insuranceTemplateDetail")
public class OaInsuranceTemplateDetailController extends BaseController {
private final IOaInsuranceTemplateDetailService iOaInsuranceTemplateDetailService;
/**
* 查询社保/公积金模板明细列表
*/
@GetMapping("/list")
public TableDataInfo<OaInsuranceTemplateDetailVo> list(OaInsuranceTemplateDetailBo bo, PageQuery pageQuery) {
return iOaInsuranceTemplateDetailService.queryPageList(bo, pageQuery);
}
/**
* 导出社保/公积金模板明细列表
*/
@Log(title = "社保/公积金模板明细", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OaInsuranceTemplateDetailBo bo, HttpServletResponse response) {
List<OaInsuranceTemplateDetailVo> list = iOaInsuranceTemplateDetailService.queryList(bo);
ExcelUtil.exportExcel(list, "社保/公积金模板明细", OaInsuranceTemplateDetailVo.class, response);
}
/**
* 获取社保/公积金模板明细详细信息
*
* @param insuranceDetailId 主键
*/
@GetMapping("/{insuranceDetailId}")
public R<OaInsuranceTemplateDetailVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long insuranceDetailId) {
return R.ok(iOaInsuranceTemplateDetailService.queryById(insuranceDetailId));
}
/**
* 新增社保/公积金模板明细
*/
@Log(title = "社保/公积金模板明细", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OaInsuranceTemplateDetailBo bo) {
return toAjax(iOaInsuranceTemplateDetailService.insertByBo(bo));
}
/**
* 修改社保/公积金模板明细
*/
@Log(title = "社保/公积金模板明细", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OaInsuranceTemplateDetailBo bo) {
return toAjax(iOaInsuranceTemplateDetailService.updateByBo(bo));
}
/**
* 删除社保/公积金模板明细
*
* @param insuranceDetailIds 主键串
*/
@Log(title = "社保/公积金模板明细", businessType = BusinessType.DELETE)
@DeleteMapping("/{insuranceDetailIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] insuranceDetailIds) {
return toAjax(iOaInsuranceTemplateDetailService.deleteWithValidByIds(Arrays.asList(insuranceDetailIds), true));
}
}

View File

@@ -0,0 +1,108 @@
package com.ruoyi.oa.controller;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.oa.domain.vo.OaSalaryTemplateVo;
import com.ruoyi.oa.domain.bo.OaSalaryTemplateBo;
import com.ruoyi.oa.service.IOaSalaryTemplateService;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 薪资模板主
*
* @author ruoyi
* @date 2025-06-23
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/oa/salaryTemplate")
public class OaSalaryTemplateController extends BaseController {
private final IOaSalaryTemplateService iOaSalaryTemplateService;
/**
* 查询薪资模板主列表
*/
@GetMapping("/list")
public TableDataInfo<OaSalaryTemplateVo> list(OaSalaryTemplateBo bo, PageQuery pageQuery) {
return iOaSalaryTemplateService.queryPageList(bo, pageQuery);
}
/**
* 导出薪资模板主列表
*/
@Log(title = "薪资模板主", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OaSalaryTemplateBo bo, HttpServletResponse response) {
List<OaSalaryTemplateVo> list = iOaSalaryTemplateService.queryList(bo);
ExcelUtil.exportExcel(list, "薪资模板主", OaSalaryTemplateVo.class, response);
}
/**
* 获取薪资模板主详细信息
*
* @param salaryTemplateId 主键
*/
@GetMapping("/{salaryTemplateId}")
public R<OaSalaryTemplateVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long salaryTemplateId) {
return R.ok(iOaSalaryTemplateService.queryById(salaryTemplateId));
}
/**
* 新增薪资模板主
*/
@Log(title = "薪资模板主", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OaSalaryTemplateBo bo) {
return toAjax(iOaSalaryTemplateService.insertByBo(bo));
}
/**
* 修改薪资模板主
*/
@Log(title = "薪资模板主", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OaSalaryTemplateBo bo) {
return toAjax(iOaSalaryTemplateService.updateByBo(bo));
}
/**
* 删除薪资模板主
*
* @param salaryTemplateIds 主键串
*/
@Log(title = "薪资模板主", businessType = BusinessType.DELETE)
@DeleteMapping("/{salaryTemplateIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] salaryTemplateIds) {
return toAjax(iOaSalaryTemplateService.deleteWithValidByIds(Arrays.asList(salaryTemplateIds), true));
}
}

View File

@@ -0,0 +1,108 @@
package com.ruoyi.oa.controller;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.oa.domain.vo.OaSalaryTemplateDetailVo;
import com.ruoyi.oa.domain.bo.OaSalaryTemplateDetailBo;
import com.ruoyi.oa.service.IOaSalaryTemplateDetailService;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 薪资模板明细
*
* @author ruoyi
* @date 2025-06-23
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/oa/salaryTemplateDetail")
public class OaSalaryTemplateDetailController extends BaseController {
private final IOaSalaryTemplateDetailService iOaSalaryTemplateDetailService;
/**
* 查询薪资模板明细列表
*/
@GetMapping("/list")
public TableDataInfo<OaSalaryTemplateDetailVo> list(OaSalaryTemplateDetailBo bo, PageQuery pageQuery) {
return iOaSalaryTemplateDetailService.queryPageList(bo, pageQuery);
}
/**
* 导出薪资模板明细列表
*/
@Log(title = "薪资模板明细", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OaSalaryTemplateDetailBo bo, HttpServletResponse response) {
List<OaSalaryTemplateDetailVo> list = iOaSalaryTemplateDetailService.queryList(bo);
ExcelUtil.exportExcel(list, "薪资模板明细", OaSalaryTemplateDetailVo.class, response);
}
/**
* 获取薪资模板明细详细信息
*
* @param salaryDetailId 主键
*/
@GetMapping("/{salaryDetailId}")
public R<OaSalaryTemplateDetailVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long salaryDetailId) {
return R.ok(iOaSalaryTemplateDetailService.queryById(salaryDetailId));
}
/**
* 新增薪资模板明细
*/
@Log(title = "薪资模板明细", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OaSalaryTemplateDetailBo bo) {
return toAjax(iOaSalaryTemplateDetailService.insertByBo(bo));
}
/**
* 修改薪资模板明细
*/
@Log(title = "薪资模板明细", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OaSalaryTemplateDetailBo bo) {
return toAjax(iOaSalaryTemplateDetailService.updateByBo(bo));
}
/**
* 删除薪资模板明细
*
* @param salaryDetailIds 主键串
*/
@Log(title = "薪资模板明细", businessType = BusinessType.DELETE)
@DeleteMapping("/{salaryDetailIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] salaryDetailIds) {
return toAjax(iOaSalaryTemplateDetailService.deleteWithValidByIds(Arrays.asList(salaryDetailIds), true));
}
}