ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmPositionController.java
@@ -1,8 +1,24 @@ package com.ruoyi.web.controller.api; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.model.TCrmBranchSalary; import com.ruoyi.system.model.TCrmPosition; import com.ruoyi.system.query.TCrmPositionQuery; import com.ruoyi.system.service.TCrmBranchSalaryService; import com.ruoyi.system.service.TCrmPositionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** * <p> @@ -12,9 +28,104 @@ * @author xiaochen * @since 2025-08-20 */ @Api(tags = "职位管理") @RestController @RequestMapping("/t-crm-position") public class TCrmPositionController { private final TCrmPositionService crmPositionService; private final TCrmBranchSalaryService crmBranchSalaryService; private final TokenService tokenService; @Autowired public TCrmPositionController(TCrmPositionService crmPositionService, TCrmBranchSalaryService crmBranchSalaryService, TokenService tokenService) { this.crmPositionService = crmPositionService; this.crmBranchSalaryService = crmBranchSalaryService; this.tokenService = tokenService; } /** * 获取职位管理管理列表 */ @ApiOperation(value = "获取职位管理分页列表") @PostMapping(value = "/pageList") public R<PageInfo<TCrmPosition>> pageList(@RequestBody TCrmPositionQuery query) { return R.ok(crmPositionService.pageList(query)); } /** * 获取职位管理管理列表 */ @ApiOperation(value = "获取职位管理列表") @PostMapping(value = "/list") public R<List<TCrmPosition>> list() { return R.ok(crmPositionService.list(Wrappers.lambdaQuery(TCrmPosition.class).orderByDesc(TCrmPosition::getCreateTime))); } /** * 添加职位管理管理 */ @Log(title = "职位管理信息-新增职位管理", businessType = BusinessType.INSERT) @ApiOperation(value = "添加职位管理") @PostMapping(value = "/add") public R<Boolean> add(@Validated @RequestBody TCrmPosition dto) { if (crmPositionService.isExit(dto)) { return R.fail("职位管理名称已存在"); } return R.ok(crmPositionService.save(dto)); } /** * 修改职位管理 */ @Log(title = "职位管理信息-修改职位管理", businessType = BusinessType.UPDATE) @ApiOperation(value = "修改职位管理") @PostMapping(value = "/update") public R<Boolean> update(@Validated @RequestBody TCrmPosition dto) { if (crmPositionService.isExit(dto)) { return R.fail("职位管理名称已存在"); } return R.ok(crmPositionService.updateById(dto)); } /** * 查看职位管理详情 */ @ApiOperation(value = "查看职位管理详情") @GetMapping(value = "/getDetailById") public R<TCrmPosition> getDetailById(@RequestParam String id) { return R.ok(crmPositionService.getById(id)); } /** * 删除职位管理 */ @Log(title = "职位管理信息-删除职位管理", businessType = BusinessType.DELETE) @ApiOperation(value = "删除职位管理") @DeleteMapping(value = "/deleteById") public R<Boolean> deleteById(@RequestParam String id) { long count = crmBranchSalaryService.count(Wrappers.lambdaQuery(TCrmBranchSalary.class).eq(TCrmBranchSalary::getPositionId, id)); if (count>0) { return R.fail("该职位下有职位薪资配置,无法删除"); } return R.ok(crmPositionService.removeById(id)); } /** * 批量删除职位管理 */ @Log(title = "职位管理信息-删除职位管理", businessType = BusinessType.DELETE) @ApiOperation(value = "批量删除职位管理") @DeleteMapping(value = "/deleteByIds") public R<Boolean> deleteByIds(@RequestBody List<String> ids) { List<TCrmBranchSalary> items = crmBranchSalaryService.list(Wrappers.lambdaQuery(TCrmBranchSalary.class).in(TCrmBranchSalary::getPositionId, ids)); for (String id : ids) { if (items.stream().anyMatch(t -> t.getPositionId().equals(id))) { TCrmPosition itemPosition = crmPositionService.getById(id); return R.fail("该职位["+itemPosition.getPositionName()+"]下有职位薪资配置,无法删除"); } } return R.ok(crmPositionService.removeByIds(ids)); } } ruoyi-system/src/main/java/com/ruoyi/system/mapper/TCrmPositionMapper.java
@@ -1,7 +1,12 @@ package com.ruoyi.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.model.TCrmPosition; import com.ruoyi.system.query.TCrmPositionQuery; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> @@ -13,4 +18,11 @@ */ public interface TCrmPositionMapper extends BaseMapper<TCrmPosition> { /** * 分页查询 * @param query 查询参数 * @param pageInfo 分页参数 * @return */ List<TCrmPosition> pageList(@Param("query") TCrmPositionQuery query, @Param("pageInfo")PageInfo<TCrmPosition> pageInfo); } ruoyi-system/src/main/java/com/ruoyi/system/query/TCrmPositionQuery.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.system.query; import com.ruoyi.common.core.domain.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value="职位管理查询参数TCrmPositionQuery") public class TCrmPositionQuery extends BasePage { @ApiModelProperty(value = "职位") private String positionName; } ruoyi-system/src/main/java/com/ruoyi/system/service/TCrmPositionService.java
@@ -1,7 +1,9 @@ package com.ruoyi.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.model.TCrmPosition; import com.ruoyi.system.query.TCrmPositionQuery; /** * <p> @@ -12,5 +14,17 @@ * @since 2025-08-20 */ public interface TCrmPositionService extends IService<TCrmPosition> { /** * 判断分类是否存在 * @param dto * @return */ boolean isExit(TCrmPosition dto); /** * 职位管理分页列表 * @param query * @return */ PageInfo<TCrmPosition> pageList(TCrmPositionQuery query); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmPositionServiceImpl.java
@@ -1,10 +1,19 @@ package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.mapper.TCrmPositionMapper; import com.ruoyi.system.model.TCrmPosition; import com.ruoyi.system.model.TCrmPosition; import com.ruoyi.system.query.TCrmPositionQuery; import com.ruoyi.system.service.TCrmPositionService; import com.ruoyi.system.vo.TSysLiveVO; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; /** * <p> @@ -17,4 +26,22 @@ @Service public class TCrmPositionServiceImpl extends ServiceImpl<TCrmPositionMapper, TCrmPosition> implements TCrmPositionService { @Override public boolean isExit(TCrmPosition dto) { if(StringUtils.isNotEmpty(dto.getId())){ // 修改 return this.count(Wrappers.lambdaQuery(TCrmPosition.class).ne(TCrmPosition::getId, dto.getId()).eq(TCrmPosition::getPositionName, dto.getPositionName())) > 0; }else { // 新增 return this.count(Wrappers.lambdaQuery(TCrmPosition.class).eq(TCrmPosition::getPositionName, dto.getPositionName())) > 0; } } @Override public PageInfo<TCrmPosition> pageList(TCrmPositionQuery query) { PageInfo<TCrmPosition> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TCrmPosition> list = this.baseMapper.pageList(query,pageInfo); pageInfo.setRecords(list); return pageInfo; } } ruoyi-system/src/main/resources/mapper/system/TCrmPositionMapper.xml
@@ -17,5 +17,17 @@ <sql id="Base_Column_List"> id, position_name, create_time, update_time, create_by, update_by, disabled </sql> <select id="pageList" resultType="com.ruoyi.system.model.TCrmPosition"> SELECT <include refid="Base_Column_List"/> FROM t_crm_position <where> <if test="query.positionName != null and query.positionName != ''"> AND position_name LIKE concat('%',#{query.positionName},'%') </if> AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> ORDER BY create_time DESC </select> </mapper>