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