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)); | |||||
} | |||||
} |
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; | |||||
} |
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; | |||||
} |
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; | |||||
} |
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> { | |||||
} |
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); | |||||
} |
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; | |||||
} | |||||
} |
<?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> |