From 32e66eedbff4d44067081c61937f06d8a5d3a6eb Mon Sep 17 00:00:00 2001 From: zhuxinru Date: Thu, 8 Jan 2026 17:27:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=83=A8=E9=97=A8=E8=B4=9F=E8=B4=A3?= =?UTF-8?q?=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2026-01-08/simulation_role_permission.sql | 6 +- 1-sql/2026-01-08/sys_dept_user.sql | 11 ++++ .../req/project/SimulationPerformance.java | 3 + .../system/controller/SysDeptController.java | 44 +++++++++++++ .../com/sdm/system/dao/SysDeptUserMapper.java | 8 +++ .../entity/SimulationRolePermission.java | 4 +- .../sdm/system/model/entity/SysDeptUser.java | 56 +++++++++++++++++ .../system/model/req/dept/DeptOperateReq.java | 21 +++++++ .../system/model/req/dept/DeptQueryReq.java | 13 ++++ .../system/service/ISysDeptUserService.java | 20 ++++++ .../service/impl/ISysDeptUserServiceImpl.java | 63 +++++++++++++++++++ .../SimulationRolePermissionServiceImpl.java | 5 +- .../model/entity/SimulationPerformance.java | 3 + 13 files changed, 250 insertions(+), 7 deletions(-) create mode 100644 1-sql/2026-01-08/sys_dept_user.sql create mode 100644 system/src/main/java/com/sdm/system/controller/SysDeptController.java create mode 100644 system/src/main/java/com/sdm/system/dao/SysDeptUserMapper.java create mode 100644 system/src/main/java/com/sdm/system/model/entity/SysDeptUser.java create mode 100644 system/src/main/java/com/sdm/system/model/req/dept/DeptOperateReq.java create mode 100644 system/src/main/java/com/sdm/system/model/req/dept/DeptQueryReq.java create mode 100644 system/src/main/java/com/sdm/system/service/ISysDeptUserService.java create mode 100644 system/src/main/java/com/sdm/system/service/impl/ISysDeptUserServiceImpl.java diff --git a/1-sql/2026-01-08/simulation_role_permission.sql b/1-sql/2026-01-08/simulation_role_permission.sql index 6fb679d4..0b3e92ca 100644 --- a/1-sql/2026-01-08/simulation_role_permission.sql +++ b/1-sql/2026-01-08/simulation_role_permission.sql @@ -1,9 +1,9 @@ CREATE TABLE `simulation_role_permission` ( - `id` bigint NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `roleId` bigint NOT NULL COMMENT '角色id(对应CID)', `permissionCode` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '菜单权限编码', `tenantId` bigint NOT NULL DEFAULT '0' COMMENT '租户ID', - `creator` bigint NOT NULL DEFAULT '0' COMMENT '模版创建者ID', - `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '模版创建时间', + `creator` bigint NOT NULL DEFAULT '0' COMMENT '创建者ID', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色菜单权限表'; \ No newline at end of file diff --git a/1-sql/2026-01-08/sys_dept_user.sql b/1-sql/2026-01-08/sys_dept_user.sql new file mode 100644 index 00000000..a65348b5 --- /dev/null +++ b/1-sql/2026-01-08/sys_dept_user.sql @@ -0,0 +1,11 @@ + +CREATE TABLE `sys_dept_user` ( + `id` int NOT NULL AUTO_INCREMENT, + `deptId` bigint NOT NULL COMMENT '部门ID', + `deptName` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '部门名称', + `userId` bigint NOT NULL COMMENT '部门负责人用户ID', + `tenantId` bigint NOT NULL DEFAULT '0' COMMENT '租户ID', + `creator` bigint NOT NULL DEFAULT '0' COMMENT '创建者ID', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='部门负责人表'; \ No newline at end of file diff --git a/common/src/main/java/com/sdm/common/entity/req/project/SimulationPerformance.java b/common/src/main/java/com/sdm/common/entity/req/project/SimulationPerformance.java index 1ba21422..b08b2166 100644 --- a/common/src/main/java/com/sdm/common/entity/req/project/SimulationPerformance.java +++ b/common/src/main/java/com/sdm/common/entity/req/project/SimulationPerformance.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -99,6 +101,7 @@ public class SimulationPerformance implements Serializable { private String tenantId; @TableField("createTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; @TableField("creator") diff --git a/system/src/main/java/com/sdm/system/controller/SysDeptController.java b/system/src/main/java/com/sdm/system/controller/SysDeptController.java new file mode 100644 index 00000000..5a029be6 --- /dev/null +++ b/system/src/main/java/com/sdm/system/controller/SysDeptController.java @@ -0,0 +1,44 @@ +package com.sdm.system.controller; + +import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.resp.PageDataResp; +import com.sdm.system.model.entity.SysDeptUser; +import com.sdm.system.model.req.dept.DeptOperateReq; +import com.sdm.system.model.req.dept.DeptQueryReq; +import com.sdm.system.service.ISysDeptUserService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Tag(name = "部门管理", description = "部门相关接口") +@RestController +@RequestMapping("/dept") +public class SysDeptController { + + @Autowired + private ISysDeptUserService deptUserService; + + @Operation(summary = "新增部门及负责人", description = "新增部门及负责人") + @PostMapping("/addDept") + public SdmResponse addDept(@RequestBody DeptOperateReq deptAddReq) { + return deptUserService.addDept(deptAddReq); + } + + @Operation(summary = "新增部门及负责人", description = "新增部门及负责人") + @PostMapping("/editDept") + public SdmResponse editDept(@RequestBody DeptOperateReq deptAddReq) { + return deptUserService.editDept(deptAddReq); + } + + @Operation(summary = "查询部门列表", description = "查询部门列表") + @GetMapping("/listDept") + public SdmResponse>> listDept(@ParameterObject DeptQueryReq req) { + return deptUserService.listDept(req); + } + + +} \ No newline at end of file diff --git a/system/src/main/java/com/sdm/system/dao/SysDeptUserMapper.java b/system/src/main/java/com/sdm/system/dao/SysDeptUserMapper.java new file mode 100644 index 00000000..782c80e7 --- /dev/null +++ b/system/src/main/java/com/sdm/system/dao/SysDeptUserMapper.java @@ -0,0 +1,8 @@ +package com.sdm.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.sdm.system.model.entity.SysDeptUser; + +public interface SysDeptUserMapper extends BaseMapper { + +} diff --git a/system/src/main/java/com/sdm/system/model/entity/SimulationRolePermission.java b/system/src/main/java/com/sdm/system/model/entity/SimulationRolePermission.java index c0974153..dbd1ac9d 100644 --- a/system/src/main/java/com/sdm/system/model/entity/SimulationRolePermission.java +++ b/system/src/main/java/com/sdm/system/model/entity/SimulationRolePermission.java @@ -24,9 +24,9 @@ public class SimulationRolePermission implements Serializable { private static final long serialVersionUID = 1L; - @Schema(description = "表单ID") + @Schema(description = "主键ID") @TableId(value = "id", type = IdType.AUTO) - private Long id; + private Integer id; @Schema(description = "角色id(对应CID") @TableField("roleId") diff --git a/system/src/main/java/com/sdm/system/model/entity/SysDeptUser.java b/system/src/main/java/com/sdm/system/model/entity/SysDeptUser.java new file mode 100644 index 00000000..d65434c1 --- /dev/null +++ b/system/src/main/java/com/sdm/system/model/entity/SysDeptUser.java @@ -0,0 +1,56 @@ +package com.sdm.system.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("sys_dept_user") +@ApiModel(value="SysDeptUser对象", description="部门负责人表") +public class SysDeptUser implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @Schema(description = "部门ID") + @TableField("deptId") + private Long deptId; + + @Schema(description = "部门名称") + @TableField("deptName") + private String deptName; + + @Schema(description = "部门负责人用户ID") + @TableField("userId") + private Long userId; + + @Schema(description = "所属租户ID") + @TableField("tenantId") + private Long tenantId; + + @Schema(description = "创建人") + @TableField("creator") + private Long creator; + + @Schema(description = "创建时间") + @TableField("createTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + +} diff --git a/system/src/main/java/com/sdm/system/model/req/dept/DeptOperateReq.java b/system/src/main/java/com/sdm/system/model/req/dept/DeptOperateReq.java new file mode 100644 index 00000000..898e7555 --- /dev/null +++ b/system/src/main/java/com/sdm/system/model/req/dept/DeptOperateReq.java @@ -0,0 +1,21 @@ +package com.sdm.system.model.req.dept; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class DeptOperateReq { + + @Schema(description = "部门名称") + private String deptName; + + @Schema(description = "部门负责人用户ID") + private Long userId; + + @Schema(description = "部门ID") + private Long deptId; + + @Schema(description = "主键") + private Integer id; + +} diff --git a/system/src/main/java/com/sdm/system/model/req/dept/DeptQueryReq.java b/system/src/main/java/com/sdm/system/model/req/dept/DeptQueryReq.java new file mode 100644 index 00000000..debeb8c3 --- /dev/null +++ b/system/src/main/java/com/sdm/system/model/req/dept/DeptQueryReq.java @@ -0,0 +1,13 @@ +package com.sdm.system.model.req.dept; + +import com.sdm.system.model.req.BaseReq; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class DeptQueryReq extends BaseReq { + + @Schema(description = "部门名称") + private String deptName; + +} diff --git a/system/src/main/java/com/sdm/system/service/ISysDeptUserService.java b/system/src/main/java/com/sdm/system/service/ISysDeptUserService.java new file mode 100644 index 00000000..9610ae5e --- /dev/null +++ b/system/src/main/java/com/sdm/system/service/ISysDeptUserService.java @@ -0,0 +1,20 @@ +package com.sdm.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.resp.PageDataResp; +import com.sdm.system.model.entity.SysDeptUser; +import com.sdm.system.model.req.dept.DeptOperateReq; +import com.sdm.system.model.req.dept.DeptQueryReq; + +import java.util.List; + +public interface ISysDeptUserService extends IService { + + SdmResponse addDept(DeptOperateReq deptAddReq); + + SdmResponse editDept(DeptOperateReq deptAddReq); + + SdmResponse>> listDept(DeptQueryReq req); + +} diff --git a/system/src/main/java/com/sdm/system/service/impl/ISysDeptUserServiceImpl.java b/system/src/main/java/com/sdm/system/service/impl/ISysDeptUserServiceImpl.java new file mode 100644 index 00000000..522ea701 --- /dev/null +++ b/system/src/main/java/com/sdm/system/service/impl/ISysDeptUserServiceImpl.java @@ -0,0 +1,63 @@ +package com.sdm.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.sdm.common.common.SdmResponse; +import com.sdm.common.common.ThreadLocalContext; +import com.sdm.common.entity.resp.PageDataResp; +import com.sdm.common.utils.PageUtils; +import com.sdm.system.dao.SysDeptUserMapper; +import com.sdm.system.model.entity.SysDeptUser; +import com.sdm.system.model.req.dept.DeptOperateReq; +import com.sdm.system.model.req.dept.DeptQueryReq; +import com.sdm.system.service.ISysDeptUserService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ISysDeptUserServiceImpl extends ServiceImpl implements ISysDeptUserService { + + @Override + public SdmResponse addDept(DeptOperateReq deptAddReq) { + SysDeptUser deptUser = new SysDeptUser(); + deptUser.setDeptName(deptAddReq.getDeptName()); + deptUser.setUserId(deptAddReq.getUserId()); + deptUser.setTenantId(ThreadLocalContext.getTenantId()); + deptUser.setCreator(ThreadLocalContext.getUserId()); + deptUser.setDeptId(IdWorker.getId(deptUser)); + this.save(deptUser); + return SdmResponse.success(); + } + + @Override + public SdmResponse editDept(DeptOperateReq deptEditReq) { + SysDeptUser deptUser = this.getById(deptEditReq.getId()); + if (deptUser != null) { + if (StringUtils.isNotBlank(deptEditReq.getDeptName())) { + deptUser.setDeptName(deptEditReq.getDeptName()); + } + if (deptEditReq.getUserId() != null) { + deptUser.setUserId(deptEditReq.getUserId()); + } + this.updateById(deptUser); + } + return SdmResponse.success(); + } + + @Override + public SdmResponse>> listDept(DeptQueryReq req) { + PageHelper.startPage(req.getCurrent(), req.getSize()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (StringUtils.isNotEmpty(req.getDeptName())) { + queryWrapper.like(SysDeptUser::getDeptName, req.getDeptName()); + } + List sysDeptUsers = this.list(queryWrapper); + PageInfo page = new PageInfo<>(sysDeptUsers); + return PageUtils.getJsonObjectSdmResponse(sysDeptUsers, page); + } +} diff --git a/system/src/main/java/com/sdm/system/service/impl/SimulationRolePermissionServiceImpl.java b/system/src/main/java/com/sdm/system/service/impl/SimulationRolePermissionServiceImpl.java index 37f500a2..8b7ff8f4 100644 --- a/system/src/main/java/com/sdm/system/service/impl/SimulationRolePermissionServiceImpl.java +++ b/system/src/main/java/com/sdm/system/service/impl/SimulationRolePermissionServiceImpl.java @@ -42,7 +42,8 @@ public class SimulationRolePermissionServiceImpl extends ServiceImpl userPermissionList = new ArrayList<>(); for (CIDRoleResp cidRoleResp : cidRoleRespList) { List rolePermissionList = getRolePermissions(cidRoleResp.getRoleId()).getData(); - if (!CollectionUtils.isNotEmpty(rolePermissionList)) { + if (CollectionUtils.isNotEmpty(rolePermissionList)) { userPermissionList.addAll(rolePermissionList); } } diff --git a/task/src/main/java/com/sdm/task/model/entity/SimulationPerformance.java b/task/src/main/java/com/sdm/task/model/entity/SimulationPerformance.java index a3c338b3..a1cfbe09 100644 --- a/task/src/main/java/com/sdm/task/model/entity/SimulationPerformance.java +++ b/task/src/main/java/com/sdm/task/model/entity/SimulationPerformance.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -99,6 +101,7 @@ public class SimulationPerformance implements Serializable { private String tenantId; @TableField("createTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; @TableField("creator")