diff --git a/kernel-s-sys/sys-business-hr/pom.xml b/kernel-s-sys/sys-business-hr/pom.xml
index 5d8973be5..92e2ed27b 100644
--- a/kernel-s-sys/sys-business-hr/pom.xml
+++ b/kernel-s-sys/sys-business-hr/pom.xml
@@ -46,6 +46,13 @@
spring-boot-starter-web
+
+
+ cn.stylefeng.roses
+ validator-api-table-unique
+ ${roses.version}
+
+
diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/controller/CommonOrgController.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/controller/CommonOrgController.java
index 308719d1b..6c3612e22 100644
--- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/controller/CommonOrgController.java
+++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/controller/CommonOrgController.java
@@ -33,7 +33,7 @@ public class CommonOrgController {
* @author fengshuonan
* @since 2023/6/11 10:31
*/
- @GetResource(name = "分页查询", path = "/common/org/tree")
+ @GetResource(name = "通用获取组织机构树", path = "/common/org/tree")
public ResponseData> commonOrgTree(HrOrganizationRequest hrOrganizationRequest) {
return new SuccessResponseData<>(hrOrganizationService.commonOrgTree(hrOrganizationRequest));
}
diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/controller/HrOrganizationController.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/controller/HrOrganizationController.java
new file mode 100644
index 000000000..addd5fe76
--- /dev/null
+++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/controller/HrOrganizationController.java
@@ -0,0 +1,89 @@
+package cn.stylefeng.roses.kernel.sys.modular.org.controller;
+
+import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
+import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
+import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
+import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
+import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
+import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
+import cn.stylefeng.roses.kernel.sys.modular.org.entity.HrOrganization;
+import cn.stylefeng.roses.kernel.sys.modular.org.pojo.request.HrOrganizationRequest;
+import cn.stylefeng.roses.kernel.sys.modular.org.service.HrOrganizationService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 组织机构信息控制器
+ *
+ * @author fengshuonan
+ * @date 2023/06/10 21:23
+ */
+@RestController
+@ApiResource(name = "组织机构信息")
+public class HrOrganizationController {
+
+ @Resource
+ private HrOrganizationService hrOrganizationService;
+
+ /**
+ * 添加组织机构
+ *
+ * @author fengshuonan
+ * @date 2023/06/10 21:23
+ */
+ @PostResource(name = "添加组织机构", path = "/hrOrganization/add")
+ public ResponseData add(@RequestBody @Validated(HrOrganizationRequest.add.class) HrOrganizationRequest hrOrganizationRequest) {
+ hrOrganizationService.add(hrOrganizationRequest);
+ return new SuccessResponseData<>();
+ }
+
+ /**
+ * 删除组织机构
+ *
+ * @author fengshuonan
+ * @date 2023/06/10 21:23
+ */
+ @PostResource(name = "删除组织机构", path = "/hrOrganization/delete")
+ public ResponseData> delete(@RequestBody @Validated(HrOrganizationRequest.delete.class) HrOrganizationRequest hrOrganizationRequest) {
+ hrOrganizationService.del(hrOrganizationRequest);
+ return new SuccessResponseData<>();
+ }
+
+ /**
+ * 编辑组织机构
+ *
+ * @author fengshuonan
+ * @date 2023/06/10 21:23
+ */
+ @PostResource(name = "编辑组织机构", path = "/hrOrganization/edit")
+ public ResponseData> edit(@RequestBody @Validated(HrOrganizationRequest.edit.class) HrOrganizationRequest hrOrganizationRequest) {
+ hrOrganizationService.edit(hrOrganizationRequest);
+ return new SuccessResponseData<>();
+ }
+
+ /**
+ * 查看组织机构详情
+ *
+ * @author fengshuonan
+ * @date 2023/06/10 21:23
+ */
+ @GetResource(name = "查看组织机构详情", path = "/hrOrganization/detail")
+ public ResponseData detail(@Validated(HrOrganizationRequest.detail.class) HrOrganizationRequest hrOrganizationRequest) {
+ return new SuccessResponseData<>(hrOrganizationService.detail(hrOrganizationRequest));
+ }
+
+ /**
+ * 获取列表(带分页)
+ *
+ * @author fengshuonan
+ * @date 2023/06/10 21:23
+ */
+ @GetResource(name = "分页查询-组织机构", path = "/hrOrganization/page")
+ public ResponseData> page(HrOrganizationRequest hrOrganizationRequest) {
+ return new SuccessResponseData<>(hrOrganizationService.findPage(hrOrganizationRequest));
+ }
+
+}
diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/pojo/request/HrOrganizationRequest.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/pojo/request/HrOrganizationRequest.java
index 495dfa20c..2052d8a76 100644
--- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/pojo/request/HrOrganizationRequest.java
+++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/pojo/request/HrOrganizationRequest.java
@@ -2,6 +2,7 @@ package cn.stylefeng.roses.kernel.sys.modular.org.pojo.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
+import cn.stylefeng.roses.kernel.validator.api.validators.unique.TableUniqueValue;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -22,21 +23,20 @@ public class HrOrganizationRequest extends BaseRequest {
/**
* 主键
*/
- @NotNull(message = "主键不能为空", groups = {edit.class, delete.class})
+ @NotNull(message = "主键不能为空", groups = {edit.class, delete.class, detail.class})
@ChineseDescription("主键")
private Long orgId;
/**
* 父id,一级节点父id是0
*/
- @NotNull(message = "父id,一级节点父id是0不能为空", groups = {add.class, edit.class})
- @ChineseDescription("父id,一级节点父id是0")
+ @NotNull(message = "父id,一级节点父id是-1不能为空", groups = {add.class, edit.class})
+ @ChineseDescription("父id,一级节点父id是-1")
private Long orgParentId;
/**
* 父ids
*/
- @NotBlank(message = "父ids不能为空", groups = {add.class, edit.class})
@ChineseDescription("父ids")
private String orgPids;
@@ -58,6 +58,13 @@ public class HrOrganizationRequest extends BaseRequest {
*/
@NotBlank(message = "组织编码不能为空", groups = {add.class, edit.class})
@ChineseDescription("组织编码")
+ @TableUniqueValue(
+ message = "组织编码存在重复",
+ groups = {add.class, edit.class},
+ tableName = "hr_organization",
+ columnName = "org_code",
+ idFieldName = "org_id",
+ excludeLogicDeleteItems = true)
private String orgCode;
/**
@@ -70,14 +77,15 @@ public class HrOrganizationRequest extends BaseRequest {
/**
* 状态:1-启用,2-禁用
*/
- @NotNull(message = "状态:1-启用,2-禁用不能为空", groups = {add.class, edit.class})
@ChineseDescription("状态:1-启用,2-禁用")
+ @NotNull(message = "状态不能为空", groups = {add.class, edit.class})
private Integer statusFlag;
/**
* 组织机构类型:1-公司,2-部门
*/
@ChineseDescription("组织机构类型:1-公司,2-部门")
+ @NotNull(message = "组织机构类型不能为空", groups = {add.class, edit.class})
private Integer orgType;
/**
@@ -110,29 +118,4 @@ public class HrOrganizationRequest extends BaseRequest {
@ChineseDescription("对接外部主数据的父级机构id")
private String masterOrgParentId;
- /**
- * 拓展字段
- */
- @ChineseDescription("拓展字段")
- private String expandField;
-
- /**
- * 乐观锁
- */
- @ChineseDescription("乐观锁")
- private Long versionFlag;
-
- /**
- * 删除标记:Y-已删除,N-未删除
- */
- @NotBlank(message = "删除标记:Y-已删除,N-未删除不能为空", groups = {add.class, edit.class})
- @ChineseDescription("删除标记:Y-已删除,N-未删除")
- private String delFlag;
-
- /**
- * 租户号
- */
- @ChineseDescription("租户号")
- private Long tenantId;
-
}