From 82f35de34d762bb152ec82965a5cb53aa8cf0d29 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Thu, 23 Oct 2025 14:53:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(oa):=20=E6=96=B0=E5=A2=9E=E5=A5=96?= =?UTF-8?q?=E9=87=91=E6=B1=A0=E5=8F=8A=E4=B8=8E=E9=A1=B9=E7=9B=AE=E5=85=B3?= =?UTF-8?q?=E8=81=94=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增奖金池实体类、业务对象及视图对象 - 实现奖金池的增删改查及分页查询功能 - 新增奖金池与项目关联实体类及相关对象 - 实现奖金池与项目的关联管理及批量绑定功能 - 提供奖金池及关联关系的Excel导出支持- 配置MyBatis映射文件及Mapper接口 - 添加控制器以支持RESTful API访问 --- .../oa/controller/OaBonusPoolController.java | 103 +++++++++++++ .../OaBonusProjectRelController.java | 109 ++++++++++++++ .../java/com/ruoyi/oa/domain/OaBonusPool.java | 63 ++++++++ .../ruoyi/oa/domain/OaBonusProjectRel.java | 53 +++++++ .../com/ruoyi/oa/domain/bo/OaBonusPoolBo.java | 63 ++++++++ .../oa/domain/bo/OaBonusProjectRelBo.java | 55 +++++++ .../com/ruoyi/oa/domain/vo/OaBonusPoolVo.java | 72 ++++++++++ .../oa/domain/vo/OaBonusProjectRelVo.java | 59 ++++++++ .../ruoyi/oa/mapper/OaBonusPoolMapper.java | 15 ++ .../oa/mapper/OaBonusProjectRelMapper.java | 15 ++ .../ruoyi/oa/service/IOaBonusPoolService.java | 49 +++++++ .../oa/service/IOaBonusProjectRelService.java | 51 +++++++ .../service/impl/OaBonusPoolServiceImpl.java | 113 +++++++++++++++ .../impl/OaBonusProjectRelServiceImpl.java | 136 ++++++++++++++++++ .../resources/mapper/oa/OaBonusPoolMapper.xml | 23 +++ .../mapper/oa/OaBonusProjectRelMapper.xml | 21 +++ 16 files changed, 1000 insertions(+) create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaBonusPoolController.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaBonusProjectRelController.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaBonusPool.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaBonusProjectRel.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaBonusPoolBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaBonusProjectRelBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaBonusPoolVo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaBonusProjectRelVo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaBonusPoolMapper.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaBonusProjectRelMapper.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaBonusPoolService.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaBonusProjectRelService.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaBonusPoolServiceImpl.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaBonusProjectRelServiceImpl.java create mode 100644 ruoyi-oa/src/main/resources/mapper/oa/OaBonusPoolMapper.xml create mode 100644 ruoyi-oa/src/main/resources/mapper/oa/OaBonusProjectRelMapper.xml diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaBonusPoolController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaBonusPoolController.java new file mode 100644 index 0000000..1454b1f --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaBonusPoolController.java @@ -0,0 +1,103 @@ +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 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.OaBonusPoolVo; +import com.ruoyi.oa.domain.bo.OaBonusPoolBo; +import com.ruoyi.oa.service.IOaBonusPoolService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 奖金池 + * + * @author ruoyi + * @date 2025-10-23 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/oa/bonusPool") +public class OaBonusPoolController extends BaseController { + + private final IOaBonusPoolService iOaBonusPoolService; + + /** + * 查询奖金池列表 + */ + @GetMapping("/list") + public TableDataInfo list(OaBonusPoolBo bo, PageQuery pageQuery) { + return iOaBonusPoolService.queryPageList(bo, pageQuery); + } + + /** + * 导出奖金池列表 + */ + @Log(title = "奖金池", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(OaBonusPoolBo bo, HttpServletResponse response) { + List list = iOaBonusPoolService.queryList(bo); + ExcelUtil.exportExcel(list, "奖金池", OaBonusPoolVo.class, response); + } + + /** + * 获取奖金池详细信息 + * + * @param poolId 主键 + */ + @GetMapping("/{poolId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long poolId) { + return R.ok(iOaBonusPoolService.queryById(poolId)); + } + + /** + * 新增奖金池 + */ + @Log(title = "奖金池", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody OaBonusPoolBo bo) { + return toAjax(iOaBonusPoolService.insertByBo(bo)); + } + + /** + * 修改奖金池 + */ + @Log(title = "奖金池", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody OaBonusPoolBo bo) { + return toAjax(iOaBonusPoolService.updateByBo(bo)); + } + + /** + * 删除奖金池 + * + * @param poolIds 主键串 + */ + @Log(title = "奖金池", businessType = BusinessType.DELETE) + @DeleteMapping("/{poolIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] poolIds) { + return toAjax(iOaBonusPoolService.deleteWithValidByIds(Arrays.asList(poolIds), true)); + } + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaBonusProjectRelController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaBonusProjectRelController.java new file mode 100644 index 0000000..bc70df7 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaBonusProjectRelController.java @@ -0,0 +1,109 @@ +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 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.OaBonusProjectRelVo; +import com.ruoyi.oa.domain.bo.OaBonusProjectRelBo; +import com.ruoyi.oa.service.IOaBonusProjectRelService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 奖金池与项目关联 + * + * @author ruoyi + * @date 2025-10-23 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/oa/bonusProjectRel") +public class OaBonusProjectRelController extends BaseController { + + private final IOaBonusProjectRelService iOaBonusProjectRelService; + + /** + * 查询奖金池与项目关联列表 + */ + @GetMapping("/list") + public TableDataInfo list(OaBonusProjectRelBo bo, PageQuery pageQuery) { + return iOaBonusProjectRelService.queryPageList(bo, pageQuery); + } + + /** + * 导出奖金池与项目关联列表 + */ + @Log(title = "奖金池与项目关联", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(OaBonusProjectRelBo bo, HttpServletResponse response) { + List list = iOaBonusProjectRelService.queryList(bo); + ExcelUtil.exportExcel(list, "奖金池与项目关联", OaBonusProjectRelVo.class, response); + } + + /** + * 获取奖金池与项目关联详细信息 + * + * @param relId 主键 + */ + @GetMapping("/{relId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long relId) { + return R.ok(iOaBonusProjectRelService.queryById(relId)); + } + + /** + * 新增奖金池与项目关联 + */ + @Log(title = "奖金池与项目关联", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody OaBonusProjectRelBo bo) { + return toAjax(iOaBonusProjectRelService.insertByBo(bo)); + } + + /** + * 修改奖金池与项目关联 + */ + @Log(title = "奖金池与项目关联", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody OaBonusProjectRelBo bo) { + return toAjax(iOaBonusProjectRelService.updateByBo(bo)); + } + + /** + * 删除奖金池与项目关联 + * + * @param relIds 主键串 + */ + @Log(title = "奖金池与项目关联", businessType = BusinessType.DELETE) + @DeleteMapping("/{relIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] relIds) { + return toAjax(iOaBonusProjectRelService.deleteWithValidByIds(Arrays.asList(relIds), true)); + } + + //使用这个方法批量绑定奖金池id和项目id + @Log(title = "奖金池与项目关联", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/batchAdd") + public R batchAdd(@Validated(AddGroup.class) @RequestBody OaBonusProjectRelBo bo) { + return toAjax(iOaBonusProjectRelService.batchAdd(bo)); + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaBonusPool.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaBonusPool.java new file mode 100644 index 0000000..fda5635 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaBonusPool.java @@ -0,0 +1,63 @@ +package com.ruoyi.oa.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 奖金池对象 oa_bonus_pool + * + * @author ruoyi + * @date 2025-10-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("oa_bonus_pool") +public class OaBonusPool extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键ID + */ + @TableId(value = "pool_id") + private Long poolId; + /** + * 奖金池名称 + */ + private String poolName; + /** + * 开始日期 + */ + private Date startDate; + /** + * 结束日期 + */ + private Date endDate; + /** + * 奖金池总金额(单位:元) + */ + private BigDecimal totalAmount; + /** + * 剩余金额(单位:元) + */ + private BigDecimal remainingAmount; + /** + * 删除标识(0:未删除 1:已删除) + */ + @TableLogic + private String delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaBonusProjectRel.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaBonusProjectRel.java new file mode 100644 index 0000000..9a5e211 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaBonusProjectRel.java @@ -0,0 +1,53 @@ +package com.ruoyi.oa.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; + +import java.math.BigDecimal; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 奖金池与项目关联对象 oa_bonus_project_rel + * + * @author ruoyi + * @date 2025-10-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("oa_bonus_project_rel") +public class OaBonusProjectRel extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键ID + */ + @TableId(value = "rel_id") + private Long relId; + /** + * 奖金池ID(关联bonus_pool表id) + */ + private Long poolId; + /** + * 项目ID(关联项目表id) + */ + private Long projectId; + /** + * 已分配给该项目的金额(单位:元) + */ + private BigDecimal allocatedAmount; + /** + * 删除标识(0:未删除 1:已删除) + */ + @TableLogic + private String delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaBonusPoolBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaBonusPoolBo.java new file mode 100644 index 0000000..7cb1b58 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaBonusPoolBo.java @@ -0,0 +1,63 @@ +package com.ruoyi.oa.domain.bo; + +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 奖金池业务对象 oa_bonus_pool + * + * @author ruoyi + * @date 2025-10-23 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class OaBonusPoolBo extends BaseEntity { + + /** + * 主键ID + */ + private Long poolId; + + /** + * 奖金池名称 + */ + private String poolName; + + /** + * 开始日期 + */ + private Date startDate; + + /** + * 结束日期 + */ + private Date endDate; + + /** + * 奖金池总金额(单位:元) + */ + private BigDecimal totalAmount; + + /** + * 剩余金额(单位:元) + */ + private BigDecimal remainingAmount; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaBonusProjectRelBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaBonusProjectRelBo.java new file mode 100644 index 0000000..78add0b --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaBonusProjectRelBo.java @@ -0,0 +1,55 @@ +package com.ruoyi.oa.domain.bo; + +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import java.math.BigDecimal; +import java.util.List; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 奖金池与项目关联业务对象 oa_bonus_project_rel + * + * @author ruoyi + * @date 2025-10-23 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class OaBonusProjectRelBo extends BaseEntity { + + /** + * 主键ID + */ + private Long relId; + + /** + * 奖金池ID(关联bonus_pool表id) + */ + private Long poolId; + + /** + * 项目ID(关联项目表id) + */ + private Long projectId; + + /** + * 已分配给该项目的金额(单位:元) + */ + private BigDecimal allocatedAmount; + + /** + * 备注 + */ + private String remark; + + private List projectIds; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaBonusPoolVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaBonusPoolVo.java new file mode 100644 index 0000000..ef5fd45 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaBonusPoolVo.java @@ -0,0 +1,72 @@ +package com.ruoyi.oa.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; +import java.util.Date; + + + +/** + * 奖金池视图对象 oa_bonus_pool + * + * @author ruoyi + * @date 2025-10-23 + */ +@Data +@ExcelIgnoreUnannotated +public class OaBonusPoolVo { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long poolId; + + /** + * 奖金池名称 + */ + @ExcelProperty(value = "奖金池名称") + private String poolName; + + /** + * 开始日期 + */ + @ExcelProperty(value = "开始日期") + private Date startDate; + + /** + * 结束日期 + */ + @ExcelProperty(value = "结束日期") + private Date endDate; + + /** + * 奖金池总金额(单位:元) + */ + @ExcelProperty(value = "奖金池总金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "单=位:元") + private BigDecimal totalAmount; + + /** + * 剩余金额(单位:元) + */ + @ExcelProperty(value = "剩余金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "单=位:元") + private BigDecimal remainingAmount; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaBonusProjectRelVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaBonusProjectRelVo.java new file mode 100644 index 0000000..468618b --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaBonusProjectRelVo.java @@ -0,0 +1,59 @@ +package com.ruoyi.oa.domain.vo; + +import java.math.BigDecimal; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; +import java.util.Date; + + + +/** + * 奖金池与项目关联视图对象 oa_bonus_project_rel + * + * @author ruoyi + * @date 2025-10-23 + */ +@Data +@ExcelIgnoreUnannotated +public class OaBonusProjectRelVo { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long relId; + + /** + * 奖金池ID(关联bonus_pool表id) + */ + @ExcelProperty(value = "奖金池ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "关=联bonus_pool表id") + private Long poolId; + + /** + * 项目ID(关联项目表id) + */ + @ExcelProperty(value = "项目ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "关=联项目表id") + private Long projectId; + + /** + * 已分配给该项目的金额(单位:元) + */ + @ExcelProperty(value = "已分配给该项目的金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "单=位:元") + private BigDecimal allocatedAmount; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaBonusPoolMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaBonusPoolMapper.java new file mode 100644 index 0000000..6624ee8 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaBonusPoolMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.oa.mapper; + +import com.ruoyi.oa.domain.OaBonusPool; +import com.ruoyi.oa.domain.vo.OaBonusPoolVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 奖金池Mapper接口 + * + * @author ruoyi + * @date 2025-10-23 + */ +public interface OaBonusPoolMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaBonusProjectRelMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaBonusProjectRelMapper.java new file mode 100644 index 0000000..850fafd --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaBonusProjectRelMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.oa.mapper; + +import com.ruoyi.oa.domain.OaBonusProjectRel; +import com.ruoyi.oa.domain.vo.OaBonusProjectRelVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 奖金池与项目关联Mapper接口 + * + * @author ruoyi + * @date 2025-10-23 + */ +public interface OaBonusProjectRelMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaBonusPoolService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaBonusPoolService.java new file mode 100644 index 0000000..e2dccb2 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaBonusPoolService.java @@ -0,0 +1,49 @@ +package com.ruoyi.oa.service; + +import com.ruoyi.oa.domain.OaBonusPool; +import com.ruoyi.oa.domain.vo.OaBonusPoolVo; +import com.ruoyi.oa.domain.bo.OaBonusPoolBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 奖金池Service接口 + * + * @author ruoyi + * @date 2025-10-23 + */ +public interface IOaBonusPoolService { + + /** + * 查询奖金池 + */ + OaBonusPoolVo queryById(Long poolId); + + /** + * 查询奖金池列表 + */ + TableDataInfo queryPageList(OaBonusPoolBo bo, PageQuery pageQuery); + + /** + * 查询奖金池列表 + */ + List queryList(OaBonusPoolBo bo); + + /** + * 新增奖金池 + */ + Boolean insertByBo(OaBonusPoolBo bo); + + /** + * 修改奖金池 + */ + Boolean updateByBo(OaBonusPoolBo bo); + + /** + * 校验并批量删除奖金池信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaBonusProjectRelService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaBonusProjectRelService.java new file mode 100644 index 0000000..f4a5d2a --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaBonusProjectRelService.java @@ -0,0 +1,51 @@ +package com.ruoyi.oa.service; + +import com.ruoyi.oa.domain.OaBonusProjectRel; +import com.ruoyi.oa.domain.vo.OaBonusProjectRelVo; +import com.ruoyi.oa.domain.bo.OaBonusProjectRelBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 奖金池与项目关联Service接口 + * + * @author ruoyi + * @date 2025-10-23 + */ +public interface IOaBonusProjectRelService { + + /** + * 查询奖金池与项目关联 + */ + OaBonusProjectRelVo queryById(Long relId); + + /** + * 查询奖金池与项目关联列表 + */ + TableDataInfo queryPageList(OaBonusProjectRelBo bo, PageQuery pageQuery); + + /** + * 查询奖金池与项目关联列表 + */ + List queryList(OaBonusProjectRelBo bo); + + /** + * 新增奖金池与项目关联 + */ + Boolean insertByBo(OaBonusProjectRelBo bo); + + /** + * 修改奖金池与项目关联 + */ + Boolean updateByBo(OaBonusProjectRelBo bo); + + /** + * 校验并批量删除奖金池与项目关联信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + boolean batchAdd(OaBonusProjectRelBo bo); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaBonusPoolServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaBonusPoolServiceImpl.java new file mode 100644 index 0000000..65011a0 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaBonusPoolServiceImpl.java @@ -0,0 +1,113 @@ +package com.ruoyi.oa.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.oa.domain.bo.OaBonusPoolBo; +import com.ruoyi.oa.domain.vo.OaBonusPoolVo; +import com.ruoyi.oa.domain.OaBonusPool; +import com.ruoyi.oa.mapper.OaBonusPoolMapper; +import com.ruoyi.oa.service.IOaBonusPoolService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 奖金池Service业务层处理 + * + * @author ruoyi + * @date 2025-10-23 + */ +@RequiredArgsConstructor +@Service +public class OaBonusPoolServiceImpl implements IOaBonusPoolService { + + private final OaBonusPoolMapper baseMapper; + + /** + * 查询奖金池 + */ + @Override + public OaBonusPoolVo queryById(Long poolId){ + return baseMapper.selectVoById(poolId); + } + + /** + * 查询奖金池列表 + */ + @Override + public TableDataInfo queryPageList(OaBonusPoolBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询奖金池列表 + */ + @Override + public List queryList(OaBonusPoolBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(OaBonusPoolBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getPoolName()), OaBonusPool::getPoolName, bo.getPoolName()); + lqw.eq(bo.getStartDate() != null, OaBonusPool::getStartDate, bo.getStartDate()); + lqw.eq(bo.getEndDate() != null, OaBonusPool::getEndDate, bo.getEndDate()); + lqw.eq(bo.getTotalAmount() != null, OaBonusPool::getTotalAmount, bo.getTotalAmount()); + lqw.eq(bo.getRemainingAmount() != null, OaBonusPool::getRemainingAmount, bo.getRemainingAmount()); + return lqw; + } + + /** + * 新增奖金池 + */ + @Override + public Boolean insertByBo(OaBonusPoolBo bo) { + OaBonusPool add = BeanUtil.toBean(bo, OaBonusPool.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setPoolId(add.getPoolId()); + } + return flag; + } + + /** + * 修改奖金池 + */ + @Override + public Boolean updateByBo(OaBonusPoolBo bo) { + OaBonusPool update = BeanUtil.toBean(bo, OaBonusPool.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(OaBonusPool entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除奖金池 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaBonusProjectRelServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaBonusProjectRelServiceImpl.java new file mode 100644 index 0000000..ad4d83b --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaBonusProjectRelServiceImpl.java @@ -0,0 +1,136 @@ +package com.ruoyi.oa.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.oa.domain.bo.OaBonusProjectRelBo; +import com.ruoyi.oa.domain.vo.OaBonusProjectRelVo; +import com.ruoyi.oa.domain.OaBonusProjectRel; +import com.ruoyi.oa.mapper.OaBonusProjectRelMapper; +import com.ruoyi.oa.service.IOaBonusProjectRelService; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 奖金池与项目关联Service业务层处理 + * + * @author ruoyi + * @date 2025-10-23 + */ +@RequiredArgsConstructor +@Service +public class OaBonusProjectRelServiceImpl implements IOaBonusProjectRelService { + + private final OaBonusProjectRelMapper baseMapper; + + /** + * 查询奖金池与项目关联 + */ + @Override + public OaBonusProjectRelVo queryById(Long relId){ + return baseMapper.selectVoById(relId); + } + + /** + * 查询奖金池与项目关联列表 + */ + @Override + public TableDataInfo queryPageList(OaBonusProjectRelBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询奖金池与项目关联列表 + */ + @Override + public List queryList(OaBonusProjectRelBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(OaBonusProjectRelBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getPoolId() != null, OaBonusProjectRel::getPoolId, bo.getPoolId()); + lqw.eq(bo.getProjectId() != null, OaBonusProjectRel::getProjectId, bo.getProjectId()); + lqw.eq(bo.getAllocatedAmount() != null, OaBonusProjectRel::getAllocatedAmount, bo.getAllocatedAmount()); + return lqw; + } + + /** + * 新增奖金池与项目关联 + */ + @Override + public Boolean insertByBo(OaBonusProjectRelBo bo) { + OaBonusProjectRel add = BeanUtil.toBean(bo, OaBonusProjectRel.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setRelId(add.getRelId()); + } + return flag; + } + + /** + * 修改奖金池与项目关联 + */ + @Override + public Boolean updateByBo(OaBonusProjectRelBo bo) { + OaBonusProjectRel update = BeanUtil.toBean(bo, OaBonusProjectRel.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(OaBonusProjectRel entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除奖金池与项目关联 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean batchAdd(OaBonusProjectRelBo bo) { + //批量插入奖金池id和项目id属于一对多的关系 + if (CollUtil.isEmpty(bo.getProjectIds())) { + return false; + } + + boolean success = true; + for (Long projectId : bo.getProjectIds()) { + OaBonusProjectRel rel = new OaBonusProjectRel(); + rel.setPoolId(bo.getPoolId()); + rel.setProjectId(projectId); + rel.setAllocatedAmount(bo.getAllocatedAmount()); + int result = baseMapper.insert(rel); + if (result <= 0) { + success = false; + break; + } + } + return success; + } +} diff --git a/ruoyi-oa/src/main/resources/mapper/oa/OaBonusPoolMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/OaBonusPoolMapper.xml new file mode 100644 index 0000000..2d53385 --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/OaBonusPoolMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/OaBonusProjectRelMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/OaBonusProjectRelMapper.xml new file mode 100644 index 0000000..d4cc413 --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/OaBonusProjectRelMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + +