parent
05219738c8
commit
a0a9772963
9 changed files with 614 additions and 0 deletions
@ -0,0 +1,93 @@ |
||||
|
||||
package org.springblade.desk.process.controller; |
||||
|
||||
import cn.hutool.core.bean.BeanUtil; |
||||
import cn.hutool.core.collection.CollUtil; |
||||
import cn.hutool.core.util.StrUtil; |
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
||||
import io.swagger.v3.oas.annotations.Operation; |
||||
import io.swagger.v3.oas.annotations.Parameter; |
||||
import io.swagger.v3.oas.annotations.tags.Tag; |
||||
import jakarta.servlet.http.HttpServletResponse; |
||||
import jakarta.validation.Valid; |
||||
import lombok.AllArgsConstructor; |
||||
import org.springblade.core.boot.ctrl.BladeController; |
||||
import org.springblade.core.excel.util.ExcelUtil; |
||||
import org.springblade.core.mp.support.Condition; |
||||
import org.springblade.core.mp.support.Query; |
||||
import org.springblade.core.secure.BladeUser; |
||||
import org.springblade.core.secure.annotation.IsAdmin; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springblade.core.tool.utils.DateUtil; |
||||
import org.springblade.core.tool.utils.Func; |
||||
import org.springblade.desk.process.excel.FmProjectApprovalConfigExcel; |
||||
import org.springblade.desk.process.pojo.entity.FmProjectApprovalConfigEntity; |
||||
import org.springblade.desk.process.pojo.vo.FmProjectApprovalConfigVO; |
||||
import org.springblade.desk.process.service.IFmProjectApprovalConfigService; |
||||
import org.springblade.system.pojo.entity.User; |
||||
import org.springframework.web.bind.annotation.*; |
||||
|
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* 项目审批配置 控制器 |
||||
* |
||||
* @author BladeX |
||||
* @since 2026-01-27 |
||||
*/ |
||||
@RestController |
||||
@AllArgsConstructor |
||||
@RequestMapping("/fmProjectApprovalConfig") |
||||
@Tag(name = "项目审批配置", description = "项目审批配置接口") |
||||
public class FmProjectApprovalConfigController extends BladeController { |
||||
|
||||
private final IFmProjectApprovalConfigService fmProjectApprovalConfigService; |
||||
|
||||
/** |
||||
* 项目审批配置 |
||||
*/ |
||||
@GetMapping("/list") |
||||
@ApiOperationSupport(order = 3) |
||||
@Operation(summary = "列表", description = "") |
||||
public R<List<FmProjectApprovalConfigEntity>> page() { |
||||
return R.data(fmProjectApprovalConfigService.getList()); |
||||
} |
||||
|
||||
/** |
||||
* 根据节点编码查询审批用户列表 |
||||
*/ |
||||
@GetMapping("/getUsersByNodeCode") |
||||
@ApiOperationSupport(order = 11) |
||||
@Operation(summary = "查询审批用户", description = "传入节点编码,返回该节点配置角色下的所有用户") |
||||
public R<List<User>> getUsersByNodeCode(@Parameter(description = "节点编码", required = true) @RequestParam String nodeCode) { |
||||
List<User> userList = fmProjectApprovalConfigService.getUsersByNodeCode(nodeCode); |
||||
return R.data(userList); |
||||
} |
||||
|
||||
// 批量修改
|
||||
|
||||
@PostMapping("/batchUpdate") |
||||
@ApiOperationSupport(order = 12) |
||||
@Operation(summary = "批量修改", description = "传入项目审批配置列表,根据id修改") |
||||
public R<Boolean> batchUpdate(@RequestBody List<FmProjectApprovalConfigEntity> fmProjectApprovalConfigList) { |
||||
if (CollUtil.isEmpty(fmProjectApprovalConfigList)){ |
||||
return R.fail("参数错误"); |
||||
} |
||||
if (FmProjectApprovalConfigEntity.NODE_CODES.size() != fmProjectApprovalConfigList.size()){ |
||||
return R.fail("参数错误"); |
||||
} |
||||
for (FmProjectApprovalConfigEntity fmProjectApprovalConfig : fmProjectApprovalConfigList) { |
||||
if (!FmProjectApprovalConfigEntity.NODE_CODES.contains(fmProjectApprovalConfig.getNodeCode())){ |
||||
return R.fail("参数错误"); |
||||
} |
||||
if (StrUtil.isEmpty(fmProjectApprovalConfig.getRoleId())){ |
||||
throw new RuntimeException("请配置角色"); |
||||
} |
||||
} |
||||
return R.status(fmProjectApprovalConfigService.updateBatchById(fmProjectApprovalConfigList)); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,78 @@ |
||||
|
||||
package org.springblade.desk.process.excel; |
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty; |
||||
import com.alibaba.excel.annotation.write.style.ColumnWidth; |
||||
import com.alibaba.excel.annotation.write.style.ContentRowHeight; |
||||
import com.alibaba.excel.annotation.write.style.HeadRowHeight; |
||||
import lombok.Data; |
||||
|
||||
import java.io.Serial; |
||||
import java.io.Serializable; |
||||
import java.math.BigDecimal; |
||||
|
||||
/** |
||||
* 项目审批配置 Excel实体类 |
||||
* |
||||
* @author BladeX |
||||
* @since 2026-01-27 |
||||
*/ |
||||
@Data |
||||
@ColumnWidth(25) |
||||
@HeadRowHeight(20) |
||||
@ContentRowHeight(18) |
||||
public class FmProjectApprovalConfigExcel implements Serializable { |
||||
|
||||
@Serial |
||||
private static final long serialVersionUID = 1L; |
||||
|
||||
/** |
||||
* 主键ID |
||||
*/ |
||||
@ColumnWidth(20) |
||||
@ExcelProperty("主键ID") |
||||
private BigDecimal id; |
||||
|
||||
/** |
||||
* 节点编码 |
||||
*/ |
||||
@ColumnWidth(20) |
||||
@ExcelProperty("节点编码") |
||||
private String nodeCode; |
||||
|
||||
/** |
||||
* 节点名称 |
||||
*/ |
||||
@ColumnWidth(20) |
||||
@ExcelProperty("节点名称") |
||||
private String nodeName; |
||||
|
||||
/** |
||||
* 角色ID |
||||
*/ |
||||
@ColumnWidth(20) |
||||
@ExcelProperty("角色ID") |
||||
private String roleId; |
||||
|
||||
/** |
||||
* 角色名称 |
||||
*/ |
||||
@ColumnWidth(20) |
||||
@ExcelProperty("角色名称") |
||||
private String roleName; |
||||
|
||||
/** |
||||
* 备注说明 |
||||
*/ |
||||
@ColumnWidth(20) |
||||
@ExcelProperty("备注说明") |
||||
private String remark; |
||||
|
||||
/** |
||||
* 状态 |
||||
*/ |
||||
@ColumnWidth(20) |
||||
@ExcelProperty("状态") |
||||
private Integer status; |
||||
|
||||
} |
||||
@ -0,0 +1,40 @@ |
||||
|
||||
package org.springblade.desk.process.mapper; |
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
import org.apache.ibatis.annotations.Param; |
||||
import org.springblade.desk.process.excel.FmProjectApprovalConfigExcel; |
||||
import org.springblade.desk.process.pojo.entity.FmProjectApprovalConfigEntity; |
||||
import org.springblade.desk.process.pojo.vo.FmProjectApprovalConfigVO; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 项目审批配置 Mapper 接口 |
||||
* |
||||
* @author BladeX |
||||
* @since 2026-01-27 |
||||
*/ |
||||
public interface FmProjectApprovalConfigMapper extends BaseMapper<FmProjectApprovalConfigEntity> { |
||||
|
||||
/** |
||||
* 自定义分页 |
||||
* |
||||
* @param page 分页参数 |
||||
* @param fmProjectApprovalConfig 查询参数 |
||||
* @return List<FmProjectApprovalConfigVO> |
||||
*/ |
||||
List<FmProjectApprovalConfigVO> selectFmProjectApprovalConfigPage(IPage page, FmProjectApprovalConfigVO fmProjectApprovalConfig); |
||||
|
||||
|
||||
/** |
||||
* 获取导出数据 |
||||
* |
||||
* @param queryWrapper 查询条件 |
||||
* @return List<FmProjectApprovalConfigExcel> |
||||
*/ |
||||
List<FmProjectApprovalConfigExcel> exportFmProjectApprovalConfig(@Param("ew") Wrapper<FmProjectApprovalConfigEntity> queryWrapper); |
||||
|
||||
} |
||||
@ -0,0 +1,44 @@ |
||||
<?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="org.springblade.desk.process.mapper.FmProjectApprovalConfigMapper"> |
||||
|
||||
<!-- 通用查询映射结果 --> |
||||
<resultMap id="configResultMap" type="org.springblade.desk.process.pojo.entity.FmProjectApprovalConfigEntity"> |
||||
<id column="ID" property="id"/> |
||||
<result column="NODE_CODE" property="nodeCode"/> |
||||
<result column="NODE_NAME" property="nodeName"/> |
||||
<result column="ROLE_ID" property="roleId"/> |
||||
<result column="ROLE_NAME" property="roleName"/> |
||||
<result column="REMARK" property="remark"/> |
||||
<result column="STATUS" property="status"/> |
||||
<result column="CREATE_USER" property="createUser"/> |
||||
<result column="CREATE_DEPT" property="createDept"/> |
||||
<result column="CREATE_TIME" property="createTime"/> |
||||
<result column="UPDATE_USER" property="updateUser"/> |
||||
<result column="UPDATE_TIME" property="updateTime"/> |
||||
<result column="IS_DELETED" property="isDeleted"/> |
||||
</resultMap> |
||||
|
||||
<select id="selectFmProjectApprovalConfigPage" resultMap="configResultMap"> |
||||
select * from FM_PROJECT_APPROVAL_CONFIG |
||||
<where> |
||||
IS_DELETED = 0 |
||||
<if test="fmProjectApprovalConfig.nodeCode != null and fmProjectApprovalConfig.nodeCode != ''"> |
||||
and NODE_CODE = #{fmProjectApprovalConfig.nodeCode} |
||||
</if> |
||||
<if test="fmProjectApprovalConfig.nodeName != null and fmProjectApprovalConfig.nodeName != ''"> |
||||
and NODE_NAME LIKE CONCAT('%', CONCAT(#{fmProjectApprovalConfig.nodeName}, '%')) |
||||
</if> |
||||
<if test="fmProjectApprovalConfig.status != null"> |
||||
and STATUS = #{fmProjectApprovalConfig.status} |
||||
</if> |
||||
</where> |
||||
order by CREATE_TIME desc |
||||
</select> |
||||
|
||||
|
||||
<select id="exportFmProjectApprovalConfig" resultType="org.springblade.desk.process.excel.FmProjectApprovalConfigExcel"> |
||||
SELECT * FROM FM_PROJECT_APPROVAL_CONFIG ${ew.customSqlSegment} |
||||
</select> |
||||
|
||||
</mapper> |
||||
@ -0,0 +1,94 @@ |
||||
|
||||
package org.springblade.desk.process.pojo.entity; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField; |
||||
import com.baomidou.mybatisplus.annotation.TableName; |
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
import org.springblade.core.mp.base.BaseEntity; |
||||
|
||||
import java.io.Serial; |
||||
import java.util.Arrays; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 项目审批配置 实体类 |
||||
* |
||||
* @author BladeX |
||||
* @since 2026-01-27 |
||||
*/ |
||||
@Data |
||||
@TableName("FM_PROJECT_APPROVAL_CONFIG") |
||||
@Schema(description = "FmProjectApprovalConfig对象") |
||||
@EqualsAndHashCode(callSuper = true) |
||||
public class FmProjectApprovalConfigEntity extends BaseEntity { |
||||
|
||||
@Serial |
||||
private static final long serialVersionUID = 1L; |
||||
|
||||
/** |
||||
* 节点编码 |
||||
*/ |
||||
@Schema(description = "节点编码:PROJECT_APPROVAL (立项 - 审批),EXECUTE_CHECK(执行-核查), CHECK_APPROVE(核查-核准)") |
||||
private String nodeCode; |
||||
|
||||
/** |
||||
* 节点名称 |
||||
*/ |
||||
@Schema(description = "节点名称") |
||||
private String nodeName; |
||||
|
||||
/** |
||||
* 角色ID(多个角色用逗号分隔) |
||||
*/ |
||||
@Schema(description = "角色ID(多个角色用逗号分隔)") |
||||
private String roleId; |
||||
|
||||
/** |
||||
* 角色名称(冗余字段,便于展示) |
||||
*/ |
||||
@Schema(description = "角色名称(冗余字段,便于展示)") |
||||
private String roleName; |
||||
|
||||
/** |
||||
* 备注说明 |
||||
*/ |
||||
@Schema(description = "备注说明") |
||||
private String remark; |
||||
|
||||
/** |
||||
* 状态:0-禁用,1-启用 |
||||
*/ |
||||
@Schema(description = "状态:0-禁用,1-启用") |
||||
private Integer status; |
||||
|
||||
private Integer sortOrde; |
||||
|
||||
// ==================== 节点编码常量 ====================
|
||||
/** |
||||
* 立项 - 审批 |
||||
* */ |
||||
public static final String NODE_PROJECT_APPROVAL = "PROJECT_APPROVAL"; |
||||
/** |
||||
* 节点编码:执行-核查 |
||||
*/ |
||||
public static final String NODE_EXECUTE_CHECK = "EXECUTE_CHECK"; |
||||
/** |
||||
* 节点编码:核查-核准 |
||||
*/ |
||||
public static final String NODE_CHECK_APPROVE = "CHECK_APPROVE"; |
||||
|
||||
public static final List<String> NODE_CODES = Arrays.asList(NODE_PROJECT_APPROVAL, NODE_EXECUTE_CHECK, NODE_CHECK_APPROVE); |
||||
|
||||
/** |
||||
* 状态:启用 |
||||
*/ |
||||
public static final Integer STATUS_ENABLED = 1; |
||||
|
||||
/** |
||||
* 状态:禁用 |
||||
*/ |
||||
public static final Integer STATUS_DISABLED = 0; |
||||
|
||||
} |
||||
@ -0,0 +1,22 @@ |
||||
|
||||
package org.springblade.desk.process.pojo.vo; |
||||
|
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
import org.springblade.desk.process.pojo.entity.FmProjectApprovalConfigEntity; |
||||
|
||||
import java.io.Serial; |
||||
|
||||
/** |
||||
* 项目审批配置 视图实体类 |
||||
* |
||||
* @author BladeX |
||||
* @since 2026-01-27 |
||||
*/ |
||||
@Data |
||||
@EqualsAndHashCode(callSuper = true) |
||||
public class FmProjectApprovalConfigVO extends FmProjectApprovalConfigEntity { |
||||
@Serial |
||||
private static final long serialVersionUID = 1L; |
||||
|
||||
} |
||||
@ -0,0 +1,57 @@ |
||||
|
||||
package org.springblade.desk.process.service; |
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
import org.springblade.core.mp.base.BaseService; |
||||
import org.springblade.desk.process.excel.FmProjectApprovalConfigExcel; |
||||
import org.springblade.desk.process.pojo.entity.FmProjectApprovalConfigEntity; |
||||
import org.springblade.desk.process.pojo.vo.FmProjectApprovalConfigVO; |
||||
import org.springblade.system.pojo.entity.User; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 项目审批配置 服务类 |
||||
* |
||||
* @author BladeX |
||||
* @since 2026-01-27 |
||||
*/ |
||||
public interface IFmProjectApprovalConfigService extends BaseService<FmProjectApprovalConfigEntity> { |
||||
/** |
||||
* 自定义分页 |
||||
* |
||||
* @param page 分页参数 |
||||
* @param fmProjectApprovalConfig 查询参数 |
||||
* @return IPage<FmProjectApprovalConfigVO> |
||||
*/ |
||||
IPage<FmProjectApprovalConfigVO> selectFmProjectApprovalConfigPage(IPage<FmProjectApprovalConfigVO> page, FmProjectApprovalConfigVO fmProjectApprovalConfig); |
||||
|
||||
|
||||
/** |
||||
* 导出数据 |
||||
* |
||||
* @param queryWrapper 查询条件 |
||||
* @return List<FmProjectApprovalConfigExcel> |
||||
*/ |
||||
List<FmProjectApprovalConfigExcel> exportFmProjectApprovalConfig(Wrapper<FmProjectApprovalConfigEntity> queryWrapper); |
||||
|
||||
/** |
||||
* 根据节点编码获取配置 |
||||
* |
||||
* @param nodeCode 节点编码 |
||||
* @return 审批配置 |
||||
*/ |
||||
FmProjectApprovalConfigEntity getConfigByNodeCode(String nodeCode); |
||||
|
||||
/** |
||||
* 根据节点编码和角色查询用户列表 |
||||
* |
||||
* @param nodeCode 节点编码 |
||||
* @return 用户列表 |
||||
*/ |
||||
List<User> getUsersByNodeCode(String nodeCode); |
||||
|
||||
List<FmProjectApprovalConfigEntity> getList(); |
||||
|
||||
} |
||||
@ -0,0 +1,104 @@ |
||||
|
||||
package org.springblade.desk.process.service.impl; |
||||
|
||||
import cn.hutool.core.util.StrUtil; |
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
||||
import lombok.AllArgsConstructor; |
||||
import org.springblade.core.mp.base.BaseServiceImpl; |
||||
import org.springblade.desk.process.excel.FmProjectApprovalConfigExcel; |
||||
import org.springblade.desk.process.mapper.FmProjectApprovalConfigMapper; |
||||
import org.springblade.desk.process.pojo.entity.FmProjectApprovalConfigEntity; |
||||
import org.springblade.desk.process.pojo.vo.FmProjectApprovalConfigVO; |
||||
import org.springblade.desk.process.service.IFmProjectApprovalConfigService; |
||||
import org.springblade.system.feign.IUserClient; |
||||
import org.springblade.system.pojo.entity.User; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.Arrays; |
||||
import java.util.Collection; |
||||
import java.util.List; |
||||
import java.util.stream.Collectors; |
||||
|
||||
/** |
||||
* 项目审批配置 服务实现类 |
||||
* |
||||
* @author BladeX |
||||
* @since 2026-01-27 |
||||
*/ |
||||
@Service |
||||
@AllArgsConstructor |
||||
public class FmProjectApprovalConfigServiceImpl extends BaseServiceImpl<FmProjectApprovalConfigMapper, FmProjectApprovalConfigEntity> implements IFmProjectApprovalConfigService { |
||||
|
||||
private final IUserClient userClient; |
||||
|
||||
@Override |
||||
public IPage<FmProjectApprovalConfigVO> selectFmProjectApprovalConfigPage(IPage<FmProjectApprovalConfigVO> page, FmProjectApprovalConfigVO fmProjectApprovalConfig) { |
||||
return page.setRecords(baseMapper.selectFmProjectApprovalConfigPage(page, fmProjectApprovalConfig)); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public List<FmProjectApprovalConfigExcel> exportFmProjectApprovalConfig(Wrapper<FmProjectApprovalConfigEntity> queryWrapper) { |
||||
List<FmProjectApprovalConfigExcel> list = baseMapper.exportFmProjectApprovalConfig(queryWrapper); |
||||
return list; |
||||
} |
||||
|
||||
@Override |
||||
public FmProjectApprovalConfigEntity getConfigByNodeCode(String nodeCode) { |
||||
if (nodeCode == null || nodeCode.trim().isEmpty()) { |
||||
return null; |
||||
} |
||||
return this.lambdaQuery() |
||||
.eq(FmProjectApprovalConfigEntity::getNodeCode, nodeCode) |
||||
.eq(FmProjectApprovalConfigEntity::getStatus, FmProjectApprovalConfigEntity.STATUS_ENABLED) |
||||
.one(); |
||||
} |
||||
|
||||
@Override |
||||
public List<User> getUsersByNodeCode(String nodeCode) { |
||||
// 获取节点配置
|
||||
FmProjectApprovalConfigEntity config = getConfigByNodeCode(nodeCode); |
||||
if (config == null) { |
||||
return new ArrayList<>(); |
||||
} |
||||
|
||||
// 获取角色ID列表
|
||||
if (StrUtil.isEmpty(config.getRoleId())) { |
||||
return new ArrayList<>(); |
||||
} |
||||
List<String> roleIdList = getRoleIdList(config.getRoleId()); |
||||
|
||||
return roleIdList.stream() |
||||
.map(userClient::userByRole) |
||||
.flatMap(Collection::stream) |
||||
.collect(Collectors.collectingAndThen( |
||||
Collectors.toMap( |
||||
User::getId, |
||||
user -> user, |
||||
(existing, replacement) -> existing |
||||
), |
||||
map -> new ArrayList<>(map.values()) |
||||
)); |
||||
} |
||||
|
||||
public List<String> getRoleIdList(String roleId) { |
||||
if (roleId == null || roleId.trim().isEmpty()) { |
||||
return List.of(); |
||||
} |
||||
return Arrays.stream(roleId.split(",")) |
||||
.map(String::trim) |
||||
.filter(s -> !s.isEmpty()) |
||||
.toList(); |
||||
} |
||||
|
||||
@Override |
||||
public List<FmProjectApprovalConfigEntity> getList() { |
||||
return list(Wrappers.lambdaQuery(FmProjectApprovalConfigEntity.class) |
||||
.eq(FmProjectApprovalConfigEntity::getStatus, FmProjectApprovalConfigEntity.STATUS_ENABLED) |
||||
.orderByDesc(FmProjectApprovalConfigEntity::getSortOrde)); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,82 @@ |
||||
-- 项目审批配置表 |
||||
CREATE TABLE FM_PROJECT_APPROVAL_CONFIG ( |
||||
ID NUMBER(20) NOT NULL, |
||||
NODE_CODE VARCHAR2(50) NOT NULL, -- 节点编码:EXECUTE_CHECK(执行-核查), CHECK_APPROVE(核查-核准) |
||||
NODE_NAME VARCHAR2(100) NOT NULL, -- 节点名称:执行核查、核查核准 |
||||
ROLE_ID VARCHAR2(200) NOT NULL, -- 角色ID(多个角色用逗号分隔) |
||||
ROLE_NAME VARCHAR2(500), -- 角色名称(冗余字段,便于展示) |
||||
REMARK VARCHAR2(500), -- 备注说明 |
||||
CREATE_USER NUMBER(20), -- 创建人 |
||||
CREATE_DEPT NUMBER(20), -- 创建部门 |
||||
CREATE_TIME DATE DEFAULT SYSDATE, -- 创建时间 |
||||
UPDATE_USER NUMBER(20), -- 更新人 |
||||
UPDATE_TIME DATE DEFAULT SYSDATE, -- 更新时间 |
||||
STATUS NUMBER(2) DEFAULT 1, -- 状态:0-禁用,1-启用 |
||||
IS_DELETED NUMBER(2) DEFAULT 0, -- 是否删除:0-未删除,1-已删除 |
||||
CONSTRAINT PK_FM_PROJECT_APPROVAL_CONFIG PRIMARY KEY (ID) |
||||
); |
||||
|
||||
-- 添加注释 |
||||
COMMENT ON TABLE FM_PROJECT_APPROVAL_CONFIG IS '项目审批配置表'; |
||||
COMMENT ON COLUMN FM_PROJECT_APPROVAL_CONFIG.ID IS '主键ID'; |
||||
COMMENT ON COLUMN FM_PROJECT_APPROVAL_CONFIG.NODE_CODE IS '节点编码:EXECUTE_CHECK(执行-核查), CHECK_APPROVE(核查-核准)'; |
||||
COMMENT ON COLUMN FM_PROJECT_APPROVAL_CONFIG.NODE_NAME IS '节点名称'; |
||||
COMMENT ON COLUMN FM_PROJECT_APPROVAL_CONFIG.ROLE_ID IS '角色ID(多个角色用逗号分隔)'; |
||||
COMMENT ON COLUMN FM_PROJECT_APPROVAL_CONFIG.ROLE_NAME IS '角色名称(冗余字段,便于展示)'; |
||||
COMMENT ON COLUMN FM_PROJECT_APPROVAL_CONFIG.REMARK IS '备注说明'; |
||||
COMMENT ON COLUMN FM_PROJECT_APPROVAL_CONFIG.CREATE_USER IS '创建人'; |
||||
COMMENT ON COLUMN FM_PROJECT_APPROVAL_CONFIG.CREATE_DEPT IS '创建部门'; |
||||
COMMENT ON COLUMN FM_PROJECT_APPROVAL_CONFIG.CREATE_TIME IS '创建时间'; |
||||
COMMENT ON COLUMN FM_PROJECT_APPROVAL_CONFIG.UPDATE_USER IS '更新人'; |
||||
COMMENT ON COLUMN FM_PROJECT_APPROVAL_CONFIG.UPDATE_TIME IS '更新时间'; |
||||
COMMENT ON COLUMN FM_PROJECT_APPROVAL_CONFIG.STATUS IS '状态:0-禁用,1-启用'; |
||||
COMMENT ON COLUMN FM_PROJECT_APPROVAL_CONFIG.IS_DELETED IS '是否删除:0-未删除,1-已删除'; |
||||
|
||||
-- 创建索引 |
||||
CREATE INDEX IDX_CONFIG_NODE_CODE ON FM_PROJECT_APPROVAL_CONFIG(NODE_CODE); |
||||
CREATE INDEX IDX_CONFIG_STATUS ON FM_PROJECT_APPROVAL_CONFIG(STATUS); |
||||
|
||||
-- 插入默认配置数据 |
||||
INSERT INTO FM_PROJECT_APPROVAL_CONFIG (ID, NODE_CODE, NODE_NAME, ROLE_ID, ROLE_NAME, REMARK, STATUS) |
||||
VALUES (1, 'PROJECT_APPROVAL', '立项-审批', '', '', '里程碑执行完成后,进入核查环节的审批角色配置', 1); |
||||
|
||||
INSERT INTO FM_PROJECT_APPROVAL_CONFIG (ID, NODE_CODE, NODE_NAME, ROLE_ID, ROLE_NAME, REMARK, STATUS) |
||||
VALUES (1, 'EXECUTE_CHECK', '执行-核查', '', '', '里程碑执行完成后,进入核查环节的审批角色配置', 1); |
||||
|
||||
INSERT INTO FM_PROJECT_APPROVAL_CONFIG (ID, NODE_CODE, NODE_NAME, ROLE_ID, ROLE_NAME, REMARK, STATUS) |
||||
VALUES (2, 'CHECK_APPROVE', '核查-核准', '', '', '里程碑核查通过后,进入核准环节的审批角色配置', 1); |
||||
|
||||
COMMIT; |
||||
|
||||
|
||||
|
||||
ALTER TABLE JONHON_MES.FM_PROJECT_MILESTONE ADD NEXT_APPROVER_ID VARCHAR2(100) NULL; |
||||
COMMENT ON COLUMN JONHON_MES.FM_PROJECT_MILESTONE.NEXT_APPROVER_ID IS '下一节点审批人ID'; |
||||
ALTER TABLE JONHON_MES.FM_PROJECT_MILESTONE ADD NEXT_APPROVER_NAME VARCHAR2(100) NULL; |
||||
COMMENT ON COLUMN JONHON_MES.FM_PROJECT_MILESTONE.NEXT_APPROVER_NAME IS '下一节点审批人名称'; |
||||
|
||||
|
||||
|
||||
-- 1. 添加排序字段 SORT_ORDER |
||||
ALTER TABLE FM_PROJECT_APPROVAL_CONFIG ADD (SORT_ORDER NUMBER(20)); |
||||
|
||||
-- 添加字段注释 |
||||
COMMENT ON COLUMN FM_PROJECT_APPROVAL_CONFIG.SORT_ORDER IS '排序字段'; |
||||
|
||||
-- 2. 将现有数据的排序字段更新为与 ID 一致 |
||||
UPDATE FM_PROJECT_APPROVAL_CONFIG SET SORT_ORDER = ID; |
||||
|
||||
COMMIT; |
||||
|
||||
ALTER TABLE JONHON_MES.FM_PROJECT_APPLICATION ADD APPROVAL_MAN VARCHAR2(100) NULL; |
||||
COMMENT ON COLUMN JONHON_MES.FM_PROJECT_APPLICATION.APPROVAL_MAN IS '审批人'; |
||||
ALTER TABLE JONHON_MES.FM_PROJECT_APPLICATION ADD APPROVAL_MAN_NAME VARCHAR2(100) NULL; |
||||
COMMENT ON COLUMN JONHON_MES.FM_PROJECT_APPLICATION.APPROVAL_MAN_NAME IS '审批人名称'; |
||||
|
||||
|
||||
ALTER TABLE JONHON_MES.FM_PROJECT_APPLICATION MODIFY APPROVAL_MAN NUMBER(38,0); |
||||
|
||||
|
||||
ALTER TABLE JONHON_MES.FM_PROJECT_MILESTONE MODIFY NEXT_APPROVER_ID NUMBER(38,0); |
||||
|
||||
ALTER TABLE JONHON_MES.FM_PROJECT_MILESTONE ADD GRADE_MAN_ID NUMBER(38,0) NULL; |
||||
Loading…
Reference in new issue