Compare commits

..

No commits in common. 'dev' and 'master' have entirely different histories.
dev ... master

@ -1,126 +0,0 @@
package com.ruoyi.system.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.TdApplyInfoList;
import com.ruoyi.system.manager.ApplyInfoListManager;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* ClassName: ApplyInfoListController
* Package: com.ruoyi.system.controller
* Description:
*
* @Author wangxy
* @Create 2025/8/13 9:31
* @Version 1.0
*/
@RestController
@RequestMapping("/system/applyList")
public class ApplyInfoListController extends BaseController {
@Resource
private ApplyInfoListManager applyInfoListManager;
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:apply:list')")
@GetMapping("/list")
public TableDataInfo list(TdApplyInfoList applyInfoList) {
startPage();
List<TdApplyInfoList> list = applyInfoListManager.selectTdApplyInfoListList(applyInfoList);
return getDataTable(list);
}
/**
* OA
*/
@GetMapping(value = "/getInfo/{applyId}")
public AjaxResult getInfo(@PathVariable("applyId") String applyId)
{
return success(applyInfoListManager.selectTdApplyInfoListById(applyId));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:apply:add')")
@Log(title = "人员申请新增", businessType = BusinessType.INSERT)
@PostMapping("/add")
@Transactional(rollbackFor = Exception.class)
public AjaxResult add(@RequestBody TdApplyInfoList applyInfoList) {
return toAjax(applyInfoListManager.insertTdApplyInfoList(applyInfoList));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:apply:edit')")
@Log(title = "人员申请修改", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
@Transactional(rollbackFor = Exception.class)
public AjaxResult edit(@RequestBody TdApplyInfoList applyInfoList) {
return toAjax(applyInfoListManager.updateTdApplyInfoList(applyInfoList));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:apply:remove')")
@Log(title = "删除人员申请", businessType = BusinessType.DELETE)
@PostMapping("/remove/{applyIds}")
@Transactional(rollbackFor = Exception.class)
public AjaxResult remove(@PathVariable String[] applyIds) {
return toAjax(applyInfoListManager.deleteApplyInfoListByIds(applyIds));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:apply:submit')")
@Log(title = "人员申请提交", businessType = BusinessType.OTHER)
@GetMapping(value = "/submit")
@Transactional(rollbackFor = Exception.class)
public AjaxResult submit(String id) {
return toAjax(applyInfoListManager.submit(id));
}
/**
* (退
*/
@Log(title = "流程实例", businessType = BusinessType.OTHER)
@PostMapping("/handle")
@Transactional(rollbackFor = Exception.class)
public AjaxResult handle(@RequestBody TdApplyInfoList applyInfoList, Long taskId, String skipType, String message) {
return toAjax(applyInfoListManager.handle(applyInfoList, taskId, skipType, message));
}
/**
*
*
* @param applyInfoList
* @return
*/
@PostMapping("/termination")
@Transactional(rollbackFor = Exception.class)
public AjaxResult termination(@RequestBody TdApplyInfoList applyInfoList) {
return toAjax(applyInfoListManager.termination(applyInfoList));
}
}

@ -1,173 +0,0 @@
package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.util.Date;
/**
* @author 13560
* sm
* @TableName td_apply_info_list
*/
@Data
public class TdApplyInfoList extends BaseEntity {
/**
*
*/
@TableId(type = IdType.INPUT)
private String applyId;
/**
*
*/
private String name;
/**
*
*/
private String sex;
/**
*
*/
private String nationa;
/**
* 0123退45
*/
private String applyStatus;
/**
*
*/
private Date appTime;
/**
* 退
*/
private String applyMsg;
/**
*
*/
private Date authTime;
/**
* id
*/
private Long createId;
/**
* id
*/
private Long deptId;
/**
* id
*/
private String deptName;
/**
*
*/
private String formerName;
/**
*
*/
private String nationality;
/**
*
*/
private String maritalStatus;
/**
*
*/
private String political;
/**
*
*/
private String phone;
/**
*
*/
private String cerno;
/**
*
*/
private String address;
/**
*
*/
private String registeredAuthority;
/**
*
*/
private String permanentAddress;
/**
*
*/
private String residentBureau;
/**
*
*/
private String positionCapacity;
/**
*
*/
private String smPost;
/**
*
*/
private String smGrade;
/**
*
*/
private String photoUrl;
/**
* 退
*/
private String leaveMsg;
/**
*
*/
private Date leaveTime;
/** 流程实例的id */
private Long instanceId;
/** 节点编码 */
private String nodeCode;
/** 流程节点名称 */
private String nodeName;
/**
* 0 1 2 3 4
*/
private Integer nodeType;
/** 流程状态0待提交 1审批中 2 审批通过 3自动通过 4终止 5作废 6撤销 7取回 8已完成 9已退回 10失效 */
private String flowStatus;
}

@ -1,44 +0,0 @@
package com.ruoyi.system.enums;
import lombok.Getter;
/**
*
*
* @author wangxy
* @date 2024/4/11 9:15
*/
@Getter
public enum ApplyListStatusEnum {
/**新建*/
NEWSAVE("0","保存"),
/**已提交*/
SUBMIT("1","已提交"),
/**审核通过*/
AUDITED("2","审核通过"),
/**审核不通过*/
GOBACK("3","退回"),
/**培训教育提交*/
TRAIN("4","培训教育提交"),
/**承诺书已上传*/
PROMISE("5","承诺书已上传"),
/**离职离岗材料提交*/
LEAVESUBMIT("6","离职离岗材料提交"),
/**离职离岗审核通过*/
LEAVEADUIT("7","离职离岗审核通过"),
/**离职离岗审核退回*/
LEAVEBACK("8","离职离岗审核退回");
private final String status;
private final String description;
ApplyListStatusEnum(String status, String description){
this.status = status;
this.description = description;
}
}

@ -1,249 +0,0 @@
package com.ruoyi.system.manager;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson2.JSON;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.domain.TdApplyInfoList;
import com.ruoyi.system.enums.ApplyListStatusEnum;
import com.ruoyi.system.service.ISysDictTypeService;
import com.ruoyi.system.service.TdApplyInfoListService;
import lombok.val;
import org.dromara.warm.flow.core.FlowFactory;
import org.dromara.warm.flow.core.dto.FlowParams;
import org.dromara.warm.flow.core.entity.Instance;
import org.dromara.warm.flow.core.entity.Task;
import org.dromara.warm.flow.core.enums.SkipType;
import org.dromara.warm.flow.core.service.InsService;
import org.dromara.warm.flow.core.service.TaskService;
import org.dromara.warm.flow.core.utils.IdUtils;
import org.dromara.warm.flow.core.utils.StreamUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* ClassName: ApplyInfoListManager
* Package: com.ruoyi.web.controller.manager
* Description:
*
* @Author wangxy
* @Create 2025/5/14 11:30
* @Version 1.0
*/
@Component
public class ApplyInfoListManager {
@Resource
private TdApplyInfoListService applyInfoListService;
@Resource
private InsService insService;
@Resource
private TaskService taskService;
@Resource
private ISysDictTypeService sysDictTypeService;
/**
*
*
* @param applyInfoList
* @return
*/
public List<TdApplyInfoList> selectTdApplyInfoListList(TdApplyInfoList applyInfoList) {
return applyInfoListService.selectApplyInfoListList(applyInfoList);
}
public TdApplyInfoList selectTdApplyInfoListById(String applyId) {
return applyInfoListService.lambdaQuery().eq(TdApplyInfoList::getApplyId, applyId).one();
}
@Transactional(rollbackFor = Exception.class)
public boolean insertTdApplyInfoList(TdApplyInfoList applyInfoList) {
// 设置流转参数
String id = IdUtils.nextIdStr();
applyInfoList.setApplyId(id);
LoginUser user = SecurityUtils.getLoginUser();
// 从字典表中获取流程编码
String flowCode = getFlowType(0L);
// 传递流程编码,绑定流程定义 【必传】
FlowParams flowParams = FlowParams.build().flowCode(flowCode);
// 设置办理人唯一标识,保存为流程实例的创建人 【必传】
flowParams.handler(user.getUser().getUserId().toString());
// 流程变量
Map<String, Object> variable = new HashMap<>();
// 流程变量传递业务数据,按实际业务需求传递 【按需传】
variable.put("businessData", applyInfoList);
variable.put("businessType", "applyInfoList");
// 办理人变量表达式替换 【按需传】
variable.put("handler1", Arrays.asList(4, "5", 100L));
variable.put("handler2", 12L);
variable.put("handler3", new Object[]{9, "10", 102L});
variable.put("handler4", "15");
Task task = FlowFactory.newTask().setId(55L);
variable.put("handler5", task);
variable.put("handler6", 77L);
flowParams.variable(variable);
// 新增请假表
Instance instance = insService.start(id, flowParams);
applyInfoList.setInstanceId(instance.getId());
applyInfoList.setNodeCode(instance.getNodeCode());
applyInfoList.setNodeName(instance.getNodeName());
applyInfoList.setNodeType(instance.getNodeType());
applyInfoList.setFlowStatus(instance.getFlowStatus());
applyInfoList.setCreateTime(DateUtils.getNowDate());
applyInfoList.setDeptId(SecurityUtils.getDeptId());
applyInfoList.setDeptName(SecurityUtils.getLoginUser().getUser().getDept().getDeptName());
applyInfoList.setCreateId(SecurityUtils.getLoginUser().getUserId());
applyInfoList.setCreateBy(SecurityUtils.getLoginUser().getUsername());
applyInfoList.setApplyStatus(ApplyListStatusEnum.NEWSAVE.getStatus());
return applyInfoListService.save(applyInfoList);
}
public boolean updateTdApplyInfoList(TdApplyInfoList applyInfoList) {
applyInfoList.setUpdateTime(DateUtils.getNowDate());
applyInfoList.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
return applyInfoListService.saveOrUpdate(applyInfoList);
}
@Transactional(rollbackFor = Exception.class)
public boolean submit(String id) {
// 设置流转参数
TdApplyInfoList applyInfoList = applyInfoListService.lambdaQuery()
.eq(TdApplyInfoList::getApplyId, id).one();
LoginUser user = SecurityUtils.getLoginUser();
// 是通过流程还是退回流程 【必传】
FlowParams flowParams = FlowParams.build().skipType(SkipType.PASS.getKey());
// 作为办理人保存到历史记录表 【必传】
flowParams.handler(user.getUser().getUserId().toString());
// 设置办理人拥有的权限,办理中需要校验是否有权限办理 【必传】
List<SysRole> roles = user.getUser().getRoles();
List<String> permissionList = new ArrayList<>();
if (Objects.nonNull(roles)) {
permissionList = roles.stream().map(role -> "role:" + role.getRoleId()).collect(Collectors.toList());
}
permissionList.add("dept:" + SecurityUtils.getLoginUser().getUser().getDeptId());
permissionList.add(user.getUser().getUserId().toString());
flowParams.permissionFlag(permissionList);
// 流程变量
Map<String, Object> variable = new HashMap<>();
// 流程变量传递业务数据,按实际业务需求传递 【按需传】
variable.put("businessType", "applyInfoList");
flowParams.variable(variable);
// 更新请假表
Instance instance = insService.skipByInsId(applyInfoList.getInstanceId(), flowParams);
applyInfoList.setNodeCode(instance.getNodeCode());
applyInfoList.setNodeName(instance.getNodeName());
applyInfoList.setNodeType(instance.getNodeType());
applyInfoList.setFlowStatus(instance.getFlowStatus());
applyInfoList.setUpdateTime(DateUtils.getNowDate());
applyInfoList.setApplyStatus(ApplyListStatusEnum.SUBMIT.getStatus());
return applyInfoListService.saveOrUpdate(applyInfoList);
}
@Transactional(rollbackFor = Exception.class)
public boolean handle(TdApplyInfoList applyInfoList, Long taskId, String skipType, String message) {
// 设置流转参数
LoginUser user = SecurityUtils.getLoginUser();
// 是通过流程还是退回流程 【必传】
FlowParams flowParams = FlowParams.build().skipType(skipType);
// 作为办理人保存到历史记录表 【必传】
flowParams.handler(user.getUser().getUserId().toString());
// 作为审批意见保存到历史记录表 【按需传】
flowParams.message(message);
// 流程变量
Map<String, Object> variable = new HashMap<>();
// 流程变量传递业务数据,按实际业务需求传递 【按需传】
variable.put("businessType", "applyInfoList");
flowParams.variable(variable);
// 请假信息存入flowParams,方便查看历史审批数据 【按需传】
flowParams.hisTaskExt(JSON.toJSONString(applyInfoList));
Instance instance = taskService.skip(taskId, flowParams);
// 更新请假表
applyInfoList.setNodeCode(instance.getNodeCode());
applyInfoList.setNodeName(instance.getNodeName());
applyInfoList.setNodeType(instance.getNodeType());
applyInfoList.setFlowStatus(instance.getFlowStatus());
if (SkipType.PASS.getKey().equals(skipType)) {
applyInfoList.setApplyStatus(ApplyListStatusEnum.AUDITED.getStatus());
} else {
applyInfoList.setApplyStatus(ApplyListStatusEnum.GOBACK.getStatus());
}
applyInfoList.setUpdateTime(DateUtils.getNowDate());
return applyInfoListService.saveOrUpdate(applyInfoList);
}
public boolean termination(TdApplyInfoList applyInfoList) {
// 设置流转参数
FlowParams flowParams = new FlowParams();
LoginUser user = SecurityUtils.getLoginUser();
// 作为审批意见保存到历史记录表 【按需传】
flowParams.message("终止流程");
// 作为办理人保存到历史记录表 【必传】
flowParams.handler(user.getUserId().toString());
Map<String, Object> variable = new HashMap<>();
// 流程变量传递业务数据,按实际业务需求传递 【按需传】
variable.put("businessType", "applyInfoList");
flowParams.variable(variable);
Instance instance = insService.termination(applyInfoList.getInstanceId(), flowParams);
if (instance == null) {
throw new ServiceException("流程实例不存在");
}
// 更新请假表
applyInfoList.setNodeCode(instance.getNodeCode());
applyInfoList.setNodeName(instance.getNodeName());
applyInfoList.setNodeType(instance.getNodeType());
applyInfoList.setFlowStatus(instance.getFlowStatus());
applyInfoList.setApplyStatus(ApplyListStatusEnum.NEWSAVE.getStatus());
return applyInfoListService.saveOrUpdate(applyInfoList);
}
public int deleteApplyInfoListByIds(String[] applyIds) {
List<String> list = Arrays.asList(applyIds);
List<TdApplyInfoList> applyInfoListList = applyInfoListService.
lambdaQuery().in(TdApplyInfoList::getApplyId, list).list();
if (applyInfoListService.lambdaUpdate().in(TdApplyInfoList::getApplyId, list).remove()) {
List<Long> instanceIds = applyInfoListList.stream().map(TdApplyInfoList::getInstanceId).collect(Collectors.toList());
return insService.remove(instanceIds) ? 1 : 0;
}
return 0;
}
/**
*
*
* @param type
* @return
*/
private String getFlowType(Long type) {
List<SysDictData> leaveType = sysDictTypeService.selectDictDataByType("leave_type");
Map<String, String> map = StreamUtils.toMap(leaveType, SysDictData::getDictValue, SysDictData::getRemark);
return map.get(type.toString());
}
}

@ -1,35 +0,0 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.domain.TdApplyInfoList;
import java.util.List;
/**
* @author Administrator
* @description td_apply_info_list(sm)Mapper
* @createDate 2025-05-14 11:23:04
* @Entity generator.domain.TdApplyInfoList
*/
public interface TdApplyInfoListMapper extends BaseMapper<TdApplyInfoList> {
public List<TdApplyInfoList> selectApplyInfoListList(TdApplyInfoList applyInfoList);
}

@ -1,37 +0,0 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.domain.TdApplyInfoList;
import java.util.List;
/**
* @author Administrator
* @description td_apply_info_list(sm)Service
* @createDate 2025-05-14 11:23:04
*/
public interface TdApplyInfoListService extends IService<TdApplyInfoList> {
public List<TdApplyInfoList> selectApplyInfoListList(TdApplyInfoList applyInfoList);
}

@ -1,36 +0,0 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.system.domain.TdApplyInfoList;
import com.ruoyi.system.mapper.TdApplyInfoListMapper;
import com.ruoyi.system.service.TdApplyInfoListService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @author Administrator
* @description td_apply_info_list(sm)Service
* @createDate 2025-05-14 11:23:04
*/
@Service
public class TdApplyInfoListServiceImpl extends ServiceImpl<TdApplyInfoListMapper, TdApplyInfoList>
implements TdApplyInfoListService {
@Resource
private TdApplyInfoListMapper applyInfoListMapper;
@DataScope(deptAlias = "d")
@Override
public List<TdApplyInfoList> selectApplyInfoListList(TdApplyInfoList applyInfoList) {
return applyInfoListMapper.selectApplyInfoListList(applyInfoList);
}
}

@ -1,63 +0,0 @@
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.kingbase8.Driver
druid:
# 主库数据源
master:
url: jdbc:kingbase8://172.16.1.141:54321/ry_vue-test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&clientEncoding=UTF8
username: ENC(p1FZD4G20+SJhGI9w0Nrmg==)
password: ENC(Jf2Gtl4fJ4l04FgK08AYR2HZu8UcFUhO)
#username: root
#password: 123456
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: ruoyi
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true

@ -53,7 +53,7 @@ spring:
# 国际化资源文件路径 # 国际化资源文件路径
basename: i18n/messages basename: i18n/messages
profiles: profiles:
active: test active: dev
# 文件上传 # 文件上传
servlet: servlet:
multipart: multipart:
@ -69,13 +69,13 @@ spring:
# redis 配置 # redis 配置
redis: redis:
# 地址 # 地址
host: 172.16.1.91 host: 172.16.1.71
# 端口默认为6379 # 端口默认为6379
port: 6379 port: 6379
# 数据库索引 # 数据库索引
database: 0 database: 0
# 密码 # 密码
password: password: 123456
# 连接超时时间 # 连接超时时间
timeout: 10s timeout: 10s
lettuce: lettuce:
@ -107,7 +107,7 @@ token:
# 令牌有效期默认30分钟 # 令牌有效期默认30分钟
expireTime: 30 expireTime: 30
# 是否允许账户多终端同时登录true允许 false不允许 # 是否允许账户多终端同时登录true允许 false不允许
soloLogin: true soloLogin: false
# MyBatis Plus配置 # MyBatis Plus配置
mybatis-plus: mybatis-plus:

@ -1,95 +0,0 @@
<?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="com.ruoyi.system.mapper.TdApplyInfoListMapper">
<resultMap id="BaseResultMap" type="TdApplyInfoList">
<id property="applyId" column="apply_id" jdbcType="VARCHAR"/>
<result property="name" column="name" jdbcType="VARCHAR"/>
<result property="sex" column="sex" jdbcType="VARCHAR"/>
<result property="nationa" column="nationa" jdbcType="VARCHAR"/>
<result property="applyStatus" column="apply_status" jdbcType="VARCHAR"/>
<result property="appTime" column="app_time" jdbcType="TIMESTAMP"/>
<result property="applyMsg" column="apply_msg" jdbcType="VARCHAR"/>
<result property="authTime" column="auth_time" jdbcType="TIMESTAMP"/>
<result property="createId" column="create_id" jdbcType="BIGINT"/>
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="remark" column="remark" jdbcType="VARCHAR"/>
<result property="deptId" column="dept_id" jdbcType="BIGINT"/>
<result property="formerName" column="former_name" jdbcType="VARCHAR"/>
<result property="nationality" column="nationality" jdbcType="VARCHAR"/>
<result property="maritalStatus" column="marital_status" jdbcType="VARCHAR"/>
<result property="political" column="political" jdbcType="VARCHAR"/>
<result property="phone" column="phone" jdbcType="VARCHAR"/>
<result property="cerno" column="cerno" jdbcType="VARCHAR"/>
<result property="address" column="address" jdbcType="VARCHAR"/>
<result property="registeredAuthority" column="registered_authority" jdbcType="VARCHAR"/>
<result property="permanentAddress" column="permanent_address" jdbcType="VARCHAR"/>
<result property="residentBureau" column="resident_bureau" jdbcType="VARCHAR"/>
<result property="positionCapacity" column="position_capacity" jdbcType="VARCHAR"/>
<result property="smPost" column="sm_post" jdbcType="VARCHAR"/>
<result property="smGrade" column="sm_grade" jdbcType="VARCHAR"/>
<result property="photoUrl" column="photo_url" jdbcType="VARCHAR"/>
<result property="leaveMsg" column="leave_msg" jdbcType="VARCHAR"/>
<result property="leaveTime" column="leave_time" jdbcType="TIMESTAMP"/>
<result property="deptName" column="dept_name" jdbcType="VARCHAR"/>
<result property="instanceId" column="instance_id" />
<result property="nodeCode" column="node_code" />
<result property="nodeName" column="node_name" />
<result property="nodeType" column="node_type" />
<result property="flowStatus" column="flow_status" />
</resultMap>
<sql id="Base_Column_List">
apply_id,name,sex,
nationa,apply_status,app_time,
apply_msg,auth_time,create_id,
create_by,create_time,update_by,
update_time,remark,dept_id,
former_name,nationality,marital_status,
political,phone,cerno,
address,registered_authority,permanent_address,
resident_bureau,position_capacity,sm_post,
sm_grade,photo_url,leave_msg,leave_time,dept_name,instance_id, node_code, node_name, node_type, flow_status
</sql>
<select id="selectApplyInfoListList" resultType="com.ruoyi.system.domain.TdApplyInfoList">
select <include refid="Base_Column_List"/> from td_apply_info_list d
<trim prefix="where" prefixOverrides="and|or">
<if test="name!=null and name!=''">
AND name = #{name}
</if>
<if test="nationa!=null and nationa!=''">
AND nationa = #{nationa}
</if>
<if test="sex!=null and sex!=''">
AND sex = #{sex}
</if>
<if test="formerName!=null and formerName!=''">
AND former_name = #{formerName}
</if>
<if test="cerno!=null and cerno!=''">
AND cerno = #{cerno}
</if>
<if test="phone!=null and phone!=''">
AND phone = #{phone}
</if>
<if test="smPost!=null and smPost!=''">
AND sm_post = #{smPost}
</if>
<if test="flowStatus != null and flowStatus != ''">
and flow_status = #{flowStatus}
</if>
AND apply_status in ('0','3')
<!-- 数据范围过滤 -->
${params.dataScope}
</trim>
ORDER BY create_time DESC
</select>
</mapper>

@ -4,8 +4,6 @@ import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
@ -21,7 +19,6 @@ public class BaseEntity implements Serializable
/** 搜索值 */ /** 搜索值 */
@JsonIgnore @JsonIgnore
@TableField(exist=false)
private String searchValue; private String searchValue;
/** 创建者 */ /** 创建者 */
@ -43,7 +40,6 @@ public class BaseEntity implements Serializable
/** 请求参数 */ /** 请求参数 */
@JsonInclude(JsonInclude.Include.NON_EMPTY) @JsonInclude(JsonInclude.Include.NON_EMPTY)
@TableField(exist=false)
private Map<String, Object> params; private Map<String, Object> params;
public String getSearchValue() public String getSearchValue()

@ -151,7 +151,7 @@
b.id , b.id ,
d.flow_name d.flow_name
FROM FROM
flow_user a `flow_user` a
LEFT JOIN flow_instance b ON a.associated = b.id LEFT JOIN flow_instance b ON a.associated = b.id
LEFT JOIN ${prefix}sys_user c ON b.create_by = c.user_id LEFT JOIN ${prefix}sys_user c ON b.create_by = c.user_id
LEFT JOIN flow_definition d on b.definition_id=d.id LEFT JOIN flow_definition d on b.definition_id=d.id

@ -135,7 +135,7 @@ public class DataScopeAspect
} }
else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope))
{ {
sqlString.append(StringUtils.format(" OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or CAST({} AS text) = ANY(string_to_array(ancestors, ',')))", deptAlias, user.getDeptId(), user.getDeptId())); sqlString.append(StringUtils.format(" OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", deptAlias, user.getDeptId(), user.getDeptId()));
} }
else if (DATA_SCOPE_SELF.equals(dataScope)) else if (DATA_SCOPE_SELF.equals(dataScope))
{ {

@ -66,7 +66,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="checkDeptExistUser" parameterType="Long" resultType="int"> <select id="checkDeptExistUser" parameterType="Long" resultType="int">
select count(1) from ${prefix}sys_user where dept_id = #{deptId} and del_flag = '0' select count(1) from sys_user where dept_id = #{deptId} and del_flag = '0'
</select> </select>
<select id="hasChildByDeptId" parameterType="Long" resultType="int"> <select id="hasChildByDeptId" parameterType="Long" resultType="int">
@ -75,11 +75,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="selectChildrenDeptById" parameterType="Long" resultMap="SysDeptResult"> <select id="selectChildrenDeptById" parameterType="Long" resultMap="SysDeptResult">
select * from ${prefix}sys_dept where CAST(#{deptId} AS text) = ANY(string_to_array(ancestors, ',')) select * from sys_dept where find_in_set(#{deptId}, ancestors)
</select> </select>
<select id="selectNormalChildrenDeptById" parameterType="Long" resultType="int"> <select id="selectNormalChildrenDeptById" parameterType="Long" resultType="int">
select count(*) from ${prefix}sys_dept where status = 0 and del_flag = '0' and CAST(#{deptId} AS text) = ANY(string_to_array(ancestors, ',')) select count(*) from sys_dept where status = 0 and del_flag = '0' and find_in_set(#{deptId}, ancestors)
</select> </select>
<select id="checkDeptNameUnique" resultMap="SysDeptResult"> <select id="checkDeptNameUnique" resultMap="SysDeptResult">

@ -29,7 +29,7 @@
</resultMap> </resultMap>
<sql id="selectMenuVo"> <sql id="selectMenuVo">
select menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time select menu_id, menu_name, parent_id, order_num, path, component, `query`, route_name, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time
from sys_menu from sys_menu
</sql> </sql>
@ -50,13 +50,13 @@
</select> </select>
<select id="selectMenuTreeAll" resultMap="SysMenuResult"> <select id="selectMenuTreeAll" resultMap="SysMenuResult">
select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.query, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
from sys_menu m where m.menu_type in ('M', 'C') and m.status = 0 from sys_menu m where m.menu_type in ('M', 'C') and m.status = 0
order by m.parent_id, m.order_num order by m.parent_id, m.order_num
</select> </select>
<select id="selectMenuListByUserId" parameterType="SysMenu" resultMap="SysMenuResult"> <select id="selectMenuListByUserId" parameterType="SysMenu" resultMap="SysMenuResult">
select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.query, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
from sys_menu m from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id left join sys_user_role ur on rm.role_id = ur.role_id
@ -75,7 +75,7 @@
</select> </select>
<select id="selectMenuTreeByUserId" parameterType="Long" resultMap="SysMenuResult"> <select id="selectMenuTreeByUserId" parameterType="Long" resultMap="SysMenuResult">
select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.query, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
from sys_menu m from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id left join sys_user_role ur on rm.role_id = ur.role_id

@ -82,7 +82,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND u.create_time &lt;= #{params.endTime} AND u.create_time &lt;= #{params.endTime}
</if> </if>
<if test="deptId != null and deptId != 0"> <if test="deptId != null and deptId != 0">
AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE CAST(#{deptId} AS text) = ANY(string_to_array(ancestors, ',')) )) AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) ))
</if> </if>
<!-- 数据范围过滤 --> <!-- 数据范围过滤 -->
${params.dataScope} ${params.dataScope}
@ -232,7 +232,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach> </foreach>
</if> </if>
<if test="warmFlowInteractiveTypeVo.deptId != null and warmFlowInteractiveTypeVo.deptId != 0"> <if test="warmFlowInteractiveTypeVo.deptId != null and warmFlowInteractiveTypeVo.deptId != 0">
AND (u.dept_id = #{warmFlowInteractiveTypeVo.deptId} OR u.dept_id IN ( SELECT t.dept_id FROM ${prefix}sys_dept t WHERE CAST(#{warmFlowInteractiveTypeVo.deptId} AS text) = ANY(string_to_array(ancestors, ',')))) AND (u.dept_id = #{warmFlowInteractiveTypeVo.deptId} OR u.dept_id IN ( SELECT t.dept_id FROM ${prefix}sys_dept t WHERE find_in_set(#{warmFlowInteractiveTypeVo.deptId}, ancestors) ))
</if> </if>
<!-- 数据范围过滤 --> <!-- 数据范围过滤 -->
${warmFlowInteractiveTypeVo.params.dataScope} ${warmFlowInteractiveTypeVo.params.dataScope}
@ -249,7 +249,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach> </foreach>
</if> </if>
<if test="warmFlowInteractiveTypeVo.deptId != null and warmFlowInteractiveTypeVo.deptId != 0"> <if test="warmFlowInteractiveTypeVo.deptId != null and warmFlowInteractiveTypeVo.deptId != 0">
AND (u.dept_id = #{warmFlowInteractiveTypeVo.deptId} OR u.dept_id IN ( SELECT t.dept_id FROM ${prefix}sys_dept t WHERE CAST(#{warmFlowInteractiveTypeVo.deptId} AS text) = ANY(string_to_array(ancestors, ',')) )) AND (u.dept_id = #{warmFlowInteractiveTypeVo.deptId} OR u.dept_id IN ( SELECT t.dept_id FROM ${prefix}sys_dept t WHERE find_in_set(#{warmFlowInteractiveTypeVo.deptId}, ancestors) ))
</if> </if>
<!-- 数据范围过滤 --> <!-- 数据范围过滤 -->
${warmFlowInteractiveTypeVo.params.dataScope} ${warmFlowInteractiveTypeVo.params.dataScope}

@ -1,5 +1,5 @@
# 页面标题 # 页面标题
VUE_APP_TITLE = 运维管理系统 VUE_APP_TITLE = 后台管理系统
# 开发环境配置 # 开发环境配置
ENV = 'development' ENV = 'development'

@ -1,5 +1,5 @@
# 页面标题 # 页面标题
VUE_APP_TITLE = 运维管理系统 VUE_APP_TITLE = 后台管理系统
# 生产环境配置 # 生产环境配置
ENV = 'production' ENV = 'production'

@ -1,5 +1,5 @@
# 页面标题 # 页面标题
VUE_APP_TITLE = 运维管理系统 VUE_APP_TITLE = 后台管理系统
NODE_ENV = production NODE_ENV = production

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

@ -9,6 +9,10 @@
<template v-if="device!=='mobile'"> <template v-if="device!=='mobile'">
<search id="header-search" class="right-menu-item" /> <search id="header-search" class="right-menu-item" />
<el-tooltip content="源码地址" effect="dark" placement="bottom">
<ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
</el-tooltip>
<el-tooltip content="文档地址" effect="dark" placement="bottom"> <el-tooltip content="文档地址" effect="dark" placement="bottom">
<ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" /> <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
</el-tooltip> </el-tooltip>

@ -21,6 +21,22 @@
</ul> </ul>
</p> </p>
<p> <p>
<el-tag type="danger">&yen;免费开源</el-tag>
</p>
<p>
<el-button
type="primary"
size="mini"
icon="el-icon-cloudy"
plain
@click="goTarget('https://gitee.com/dromara/warm-flow')"
>访问码云</el-button>
<el-button
size="mini"
icon="el-icon-s-home"
plain
@click="goTarget('http://www.warm-flow.cn/')"
>访问主页</el-button>
</p> </p>
</el-col> </el-col>
</el-row> </el-row>

@ -1,7 +1,7 @@
<template> <template>
<div class="login"> <div class="login">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form"> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title">运维管理系统</h3> <h3 class="title">后台管理系统</h3>
<el-form-item prop="username"> <el-form-item prop="username">
<el-input <el-input
v-model="loginForm.username" v-model="loginForm.username"

@ -1,7 +1,7 @@
<template> <template>
<div class="register"> <div class="register">
<el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form"> <el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
<h3 class="title">运维管理系统</h3> <h3 class="title">后台管理系统</h3>
<el-form-item prop="username"> <el-form-item prop="username">
<el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号"> <el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /> <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />

Loading…
Cancel
Save