feat(wms): 添加岗位和岗位职责管理功能

- 创建岗位实体类 WmsPost 和岗位职责实体类 WmsPostDuty
- 实现岗位和岗位职责的业务对象 BO 和视图对象 VO
- 开发岗位和岗位职责的服务接口及实现类
- 添加岗位和岗位职责的控制器提供 REST API 接口
- 配置 MyBatis Plus 的 Mapper 接口和 XML 映射文件
- 实现岗位和岗位职责的增删改查、分页查询和导出功能
- 添加数据验证、日志记录和防止重复提交功能
This commit is contained in:
2026-06-15 13:33:23 +08:00
parent a2844ec54a
commit 3db1651efd
16 changed files with 962 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.klp.common.core.domain.TreeEntity;
/**
* 岗位对象 wms_post
*
* @author klp
* @date 2026-06-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_post")
public class WmsPost extends TreeEntity<WmsPost> {
private static final long serialVersionUID=1L;
/**
*
*/
@TableId(value = "post_id")
private Long postId;
/**
* 岗位名称
*/
private String postName;
/**
* 岗位类型(PRODUCTION=生产岗,QUALITY=质检岗,MAINTENANCE=维修岗,TECHNICAL=技术岗,MANAGEMENT=管理岗)
*/
private String postType;
/**
* 岗位级别(JUNIOR=初级,MIDDLE=中级,SENIOR=高级,LEAD=班长,MANAGER=经理)
*/
private String postLevel;
/**
* 所属产线ID
*/
private Long lineId;
/**
* 状态(0停用 1启用)
*/
private Long status;
/**
* 显示顺序
*/
private Long postSort;
/**
* 删除标记(0正常 1删除)
*/
@TableLogic
private Long delFlag;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,57 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 岗位职责对象 wms_post_duty
*
* @author klp
* @date 2026-06-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_post_duty")
public class WmsPostDuty extends BaseEntity {
private static final long serialVersionUID=1L;
/**
*
*/
@TableId(value = "duty_id")
private Long dutyId;
/**
* 岗位ID
*/
private Long postId;
/**
* 职责名称
*/
private String dutyName;
/**
* 职责内容
*/
private String dutyContent;
/**
* 职责类型(MAIN=主要职责,SECONDARY=次要职责,SAFETY=安全职责,QUALITY=质量职责)
*/
private String dutyType;
/**
* 排序
*/
private Long sortOrder;
/**
* 删除标记(0正常 1删除)
*/
@TableLogic
private Long delFlag;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,61 @@
package com.klp.domain.bo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import com.klp.common.core.domain.TreeEntity;
/**
* 岗位业务对象 wms_post
*
* @author klp
* @date 2026-06-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsPostBo extends TreeEntity<WmsPostBo> {
/**
*
*/
private Long postId;
/**
* 岗位名称
*/
private String postName;
/**
* 岗位类型(PRODUCTION=生产岗,QUALITY=质检岗,MAINTENANCE=维修岗,TECHNICAL=技术岗,MANAGEMENT=管理岗)
*/
private String postType;
/**
* 岗位级别(JUNIOR=初级,MIDDLE=中级,SENIOR=高级,LEAD=班长,MANAGER=经理)
*/
private String postLevel;
/**
* 所属产线ID
*/
private Long lineId;
/**
* 状态(0停用 1启用)
*/
private Long status;
/**
* 显示顺序
*/
private Long postSort;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,56 @@
package com.klp.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
/**
* 岗位职责业务对象 wms_post_duty
*
* @author klp
* @date 2026-06-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsPostDutyBo extends BaseEntity {
/**
*
*/
private Long dutyId;
/**
* 岗位ID
*/
private Long postId;
/**
* 职责名称
*/
private String dutyName;
/**
* 职责内容
*/
private String dutyContent;
/**
* 职责类型(MAIN=主要职责,SECONDARY=次要职责,SAFETY=安全职责,QUALITY=质量职责)
*/
private String dutyType;
/**
* 排序
*/
private Long sortOrder;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,65 @@
package com.klp.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 岗位职责视图对象 wms_post_duty
*
* @author klp
* @date 2026-06-15
*/
@Data
@ExcelIgnoreUnannotated
public class WmsPostDutyVo {
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long dutyId;
/**
* 岗位ID
*/
@ExcelProperty(value = "岗位ID")
private Long postId;
/**
* 职责名称
*/
@ExcelProperty(value = "职责名称")
private String dutyName;
/**
* 职责内容
*/
@ExcelProperty(value = "职责内容")
private String dutyContent;
/**
* 职责类型(MAIN=主要职责,SECONDARY=次要职责,SAFETY=安全职责,QUALITY=质量职责)
*/
@ExcelProperty(value = "职责类型(MAIN=主要职责,SECONDARY=次要职责,SAFETY=安全职责,QUALITY=质量职责)")
private String dutyType;
/**
* 排序
*/
@ExcelProperty(value = "排序")
private Long sortOrder;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,78 @@
package com.klp.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 岗位视图对象 wms_post
*
* @author klp
* @date 2026-06-15
*/
@Data
@ExcelIgnoreUnannotated
public class WmsPostVo {
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long postId;
/**
* 父岗位ID0=根节点)
*/
@ExcelProperty(value = "父岗位ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0==根节点")
private Long parentId;
/**
* 岗位名称
*/
@ExcelProperty(value = "岗位名称")
private String postName;
/**
* 岗位类型(PRODUCTION=生产岗,QUALITY=质检岗,MAINTENANCE=维修岗,TECHNICAL=技术岗,MANAGEMENT=管理岗)
*/
@ExcelProperty(value = "岗位类型(PRODUCTION=生产岗,QUALITY=质检岗,MAINTENANCE=维修岗,TECHNICAL=技术岗,MANAGEMENT=管理岗)")
private String postType;
/**
* 岗位级别(JUNIOR=初级,MIDDLE=中级,SENIOR=高级,LEAD=班长,MANAGER=经理)
*/
@ExcelProperty(value = "岗位级别(JUNIOR=初级,MIDDLE=中级,SENIOR=高级,LEAD=班长,MANAGER=经理)")
private String postLevel;
/**
* 所属产线ID
*/
@ExcelProperty(value = "所属产线ID")
private Long lineId;
/**
* 状态(0停用 1启用)
*/
@ExcelProperty(value = "状态(0停用 1启用)")
private Long status;
/**
* 显示顺序
*/
@ExcelProperty(value = "显示顺序")
private Long postSort;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}