first commit

This commit is contained in:
ye1023
2026-04-09 15:12:08 +08:00
commit d94e9c9bc4
1980 changed files with 709719 additions and 0 deletions
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>jeecg-system-api</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.8.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jeecg-system-local-api</artifactId>
</project>
@@ -0,0 +1,82 @@
package org.jeecg.common.bpm.api;
import java.util.List;
import java.util.Map;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.vo.DictModel;
import com.alibaba.fastjson.JSONObject;
/**
* 流程接口
*
* @author scott
*/
public interface IBpmBaseExtApi {
/**
* 23. 流程提交接口(online,自定义开发)
* @param flowCode 流程业务关联 例如:joa_leave_01
* @param id 表单业务数据data id
* @param formUrl 流程审批时附件页面默认展示的PC端表单组件(地址)
* @param formUrlMobile 流程审批时附件页面默认展示的移动端表单组件(地址)
* @param username 流程发起人账号
* @param jsonData Json串,额外扩展的流程变量值 【非必填】
* @return
* @throws Exception
*/
Result<String> startMutilProcess(String flowCode, String id, String formUrl, String formUrlMobile,String username, String jsonData) throws Exception;
/**
* 24. 流程提交接口(自定义表单设计器)
* @param flowCode 流程业务关联 例如:joa_leave_01
* @param id 表单业务数据data id
* @param formUrl 流程审批时附件页面默认展示的PC端表单组件(地址)
* @param formUrlMobile 流程审批时附件页面默认展示的移动端表单组件(地址)
* @param username 流程发起人账号
* @param jsonData Json串,额外扩展的流程变量值 【非必填】
* @return
* @throws Exception
*/
Result<String> startDesFormMutilProcess(String flowCode, String id, String formUrl, String formUrlMobile,String username,String jsonData) throws Exception;
/**
* 25. 保存流程草稿箱接口(自定义开发表单、online表单)
* @param flowCode 流程业务关联 例如:joa_leave_01
* @param id 表单业务数据data id
* @param formUrl 流程审批时附件页面默认展示的PC端表单组件(地址) 【非必填】
* @param formUrlMobile 流程审批时附件页面默认展示的移动端表单组件(地址) 【非必填】
* @param username 流程发起人账号
* @param jsonData Json串,额外扩展的流程变量值 【非必填】
* @return
* @throws Exception
*/
Result<String> saveMutilProcessDraft(String flowCode, String id, String formUrl, String formUrlMobile,String username,String jsonData) throws Exception;
/**
* 批量删除应用下的流程
*
* @param appId 零代码应用ID
* @return
* @throws Exception
*/
Boolean batchDeleteProcessByAppId(String appId) throws Exception;
/**
* 批量关闭应用下的流程
*
* @param appId 零代码应用ID
* @return
* @throws Exception
*/
Boolean batchCloseProcessByAppId(String appId) throws Exception;
/**
* 批量激活应用下的流程(打开激活流程,如未发布过则同时发布流程)
*
* @param appId 零代码应用ID
* @return
* @throws Exception
*/
public Boolean batchActivateProcessByAppId(String appId) throws Exception;
}
@@ -0,0 +1,167 @@
package org.jeecg.common.desform.api;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.jeecg.common.desform.vo.DesignFormDataVo;
import org.jeecg.common.lowapp.model.LowAppCopyMenu;
import java.util.List;
/**
* 表单设计器API接口
*
* @author sunjianlei
*/
public interface IDesformBaseApi {
/**
* 通过id获取表单数据
*
* @param desformCode
* @param id
* @return
*/
DesignFormDataVo getDataById(String desformCode, String id);
/**
* 通过id获取表单数据 (数据进行翻译)
*
* @param desformCode
* @param id
* @return
*/
DesignFormDataVo getTranslateDataById(String desformCode, String id);
/**
* 通过ids批量获取表单数据,多个ID用英文逗号分割
*
* @param desformCode
* @param ids
* @return
*/
List<DesignFormDataVo> getDataByIds(String desformCode, String ids);
/**
* 通过id修改数据
*
* @param desformCode
* @param id 数据ID
* @param jsonData 表单数据,要携带id
* @return
*/
boolean updateDataById(String desformCode, String id, JSONObject jsonData);
/**
* 通过ids批量删除表单数据,多个ID用英文逗号分割(真实删除)
*
* @param desformCode
* @param ids
* @return
*/
boolean deleteDataById(String desformCode, String ids);
/**
* 后台翻译多条数据
* 翻译数据,封装翻译结果
*
* @param desformCode 表单编码
* @param dataList 数据列表
* @return
*/
JSONObject translateListDataByJsonArray(String desformCode, JSONArray dataList);
/**
* 后台翻译多条数据
* 翻译数据,封装翻译结果
*
* @param desformCode 表单编码
* @param onlyFields 仅翻译的字段,逗号分割。不传则翻译所有字段
* @param dataList 数据列表
* @return
*/
JSONObject translateListDataByJsonArray2(String desformCode, String onlyFields, JSONArray dataList);
/**
* 删除表单
* @param designFormCode
* @return
*/
boolean deleteDesignForm(String designFormCode);
/**
* 复制 表单
* @param lowAppCopyMenu
* 用到属性如下:
* originFormCode 表单设计器 原来的编码、
* isIdForm 表单设计器,是否是采用ID访问、
* copyLevel app级别的复制/menu级别的复制、
* backupKey 备份标识、
* appId 应用ID(复制时传的是复制后的 应用ID)
* @return
*/
LowAppCopyMenu copyDesignForm(LowAppCopyMenu lowAppCopyMenu);
/**
* 复制app时,复制表单设计器json,需要修改json中的关联记录的编码,子表的编码
* @param lowAppCopyMenu
* 用到属性如下:
* formCodeMapping 表单复制 原表单编码--> 新表单编码的映射关系
*/
void updateDesignFormJson(LowAppCopyMenu lowAppCopyMenu);
/**
* 从备份还原app
* @param lowAppCopyMenu
* 用到属性如下:
* originFormCode 表单设计器 原来的编码、
* isIdForm 表单设计器,是否是采用ID访问、
* backupKey 备份标识
*/
void coverDesignForm(LowAppCopyMenu lowAppCopyMenu);
/**
* 通过表单编码获取表单视图列表
*
* @param desformCode 表单设计器编码
* @return
*/
List<JSONObject> getViewListByCode(String desformCode);
/**
* 修改自定义按钮的流程id
* @param lowAppCopyMenu
* 用到属性如下:
* designFormCodeList 一次处理多个表单编码
* processIdMapping 流程复制 原ID--> 新ID的映射关系
*/
void updateLowAppButtonProcessId(LowAppCopyMenu lowAppCopyMenu);
/**
* 复制 列表上方图表配置的 chartId
* @param lowAppCopyMenu
* 用到属性如下:
* formCodeMapping 表单复制 原表单编码--> 新表单编码的映射关系
* formIdMapping 表单复制 原表单ID--> 新表单ID的映射关系
* dragIdMapping 仪表盘复制 原ID--> 新ID的映射关系
* viewIdMapping 视图复制 原ID--> 新ID的映射关系
* processIdMapping 流程复制 原ID--> 新ID的映射关系
*/
void copyLowAppChart(LowAppCopyMenu lowAppCopyMenu);
/**
* 删除设计器表单
* @param menuUrl
* @param deleteMongo
*/
void deleteDesignFormForAppCopy(String menuUrl, Boolean deleteMongo);
/**
* 关联记录的关联表是其他租户下的,则设置该控件不可用
* @date 20230913
* @author scott
*
* @param lowAppCopyMenu
*/
void batchDisabledOtherTenantLinkRecords(LowAppCopyMenu lowAppCopyMenu);
}
@@ -0,0 +1,126 @@
package org.jeecg.common.desform.vo;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.bson.json.JsonWriterSettings;
import org.jeecg.common.desform.vo.def.BigDecimalVoConverter;
import org.jeecg.common.desform.vo.def.DesformVoFields;
import org.bson.Document;
import java.io.Serializable;
/**
* @Description: 表单设计数据
* @Author: jeecg-boot
* @Date: 2019-05-16
* @Version: V1.0
*/
@Data
public class DesignFormDataVo implements Serializable {
private static final long serialVersionUID = 1L;
private static final BigDecimalVoConverter BIG_DECIMAL_CONVERTER = new BigDecimalVoConverter();
/**
* 将MongoDB的数据转换为DesignFormData
*
* @param document
*/
public DesignFormDataVo(String desformCode, Document document) {
JsonWriterSettings writerSettings = JsonWriterSettings
.builder()
.decimal128Converter(BIG_DECIMAL_CONVERTER)
.build();
this.parseDataByJson(desformCode, JSON.parseObject(document.toJson(writerSettings)));
}
public DesignFormDataVo(String desformCode, JSONObject jsonData) {
this.parseDataByJson(desformCode, jsonData);
}
public DesignFormDataVo() {
}
/**
* ID
*/
private String id;
/**
* 表单设计ID
*/
private String desformId;
/**
* 表单设计编码
*/
private String desformCode;
/**
* 表单设计名称
*/
private String desformName;
/**
* 表单数据JSON
*/
private String desformDataJson;
/**
* 表单设计器原始数据
*/
private JSONObject desformData;
/**
* Online表单的Code
*/
private String onlineFormCode;
/**
* Online数据表中的id,用于修改
*/
private String onlineFormDataId;
private String bpmStatus;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private java.util.Date createTime;
/**
* 修改人
*/
private String updateBy;
/**
* 修改时间
*/
private java.util.Date updateTime;
/** 非持久化:是否触发流程信号 */
private boolean isTriggerProcess = true;
/**
* 获取数据JSON字符串
*/
public String getDesformDataJson() {
if (this.desformData == null) {
return this.desformDataJson;
}
return this.desformData.toJSONString();
}
/**
* 通过 jsonData 赋值
*
* @param desformCode
* @param jsonData
*/
private void parseDataByJson(String desformCode, JSONObject jsonData) {
this.desformCode = desformCode;
this.id = jsonData.getString(DesformVoFields.ID);
this.desformId = jsonData.getString(DesformVoFields.DESFORM_ID);
this.desformName = jsonData.getString(DesformVoFields.DESFORM_NAME);
this.onlineFormCode = jsonData.getString(DesformVoFields.ONLINE_FORM_CODE);
this.onlineFormDataId = jsonData.getString(DesformVoFields.ONLINE_FORM_ID);
this.bpmStatus = jsonData.getString(DesformVoFields.BPM_STATUS);
this.createBy = jsonData.getString(DesformVoFields.CREATE_BY);
this.createTime = jsonData.getDate(DesformVoFields.CREATE_TIME);
this.updateBy = jsonData.getString(DesformVoFields.UPDATE_BY);
this.updateTime = jsonData.getDate(DesformVoFields.UPDATE_TIME);
this.desformData = jsonData;
}
}
@@ -0,0 +1,17 @@
package org.jeecg.common.desform.vo.def;
import org.bson.json.Converter;
import org.bson.json.StrictJsonWriter;
import org.bson.types.Decimal128;
/**
* 将 Decimal128 转换为 BigDecimal
*/
public class BigDecimalVoConverter implements Converter<Decimal128> {
@Override
public void convert(Decimal128 value, StrictJsonWriter writer) {
writer.writeRaw(value.toString());
}
}
@@ -0,0 +1,19 @@
package org.jeecg.common.desform.vo.def;
/**
* 表单设计器,MongoDB标准字段
*/
public interface DesformVoFields {
// ID不能去掉前下划线
String ID = "_id";
String ID_SQL = "id";
String DESFORM_ID = "desform_id";
String DESFORM_NAME = "desform_name";
String ONLINE_FORM_CODE = "online_form_code";
String ONLINE_FORM_ID = "online_form_id";
String BPM_STATUS = "bpm_status";
String CREATE_BY = "create_by";
String CREATE_TIME = "create_time";
String UPDATE_BY = "update_by";
String UPDATE_TIME = "update_time";
}
@@ -0,0 +1,59 @@
package org.jeecg.common.drag.api;
import org.jeecg.common.api.dto.DragRelIdsDTO;
import java.util.Map;
/**
* 仪表盘API接口
* @date 2023/1/9
* @author lsq
*/
public interface IDragBaseApi {
/**
* 通过id删除仪表盘
*
* @param id
* @return
*/
void deleteDragPage(String id);
/**
* 通过id复制仪表盘
*
* @param id
* @return id
*/
String copyDragPage(String id,Integer tenantId);
/**
* 备份仪表盘
* @param id 仪表盘id
* @param backupKey 新的仪表盘id后缀
* @return
*/
String backupsPageCrossApp(String id,String backupKey);
/**
* 还原仪表盘
* @param id 仪表盘id带后缀
* @param backupKey 仪表盘id后缀
* @return
*/
void revertPageCrossApp(String id,String backupKey);
/**
* 跨应用复制仪表盘
* @param dragRelIdsDTO 映射关系实体
* @return
*/
String copyPageCrossApp(DragRelIdsDTO dragRelIdsDTO);
/**
* 替换仪表盘中关联id的数据
* @param dragRelIdsDTO 映射关系实体
* @return
*/
void replacePageRelIdsCrossApp(DragRelIdsDTO dragRelIdsDTO);
}
@@ -0,0 +1,82 @@
package org.jeecg.common.easyoa.api;
import com.alibaba.fastjson.JSONObject;
import org.jeecg.common.constant.enums.FileTypeEnum;
import org.jeecg.common.system.vo.SysFilesModel;
/**
* EasyOA 公共API
* @author: jeecg-boot
*/
public interface IEasyOaBaseApi {
/**
* 获取公文发文模板
*
* @param fileId
* @param code
* @return
*/
JSONObject oaOfficialdocOrgancodeGetTemp(String fileId, String code);
/**
* 文号和模板id修改公文模板
* @param oaOfficialdocTemp 公文模板id,文号
* @return boolean true或false
*/
boolean oaOfficialdocTempEditByFiledId(JSONObject oaOfficialdocTemp);
/**
* 通过fileId查询所有
*
* @param filedId
* @return
*/
JSONObject oaOfficialdocTempGetTempByFileId(String filedId);
/**
* 通过fileId修改公文word名称
*
* @param filedId
* @param name
* @return
*/
boolean oaOfficialdocTempUpdateNameByFileId(String filedId, String name);
/**
* 根据wps文件id和机关代字修改模板文件id
*
* @param wpsId wps文件id
* @param fileId 文件id
* @param code 机关待字
*/
void oaOfficialdocUpdateFileId(String wpsId, String fileId, String code);
/**
* 添加文件到知识库
* @param sysFilesModel
*/
void addSysFiles(SysFilesModel sysFilesModel);
/**
* 通过文件路径获取文件id
* @param fileId
*/
String getFileUrl(String fileId);
/**
* 添加公共文件
* @param orgName
* @param fileType
* @param savePath
* @param size
*/
void addSysCommonFile(String orgName, FileTypeEnum fileType, String savePath, long size);
/**
* 根据文件id获取文件
* @param fileId
* @return
*/
SysFilesModel getFileById(String fileId);
}
@@ -0,0 +1,44 @@
package org.jeecg.common.lowapp.api;
import com.alibaba.fastjson.JSONObject;
import org.jeecg.common.lowapp.model.LowAppFormAuthRecordModel;
import java.util.List;
/**
* 【低代码应用】API接口
*
* @author sunjianlei
*/
public interface ILowAppBaseApi {
/**
* 获取 low app表单的查询 权限信息
* @param userId
* @param appId
* @param designFormCode
* @param authType read读取/update编辑/delete删除
* @return
*/
LowAppFormAuthRecordModel getLowAppReadAuth(String userId, String appId, String designFormCode, String authType);
/**
* 获取 low app表单的查询 权限信息
*
* @param userId
* @param appId
* @param designFormCode
* @return
*/
List<JSONObject> getLowAppFormFieldAllAuth(String userId, String appId, String designFormCode);
/**
* 根据表单ID或表单编码查询菜单(用于兼容新旧版本)
*
* @param desformId
* @param desformCode
* @return
*/
JSONObject getLowAppMenuByDesformIdOrCode(String lowAppId, String desformId, String desformCode);
}
@@ -0,0 +1,108 @@
package org.jeecg.common.miniflow;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.desform.vo.DesignFormDataVo;
import org.jeecg.common.lowapp.model.LowAppCopyMenu;
import org.jeecg.common.system.vo.LoginUser;
import java.util.Map;
/**
* 流程启动接口
*
* @author zyf
*/
public interface ISignalProcessStartApi {
/**
* 流程发布的时候,批量同步日期触发字段,生成定时job
*
* 逻辑说明:
* 发布流程的时候做一下操作
* 1.删除流程所有的,自定义流程定时器配置
* 2.查询符合条件的数据,插入定期器配置
* 3.删除流程、暂停流程,要不要清理定时器??
*
* 缺点:一条数据一个定期器,数据太多了
*
* @param processKey 流程 key
* @return
*/
void batchSyncDateFieldTriggerProcessJob(String processKey) ;
/**
* 纠正定时流程的开始时间
* (自定义corn定时规则时,无法指定开始时间,只能手工改下 act_ru_timer_job 的首次执行时间 DUEDATE_)
*
* @param processKey
*/
void setTimeTriggerProcessJobStartTime(String processKey) ;
/**
* 信号流程启动
* @param action 动作(add/update/delete)
* @param dataId 数据ID
* @param oldFormData 表单老数据 (非必填,动作为update、delete的时候传递)
* @param formKey 表单key
* @param applyUserId 发起人
* @return
*/
Result signalStartProcess(String action, String dataId, DesignFormDataVo oldFormData, String formKey, String applyUserId);
/**
* 按钮流程启动
* @param processId 流程ID
* @param inputParams 流程参数
* @param applyUserId 发起人
* @param dataId 数据ID
* @param formKey 表单code
* @return
*/
Result buttonStartProcess(String processId,String dataId, String formKey, String inputParams, String applyUserId);
/**
* 人员事件启动流程
*
* @param eventType 事件类型(1入职 2离职)
* @param loginUser 用户数据对象
* @param applyUserId 发起人
* @param tenantId 租户ID
* @return
*/
Result userStartProcess(Integer eventType, LoginUser loginUser, String applyUserId,String tenantId);
/**
* 复制low app下的流程信息
* @param lowAppCopyMenu
* 用到属性如下:
* appId 应用ID
* newAppId 复制流程信息用到-新的应用ID
* formCodeMapping 表单复制 原表单编码--> 新表单编码的映射关系
* isCrossTenant 是否跨租户复制流程
* @return
*/
Map<String, String> copyAppProcess(LowAppCopyMenu lowAppCopyMenu, Boolean isCrossTenant);
/**
* 备份low-app的工作流信息
* @param appId
* @param backupKey
*/
void backupAppProcess(String appId, String backupKey);
/**
* 还原备份low-app的工作流信息
* @param appId
* @param backupKey
*/
void coverAppProcess(String appId, String backupKey);
/**
* 删除流程信息
* @param appId
*/
void deleteAppProcess(String appId);
}
@@ -0,0 +1,73 @@
package org.jeecg.common.online.api;
import com.alibaba.fastjson.JSONObject;
import org.jeecg.common.lowapp.model.LowAppFormAuthRecordModel;
import org.jeecg.common.system.vo.DictModel;
import java.util.List;
import java.util.Map;
/**
* 表单设计器【Online】翻译API接口
*
* @author sunjianlei
*/
public interface IOnlineBaseExtApi {
/**
* 【Online】 表单设计器专用:同步新增
* @param tableName 表名
* @param jsonObject
* @throws Exception
* @return String
*/
String cgformPostCrazyForm(String tableName, JSONObject jsonObject) throws Exception;
/**
* 【Online】 表单设计器专用:同步编辑
* @param tableName 表名
* @param jsonObject
* @throws Exception
* @return String
*/
String cgformPutCrazyForm(String tableName, JSONObject jsonObject) throws Exception;
/**
* online表单删除数据
*
* @param cgformCode Online表单code
* @param dataIds 数据ID,可逗号分割
* @return
*/
String cgformDeleteDataByCode(String cgformCode, String dataIds);
/**
* 通过online表名查询数据,同时查询出子表的数据
*
* @param tableName online表名
* @param dataIds online数据ID
* @return
*/
JSONObject cgformQueryAllDataByTableName(String tableName, String dataIds);
/**
* 对 cgreportGetData 的返回值做优化,封装 DictModel 集合
* @param code
* @param dictCode
* @param dataList
* @param dictText 字典文本
* @return
*/
List<DictModel> cgreportGetDataPackage(String code, String dictText, String dictCode, String dataList);
/**
* 【cgreport】通过 head code 获取 sql语句,并执行该语句返回查询数据
*
* @param code 报表Code,如果没传ID就通过code查
* @param forceKey
* @param dataList
* @return
*/
Map<String, Object> cgreportGetData(String code, String forceKey, String dataList);
}
@@ -0,0 +1,33 @@
package org.jeecg.common.pay.api;
import org.jeecg.common.system.vo.SysPayVipVo;
/**
* @Description: 支付接口通用api
*
* @author: wangshuai
* @date: 2023/6/25 19:20
*/
public interface IPayBaseApi {
/**
* 验证当前登录用户是否为vip
* @return
*/
SysPayVipVo verifyVipIdentity();
/**
* 检查当前登录用户的短信发送是否超限
*
* @return 达到上限返回true
*/
boolean checkSmsSendLimit(Integer tenantId, String userId);
/**
* 当前登录用户短信发送次数加1
*
* @return
*/
boolean plusSmsCountYearUsed(Integer tenantId, String userId);
}
@@ -0,0 +1,547 @@
package org.jeecg.common.system.api;
import com.alibaba.fastjson.JSONObject;
import org.jeecg.common.api.CommonAPI;
import org.jeecg.common.api.dto.DataLogDTO;
import org.jeecg.common.api.dto.OnlineAuthDTO;
import org.jeecg.common.api.dto.message.*;
import org.jeecg.common.constant.enums.EmailTemplateEnum;
import org.jeecg.common.system.vo.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @Description 底层共通业务API,提供其他独立模块调用
* @Author scott
* @Date 2019-4-20
* @Version V1.0
*/
public interface ISysBaseAPI extends CommonAPI {
//=======OLD 系统消息推送接口============================
/**
* 1发送系统消息
* @param message 使用构造器赋值参数 如果不设置category(消息类型)则默认为2 发送系统消息
*/
void sendSysAnnouncement(MessageDTO message);
/**
* 2发送消息 附带业务参数
* @param message 使用构造器赋值参数
*/
void sendBusAnnouncement(BusMessageDTO message);
/**
* 3通过模板发送消息
* @param message 使用构造器赋值参数
*/
void sendTemplateAnnouncement(TemplateMessageDTO message);
/**
* 4通过模板发送消息 附带业务参数
* @param message 使用构造器赋值参数
*/
void sendBusTemplateAnnouncement(BusTemplateMessageDTO message);
/**
* 5通过消息中心模板,生成推送内容
* @param templateDTO 使用构造器赋值参数
* @return
*/
String parseTemplateByCode(TemplateDTO templateDTO);
//=======OLD 系统消息推送接口============================
//=======TY NEW 自定义消息推送接口,邮件、钉钉、企业微信、系统消息============================
/**
* NEW发送模板消息【新,支持自定义推送类型: 邮件、钉钉、企业微信、系统消息】
* @param message
*/
void sendTemplateMessage(MessageDTO message);
/**
* NEW根据模板编码获取模板内容【新,支持自定义推送类型】
* @param templateCode
* @return
*/
String getTemplateContent(String templateCode);
//=======TY NEW 自定义消息推送接口,邮件、钉钉、企业微信、系统消息============================
/**
* 6根据用户id查询用户信息
* @param id
* @return
*/
LoginUser getUserById(String id);
/**
* 7通过用户账号查询角色集合
* @param username
* @return
*/
List<String> getRolesByUsername(String username);
/**
* 7通过用户账号查询角色集合
* @param userId
* @return
*/
List<String> getRolesByUserId(String userId);
/**
* 8通过用户账号查询部门集合
* @param username
* @return 部门 id
*/
List<String> getDepartIdsByUsername(String username);
/**
* 8通过用户账号查询部门集合
* @param userId
* @return 部门 id
*/
List<String> getDepartIdsByUserId(String userId);
/**
* 8.2 通过用户账号查询部门父ID集合
* @param username
* @return 部门 parentIds
*/
Set<String> getDepartParentIdsByUsername(String username);
/**
* 8.2 查询部门父ID集合
* @param depIds
* @return 部门 parentIds
*/
Set<String> getDepartParentIdsByDepIds(Set<String> depIds);
/**
* 9通过用户账号查询部门 name
* @param username
* @return 部门 name
*/
List<String> getDepartNamesByUsername(String username);
/** 11查询所有的父级字典,按照create_time排序
* @return List<DictModel> 字典集合
*/
public List<DictModel> queryAllDict();
/**
* 12查询所有分类字典
* @return
*/
public List<SysCategoryModel> queryAllSysCategory();
/**
* 14查询所有部门 作为字典信息 id -->value,departName -->text
* @return
*/
public List<DictModel> queryAllDepartBackDictModel();
/**
* 15根据业务类型及业务id修改消息已读
* @param busType
* @param busId
*/
public void updateSysAnnounReadFlag(String busType, String busId);
/**
* 16查询表字典 支持过滤数据
* @param table
* @param text
* @param code
* @param filterSql
* @return
*/
public List<DictModel> queryFilterTableDictInfo(String table, String text, String code, String filterSql);
/**
* 17查询指定table的 text code 获取字典,包含text和value
* @param table
* @param text
* @param code
* @param keyArray
* @return
*/
@Deprecated
public List<String> queryTableDictByKeys(String table, String text, String code, String[] keyArray);
/**
* 18查询所有用户 返回ComboModel
* @return
*/
public List<ComboModel> queryAllUserBackCombo();
/**
* 19分页查询用户 返回JSONObject
* @param userIds 多个用户id
* @param pageNo 当前页数
* @param pageSize 每页显示条数
* @return
*/
public JSONObject queryAllUser(String userIds, Integer pageNo, Integer pageSize);
/**
* 20获取所有角色
* @return
*/
public List<ComboModel> queryAllRole();
/**
* 21获取所有角色 带参
* @param roleIds 默认选中角色
* @return
*/
public List<ComboModel> queryAllRole(String[] roleIds );
/**
* 22通过用户账号查询角色Id集合
* @param username
* @return
*/
public List<String> getRoleIdsByUsername(String username);
/**
* 23通过部门编号查询部门id
* @param orgCode
* @return
*/
public String getDepartIdsByOrgCode(String orgCode);
/**
* 24查询所有部门
* @return
*/
public List<SysDepartModel> getAllSysDepart();
/**
* 25查找父级部门
* @param departId
* @return
*/
DictModel getParentDepartId(String departId);
/**
* 26根据部门Id获取部门负责人
* @param deptId
* @return
*/
public List<String> getDeptHeadByDepId(String deptId);
/**
* 27给指定用户发消息
* @param userIds
* @param cmd
*/
public void sendWebSocketMsg(String[] userIds, String cmd);
/**
* 28根据id获取所有参与用户
* @param userIds 多个用户id
* @return
*/
public List<UserAccountInfo> queryAllUserByIds(String[] userIds);
/**
* 29将会议签到信息推动到预览
* userIds
* @return
* @param userId
*/
void meetingSignWebsocket(String userId);
/**
* 30根据name获取所有参与用户
* @param userNames 多个用户账户
* @return
*/
List<UserAccountInfo> queryUserByNames(String[] userNames);
/**
* 根据高级查询条件查询用户
* @param superQuery
* @param matchType
* @return
*/
List<JSONObject> queryUserBySuperQuery(String superQuery,String matchType);
/**
* 根据ID查询用户
* @param id
* @return
*/
JSONObject queryUserById(String id);
/**
* 根据高级查询条件查询部门
* @param superQuery
* @param matchType
* @return
*/
List<JSONObject> queryDeptBySuperQuery(String superQuery,String matchType);
/**
* 根据高级查询条件查询角色
* @param superQuery
* @param matchType
* @return
*/
List<JSONObject> queryRoleBySuperQuery(String superQuery,String matchType);
/**
* 根据租户ID查询用户ID
* @param tenantId 租户ID
* @return List<String>
*/
List<String> selectUserIdByTenantId(String tenantId);
/**
* 31获取用户的角色集合
* @param username
* @return
*/
Set<String> getUserRoleSet(String username);
/**
* 31获取用户的角色集合
* @param useId
* @return
*/
Set<String> getUserRoleSetById(String useId);
/**
* 32获取用户的权限集合
* @param userId
* @return
*/
Set<String> getUserPermissionSet(String userId);
/**
* 33判断是否有online访问的权限
* @param onlineAuthDTO
* @return
*/
boolean hasOnlineAuth(OnlineAuthDTO onlineAuthDTO);
/**
* 34通过部门id获取部门全部信息
* @param id 部门id
* @return SysDepartModel对象
*/
SysDepartModel selectAllById(String id);
/**
* 35根据用户id查询用户所属公司下所有用户ids
* @param userId
* @return
*/
List<String> queryDeptUsersByUserId(String userId);
/**
* 36根据多个用户账号(逗号分隔),查询返回多个用户信息
* @param usernames
* @return
*/
List<JSONObject> queryUsersByUsernames(String usernames);
/**
* 37根据多个用户ID(逗号分隔),查询返回多个用户信息
* @param ids
* @return
*/
List<JSONObject> queryUsersByIds(String ids);
/**
* 38根据多个部门编码(逗号分隔),查询返回多个部门信息
* @param orgCodes
* @return
*/
List<JSONObject> queryDepartsByOrgcodes(String orgCodes);
/**
* 39根据多个部门id(逗号分隔),查询返回多个部门信息
* @param ids
* @return
*/
List<JSONObject> queryDepartsByIds(String ids);
/**
* 40发送邮件消息
* @param email
* @param title
* @param content
*/
void sendEmailMsg(String email,String title,String content);
/**
* 40发送模版邮件消息
*
* @param email 接收邮箱
* @param title 邮件标题
* @param emailTemplateEnum 邮件模版枚举
* @param params 模版参数
*/
void sendHtmlTemplateEmail(String email, String title, EmailTemplateEnum emailTemplateEnum, JSONObject params);
/**
* 41 获取公司下级部门和公司下所有用户信息
* @param orgCode
* @return List<Map>
*/
List<Map> getDeptUserByOrgCode(String orgCode);
/**
* 查询分类字典翻译
* @param ids 多个分类字典id
* @return List<String>
*/
List<String> loadCategoryDictItem(String ids);
/**
* 反向翻译分类字典,用于导入
*
* @param names 名称,逗号分割
*/
List<String> loadCategoryDictItemByNames(String names, boolean delNotExist);
/**
* 根据字典code加载字典text
*
* @param dictCode 顺序:tableName,text,code
* @param keys 要查询的key
* @return
*/
List<String> loadDictItem(String dictCode, String keys);
/**
* 复制应用下的所有字典配置到新的租户下
*
* @param originalAppId 原始低代码应用ID
* @param appId 新的低代码应用ID
* @param tenantId 新的租户ID
* @return Map<String, String> Map<原字典编码, 新字典编码>
*/
Map<String, String> copyLowAppDict(String originalAppId, String appId, String tenantId);
/**
* 根据字典code查询字典项
*
* @param dictCode 顺序:tableName,text,code
* @param dictCode 要查询的key
* @return
*/
List<DictModel> getDictItems(String dictCode);
/**
* 根据多个字典code查询多个字典项
* @param dictCodeList
* @return key = dictCode value=对应的字典项
*/
Map<String, List<DictModel>> getManyDictItems(List<String> dictCodeList);
/**
* 【JSearchSelectTag下拉搜索组件专用接口】
* 大数据量的字典表 走异步加载 即前端输入内容过滤数据
*
* @param dictCode 字典code格式:table,text,code
* @param keyword 过滤关键字
* @param pageSize 分页条数
* @return
*/
List<DictModel> loadDictItemByKeyword(String dictCode, String keyword, Integer pageNo, Integer pageSize);
/**
* 新增数据日志
* @param dataLogDto
*/
void saveDataLog(DataLogDTO dataLogDto);
/**
* 更新头像
* @param loginUser
*/
void updateAvatar(LoginUser loginUser);
/**
* 向app端 websocket推送聊天刷新消息
* @param userId
*/
void sendAppChatSocket(String userId);
/**
* 根据角色id查询角色code
* @param id
* @return
*/
String getRoleCodeById(String id);
/**
* 根据roleCode查询角色信息,可逗号分隔多个
*
* @param roleCodes
* @return
*/
List<DictModel> queryRoleDictByCode(String roleCodes);
/**
* 根据部门ID查询用户ID
* @param deptIds
* @return
*/
List<String> queryUserIdsByDeptIds(List<String> deptIds);
/**
* 根据部门ID查询用户账号
* @param deptIds
* @return
*/
List<String> queryUserAccountsByDeptIds(List<String> deptIds);
/**
* 根据角色编码 查询用户ID
* @param roleCodes
* @return
*/
List<String> queryUserIdsByRoleds(List<String> roleCodes);
/**
* 根据职务ID查询用户ID
* @param positionIds
* @return
*/
List<String> queryUserIdsByPositionIds(List<String> positionIds);
/**
* 根据部门和子部门下的所有用户账号
*
* @param orgCode 部门编码
* @return
*/
public List<String> getUserAccountsByDepCode(String orgCode);
/**
* 检查查询sql的表和字段是否在白名单中
*
* @param selectSql
* @return
*/
boolean dictTableWhiteListCheckBySql(String selectSql);
/**
* 根据字典表或者字典编码,校验是否在白名单中
*
* @param tableOrDictCode 表名或dictCode
* @param fields 如果传的是dictCode,则该参数必须传null
* @return
*/
boolean dictTableWhiteListCheckByDict(String tableOrDictCode, String... fields);
}
@@ -0,0 +1,40 @@
package org.jeecg.common.wps.api;
import org.jeecg.common.wps.vo.OaWpsModel;
/**
* @Description: WPS通用接口
* @Author: wangshuai
* @Date:20200709
* @Version:V1.0
*/
public interface IWpsBaseApi {
/**
* 根据模板id获取模板信息
* @param id 模板id
* @return OaWpsModel对象
*/
OaWpsModel getById(String id);
/**
* 根据文件路径下载文件
* @param objectName 桶
* @param basePath 文件路径
* @param fileName 文件名称
*/
void downloadOosFiles(String objectName, String basePath, String fileName);
/**
* WPS 设置数据存储,用于逻辑判断
* @param type WPS存储值类别(1 code文号 2 text)
* @param text 存储文本
*/
void context(String type, String text);
/**
* 删除WPS模板文件相关信息
* @param id WPS模板文件id
*/
void deleteById(String id);
}
@@ -0,0 +1,107 @@
package org.jeecg.common.wps.vo;
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.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: 文档
* @Author: jeecg-boot
* @Date: 2020-06-09
* @Version: V1.0
*/
@Data
@TableName("oa_wps_file")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@Schema(description="公文文档")
public class OaWpsModel implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "id")
private String id;
/**
* name
*/
@Excel(name = "name", width = 15)
@Schema(description = "name")
private String name;
/**
* version
*/
@Excel(name = "version", width = 15)
@Schema(description = "version")
private Integer version;
/**
* size
*/
@Excel(name = "size", width = 15)
@Schema(description = "size")
private Integer size;
/**
* downloadUrl
*/
@Excel(name = "downloadUrl", width = 15)
@Schema(description = "downloadUrl")
private String downloadUrl;
/**
* deleted
*/
@Excel(name = "deleted", width = 15)
@Schema(description = "deleted")
private String deleted;
/**
* canDelete
*/
@Excel(name = "canDelete", width = 15)
@Schema(description = "canDelete")
private String canDelete;
/**
* 创建人
*/
@Schema(description = "创建人")
private String createBy;
/**
* 创建时间
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(description = "创建时间")
private Date createTime;
/**
* 更新人
*/
@Schema(description = "更新人")
private String updateBy;
/**
* 更新时间
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(description = "更新时间")
private Date updateTime;
/**
* 组织机构编码
*/
@Schema(description = "组织机构编码")
private String sysOrgCode;
@TableField(exist = false)
private String userId;
}