@@ -0,0 +1,131 @@ | |||
package com.ruoyi.system.controller; | |||
import java.util.List; | |||
import java.util.Arrays; | |||
import java.util.concurrent.TimeUnit; | |||
import cn.dev33.satoken.annotation.SaIgnore; | |||
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.system.domain.vo.ZsWorkInfoVo; | |||
import com.ruoyi.system.domain.bo.ZsWorkInfoBo; | |||
import com.ruoyi.system.service.IZsWorkInfoService; | |||
import com.ruoyi.common.core.page.TableDataInfo; | |||
/** | |||
* 职位管理 | |||
* | |||
* @author wq | |||
* @date 2025-06-24 | |||
*/ | |||
@Validated | |||
@RequiredArgsConstructor | |||
@RestController | |||
@RequestMapping("/system/workInfo") | |||
public class ZsWorkInfoController extends BaseController { | |||
private final IZsWorkInfoService iZsWorkInfoService; | |||
/** | |||
* 查询职位管理列表 | |||
*/ | |||
@SaCheckPermission("system:workInfo:list") | |||
@GetMapping("/list") | |||
public TableDataInfo<ZsWorkInfoVo> list(ZsWorkInfoBo bo, PageQuery pageQuery) { | |||
return iZsWorkInfoService.queryPageList(bo, pageQuery); | |||
} | |||
/** | |||
* 查询职位管理列表 无鉴权 | |||
*/ | |||
@SaIgnore | |||
@GetMapping("/noVerifyList") | |||
public TableDataInfo<ZsWorkInfoVo> noVerifyList(ZsWorkInfoBo bo, PageQuery pageQuery) { | |||
return iZsWorkInfoService.queryPageList(bo, pageQuery); | |||
} | |||
/** | |||
* 导出职位管理列表 | |||
*/ | |||
@SaCheckPermission("system:workInfo:export") | |||
@Log(title = "职位管理", businessType = BusinessType.EXPORT) | |||
@PostMapping("/export") | |||
public void export(ZsWorkInfoBo bo, HttpServletResponse response) { | |||
List<ZsWorkInfoVo> list = iZsWorkInfoService.queryList(bo); | |||
ExcelUtil.exportExcel(list, "职位管理", ZsWorkInfoVo.class, response); | |||
} | |||
/** | |||
* 获取职位管理详细信息 | |||
* | |||
* @param id 主键 | |||
*/ | |||
@SaCheckPermission("system:workInfo:query") | |||
@GetMapping("/{id}") | |||
public R<ZsWorkInfoVo> getInfo(@NotNull(message = "主键不能为空") | |||
@PathVariable Long id) { | |||
return R.ok(iZsWorkInfoService.queryById(id)); | |||
} | |||
/** | |||
* 获取职位管理详细信息 无鉴权 | |||
* | |||
* @param id 主键 | |||
*/ | |||
@GetMapping("/noVerify/{id}") | |||
@SaIgnore | |||
public R<ZsWorkInfoVo> getInfonoVerify(@NotNull(message = "主键不能为空") | |||
@PathVariable Long id) { | |||
return R.ok(iZsWorkInfoService.queryById(id)); | |||
} | |||
/** | |||
* 新增职位管理 | |||
*/ | |||
@SaCheckPermission("system:workInfo:add") | |||
@Log(title = "职位管理", businessType = BusinessType.INSERT) | |||
@RepeatSubmit() | |||
@PostMapping() | |||
public R<Void> add(@Validated(AddGroup.class) @RequestBody ZsWorkInfoBo bo) { | |||
return toAjax(iZsWorkInfoService.insertByBo(bo)); | |||
} | |||
/** | |||
* 修改职位管理 | |||
*/ | |||
@SaCheckPermission("system:workInfo:edit") | |||
@Log(title = "职位管理", businessType = BusinessType.UPDATE) | |||
@RepeatSubmit() | |||
@PutMapping() | |||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ZsWorkInfoBo bo) { | |||
return toAjax(iZsWorkInfoService.updateByBo(bo)); | |||
} | |||
/** | |||
* 删除职位管理 | |||
* | |||
* @param ids 主键串 | |||
*/ | |||
@SaCheckPermission("system:workInfo:remove") | |||
@Log(title = "职位管理", businessType = BusinessType.DELETE) | |||
@DeleteMapping("/{ids}") | |||
public R<Void> remove(@NotEmpty(message = "主键不能为空") | |||
@PathVariable Long[] ids) { | |||
return toAjax(iZsWorkInfoService.deleteWithValidByIds(Arrays.asList(ids), true)); | |||
} | |||
} |
@@ -0,0 +1,71 @@ | |||
package com.ruoyi.system.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 com.ruoyi.common.core.domain.BaseEntity; | |||
/** | |||
* 职位管理对象 zs_work_info | |||
* | |||
* @author wq | |||
* @date 2025-06-24 | |||
*/ | |||
@Data | |||
@EqualsAndHashCode(callSuper = true) | |||
@TableName("zs_work_info") | |||
public class ZsWorkInfo extends BaseEntity { | |||
private static final long serialVersionUID=1L; | |||
/** | |||
* 主键ID | |||
*/ | |||
@TableId(value = "id") | |||
private Long id; | |||
/** | |||
* 职位名称 | |||
*/ | |||
private String name; | |||
/** | |||
* 工作地点 | |||
*/ | |||
private Long location; | |||
/** | |||
* 所属站点 | |||
*/ | |||
private Long webSite; | |||
/** | |||
* 岗位职责 | |||
*/ | |||
private String jobResponsibilities; | |||
/** | |||
* 任职要求 | |||
*/ | |||
private String jobRequirements; | |||
/** | |||
* 工作时间 | |||
*/ | |||
private String workTime; | |||
/** | |||
* 福利待遇 | |||
*/ | |||
private String benefits; | |||
/** | |||
* 邮箱投递地址 | |||
*/ | |||
private String email; | |||
/** | |||
* 外部平台链接或名称 | |||
*/ | |||
private String externalPlatform; | |||
/** | |||
* 是否启用 | |||
*/ | |||
private String isDisabled; | |||
} |
@@ -0,0 +1,87 @@ | |||
package com.ruoyi.system.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 com.ruoyi.common.core.domain.BaseEntity; | |||
/** | |||
* 职位管理业务对象 zs_work_info | |||
* | |||
* @author wq | |||
* @date 2025-06-24 | |||
*/ | |||
@Data | |||
@EqualsAndHashCode(callSuper = true) | |||
public class ZsWorkInfoBo extends BaseEntity { | |||
/** | |||
* 主键ID | |||
*/ | |||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) | |||
private Long id; | |||
/** | |||
* 职位名称 | |||
*/ | |||
@NotBlank(message = "职位名称不能为空", groups = { AddGroup.class, EditGroup.class }) | |||
private String name; | |||
/** | |||
* 工作地点 | |||
*/ | |||
@NotNull(message = "工作地点不能为空", groups = { AddGroup.class, EditGroup.class }) | |||
private Long location; | |||
/** | |||
* 所属站点 | |||
*/ | |||
@NotNull(message = "所属站点不能为空", groups = { AddGroup.class, EditGroup.class }) | |||
private Long webSite; | |||
/** | |||
* 岗位职责 | |||
*/ | |||
private String jobResponsibilities; | |||
/** | |||
* 任职要求 | |||
*/ | |||
private String jobRequirements; | |||
/** | |||
* 工作时间 | |||
*/ | |||
@NotBlank(message = "工作时间不能为空", groups = { AddGroup.class, EditGroup.class }) | |||
private String workTime; | |||
/** | |||
* 福利待遇 | |||
*/ | |||
@NotBlank(message = "福利待遇不能为空", groups = { AddGroup.class, EditGroup.class }) | |||
private String benefits; | |||
/** | |||
* 邮箱投递地址 | |||
*/ | |||
@NotBlank(message = "邮箱投递地址不能为空", groups = { AddGroup.class, EditGroup.class }) | |||
private String email; | |||
/** | |||
* 外部平台链接或名称 | |||
*/ | |||
private String externalPlatform; | |||
/** | |||
* 是否启用 | |||
*/ | |||
private String isDisabled; | |||
} |
@@ -0,0 +1,118 @@ | |||
package com.ruoyi.system.domain.vo; | |||
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; | |||
/** | |||
* 职位管理视图对象 zs_work_info | |||
* | |||
* @author wq | |||
* @date 2025-06-24 | |||
*/ | |||
@Data | |||
@ExcelIgnoreUnannotated | |||
public class ZsWorkInfoVo { | |||
private static final long serialVersionUID = 1L; | |||
/** | |||
* 主键ID | |||
*/ | |||
@ExcelProperty(value = "主键ID") | |||
private Long id; | |||
/** | |||
* 职位名称 | |||
*/ | |||
@ExcelProperty(value = "职位名称") | |||
private String name; | |||
/** | |||
* 工作地点 | |||
*/ | |||
@ExcelProperty(value = "工作地点", converter = ExcelDictConvert.class) | |||
@ExcelDictFormat(dictType = "zs_operation_location") | |||
private Long location; | |||
/** | |||
* 所属站点 | |||
*/ | |||
@ExcelProperty(value = "所属站点", converter = ExcelDictConvert.class) | |||
@ExcelDictFormat(dictType = "zs_operation_web_site") | |||
private Long webSite; | |||
/** | |||
* 岗位职责 | |||
*/ | |||
@ExcelProperty(value = "岗位职责") | |||
private String jobResponsibilities; | |||
/** | |||
* 任职要求 | |||
*/ | |||
@ExcelProperty(value = "任职要求") | |||
private String jobRequirements; | |||
/** | |||
* 工作时间 | |||
*/ | |||
@ExcelProperty(value = "工作时间") | |||
private String workTime; | |||
/** | |||
* 福利待遇 | |||
*/ | |||
@ExcelProperty(value = "福利待遇") | |||
private String benefits; | |||
/** | |||
* 邮箱投递地址 | |||
*/ | |||
@ExcelProperty(value = "邮箱投递地址") | |||
private String email; | |||
/** | |||
* 外部平台链接或名称 | |||
*/ | |||
@ExcelProperty(value = "外部平台链接或名称") | |||
private String externalPlatform; | |||
/** | |||
* 是否启用 | |||
*/ | |||
@ExcelProperty(value = "是否启用", converter = ExcelDictConvert.class) | |||
@ExcelDictFormat(dictType = "zs_is_disabled") | |||
private String isDisabled; | |||
/** | |||
* 创建时间 | |||
*/ | |||
@ExcelProperty(value = "创建时间") | |||
private Date createTime; | |||
/** | |||
* 更新时间 | |||
*/ | |||
@ExcelProperty(value = "更新时间") | |||
private Date updateTime; | |||
/** | |||
* 创建人 | |||
*/ | |||
@ExcelProperty(value = "创建人") | |||
private String createBy; | |||
/** | |||
* 更新人 | |||
*/ | |||
@ExcelProperty(value = "更新人") | |||
private String updateBy; | |||
} |
@@ -0,0 +1,15 @@ | |||
package com.ruoyi.system.mapper; | |||
import com.ruoyi.system.domain.ZsWorkInfo; | |||
import com.ruoyi.system.domain.vo.ZsWorkInfoVo; | |||
import com.ruoyi.common.core.mapper.BaseMapperPlus; | |||
/** | |||
* 职位管理Mapper接口 | |||
* | |||
* @author wq | |||
* @date 2025-06-24 | |||
*/ | |||
public interface ZsWorkInfoMapper extends BaseMapperPlus<ZsWorkInfoMapper, ZsWorkInfo, ZsWorkInfoVo> { | |||
} |
@@ -0,0 +1,49 @@ | |||
package com.ruoyi.system.service; | |||
import com.ruoyi.system.domain.ZsWorkInfo; | |||
import com.ruoyi.system.domain.vo.ZsWorkInfoVo; | |||
import com.ruoyi.system.domain.bo.ZsWorkInfoBo; | |||
import com.ruoyi.common.core.page.TableDataInfo; | |||
import com.ruoyi.common.core.domain.PageQuery; | |||
import java.util.Collection; | |||
import java.util.List; | |||
/** | |||
* 职位管理Service接口 | |||
* | |||
* @author wq | |||
* @date 2025-06-24 | |||
*/ | |||
public interface IZsWorkInfoService { | |||
/** | |||
* 查询职位管理 | |||
*/ | |||
ZsWorkInfoVo queryById(Long id); | |||
/** | |||
* 查询职位管理列表 | |||
*/ | |||
TableDataInfo<ZsWorkInfoVo> queryPageList(ZsWorkInfoBo bo, PageQuery pageQuery); | |||
/** | |||
* 查询职位管理列表 | |||
*/ | |||
List<ZsWorkInfoVo> queryList(ZsWorkInfoBo bo); | |||
/** | |||
* 新增职位管理 | |||
*/ | |||
Boolean insertByBo(ZsWorkInfoBo bo); | |||
/** | |||
* 修改职位管理 | |||
*/ | |||
Boolean updateByBo(ZsWorkInfoBo bo); | |||
/** | |||
* 校验并批量删除职位管理信息 | |||
*/ | |||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); | |||
} |
@@ -0,0 +1,112 @@ | |||
package com.ruoyi.system.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.system.domain.bo.ZsWorkInfoBo; | |||
import com.ruoyi.system.domain.vo.ZsWorkInfoVo; | |||
import com.ruoyi.system.domain.ZsWorkInfo; | |||
import com.ruoyi.system.mapper.ZsWorkInfoMapper; | |||
import com.ruoyi.system.service.IZsWorkInfoService; | |||
import java.util.List; | |||
import java.util.Map; | |||
import java.util.Collection; | |||
/** | |||
* 职位管理Service业务层处理 | |||
* | |||
* @author wq | |||
* @date 2025-06-24 | |||
*/ | |||
@RequiredArgsConstructor | |||
@Service | |||
public class ZsWorkInfoServiceImpl implements IZsWorkInfoService { | |||
private final ZsWorkInfoMapper baseMapper; | |||
/** | |||
* 查询职位管理 | |||
*/ | |||
@Override | |||
public ZsWorkInfoVo queryById(Long id){ | |||
return baseMapper.selectVoById(id); | |||
} | |||
/** | |||
* 查询职位管理列表 | |||
*/ | |||
@Override | |||
public TableDataInfo<ZsWorkInfoVo> queryPageList(ZsWorkInfoBo bo, PageQuery pageQuery) { | |||
LambdaQueryWrapper<ZsWorkInfo> lqw = buildQueryWrapper(bo); | |||
Page<ZsWorkInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); | |||
return TableDataInfo.build(result); | |||
} | |||
/** | |||
* 查询职位管理列表 | |||
*/ | |||
@Override | |||
public List<ZsWorkInfoVo> queryList(ZsWorkInfoBo bo) { | |||
LambdaQueryWrapper<ZsWorkInfo> lqw = buildQueryWrapper(bo); | |||
return baseMapper.selectVoList(lqw); | |||
} | |||
private LambdaQueryWrapper<ZsWorkInfo> buildQueryWrapper(ZsWorkInfoBo bo) { | |||
Map<String, Object> params = bo.getParams(); | |||
LambdaQueryWrapper<ZsWorkInfo> lqw = Wrappers.lambdaQuery(); | |||
lqw.like(StringUtils.isNotBlank(bo.getName()), ZsWorkInfo::getName, bo.getName()); | |||
lqw.eq(bo.getLocation() != null, ZsWorkInfo::getLocation, bo.getLocation()); | |||
lqw.eq(bo.getWebSite() != null, ZsWorkInfo::getWebSite, bo.getWebSite()); | |||
lqw.eq(StringUtils.isNotBlank(bo.getIsDisabled()), ZsWorkInfo::getIsDisabled, bo.getIsDisabled()); | |||
return lqw; | |||
} | |||
/** | |||
* 新增职位管理 | |||
*/ | |||
@Override | |||
public Boolean insertByBo(ZsWorkInfoBo bo) { | |||
ZsWorkInfo add = BeanUtil.toBean(bo, ZsWorkInfo.class); | |||
validEntityBeforeSave(add); | |||
boolean flag = baseMapper.insert(add) > 0; | |||
if (flag) { | |||
bo.setId(add.getId()); | |||
} | |||
return flag; | |||
} | |||
/** | |||
* 修改职位管理 | |||
*/ | |||
@Override | |||
public Boolean updateByBo(ZsWorkInfoBo bo) { | |||
ZsWorkInfo update = BeanUtil.toBean(bo, ZsWorkInfo.class); | |||
validEntityBeforeSave(update); | |||
return baseMapper.updateById(update) > 0; | |||
} | |||
/** | |||
* 保存前的数据校验 | |||
*/ | |||
private void validEntityBeforeSave(ZsWorkInfo entity){ | |||
//TODO 做一些数据校验,如唯一约束 | |||
} | |||
/** | |||
* 批量删除职位管理 | |||
*/ | |||
@Override | |||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | |||
if(isValid){ | |||
//TODO 做一些业务上的校验,判断是否需要校验 | |||
} | |||
return baseMapper.deleteBatchIds(ids) > 0; | |||
} | |||
} |
@@ -0,0 +1,26 @@ | |||
<?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.ruoyi.system.mapper.ZsWorkInfoMapper"> | |||
<resultMap type="com.ruoyi.system.domain.ZsWorkInfo" id="ZsWorkInfoResult"> | |||
<result property="id" column="id"/> | |||
<result property="name" column="name"/> | |||
<result property="location" column="location"/> | |||
<result property="webSite" column="web_site"/> | |||
<result property="jobResponsibilities" column="job_responsibilities"/> | |||
<result property="jobRequirements" column="job_requirements"/> | |||
<result property="workTime" column="work_time"/> | |||
<result property="benefits" column="benefits"/> | |||
<result property="email" column="email"/> | |||
<result property="externalPlatform" column="external_platform"/> | |||
<result property="isDisabled" column="is_disabled"/> | |||
<result property="createTime" column="create_time"/> | |||
<result property="updateTime" column="update_time"/> | |||
<result property="createBy" column="create_by"/> | |||
<result property="updateBy" column="update_by"/> | |||
</resultMap> | |||
</mapper> |