ecology_dev/常用信息.md

495 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 常用的数据信息
## 其他
> 维护人员: youhong.ai
+ 缓存地址: `/commcache/cacheMonitor.jsp`
+ 移动端流程模拟地址: `/spa/workflow/static4mobile/index.html#/center/doing`
## 常用代码
### 前端
**1.获取用户信息**
> 维护人员youhong.ai
```javascript
const userInfo = JSON.parse(localStorage.getItem("theme-account"))
```
**2.ecode访问上传的resource静态文件**
```javascript
let src = "/cloudstore/release/${appId}/resources/"
```
**3.获取url参数**
> 维护人员: youHong.ai
```javascript
getQueryString = (name) => {
let reg = new RegExp("(^|&|\/?)" + name + "=([^&]*)(&|$)", "i");
let searchStr = window.location.href
if (searchStr.startsWith('&')) {
searchStr = searchStr.substr(1)
}
search = searchStr.match(reg)
if (search != null) {
return unescape(search[2]);
}
return null;
}
```
**4.ajax请求**
> 维护人员: youHong.ai
```javascript
class ApiUtils {
static request = (url, type = "GET", data, isAsync = true, success = () => {
}, error = () => {
}, complete = () => {
}, contentType = 'application/json', beforeSend = () => {
}) => {
let options = {
url,
type,
dataType: "json",
contentType,
async: isAsync,
data,
beforeSend,
success,
error,
complete,
}
if (contentType == 'application/json') {
options.data = JSON.stringify(data)
}
return $.ajax(options)
}
}
```
**5.通过js获取react组件操作组件内部数据**
```javascript
function FindReact(dom, traverseUp = 0) {
const key = Object.keys(dom).find(key => {
return key.startsWith("__reactFiber$") // react 17+
|| key.startsWith("__reactInternalInstance$"); // react <17
});
const domFiber = dom[key];
if (domFiber == null) return null;
// react <16
if (domFiber._currentElement) {
let compFiber = domFiber._currentElement._owner;
for (let i = 0; i < traverseUp; i++) {
compFiber = compFiber._currentElement._owner;
}
return compFiber._instance;
}
// react 16+
const GetCompFiber = fiber => {
let parentFiber = fiber.return;
while (typeof parentFiber.type == "string") {
parentFiber = parentFiber.return;
}
return parentFiber;
};
let compFiber = GetCompFiber(domFiber);
for (let i = 0; i < traverseUp; i++) {
compFiber = GetCompFiber(compFiber);
}
return compFiber.stateNode;
}
// 用法
const someElement = document.getElementById("someElement");
const myComp = FindReact(someElement);
myComp.setState({test1: test2});
```
**6.ecode集成iconfont**
```css
/*修改url字体文件上传到cloudstore/iconfont/xx/下,没有目录自己创建*/
/*修改font-family,命名为其他名称防止与系统自带的或与其他iconfont冲突*/
@font-face {
font-family: "cus_iconfont"; /* Project id 3789451 */
src: url('/cloudstore/iconfont/pcn/iconfont.woff2?t=1669223019749') format('woff2'),
url('/cloudstore/iconfont/pcn/iconfont.woff?t=1669223019749') format('woff'),
url('/cloudstore/iconfont/pcn/iconfont.ttf?t=1669223019749') format('truetype');
}
/*修改iconfont类名为font-family的名称*/
.cus_iconfont {
font-family: "cus_iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
```
### 数据库
**备份mysql数据库**
> 维护人员: youHong.ai
```shell
mysqldump -uroot -p'passowrd' --single-transaction -R -E --databases ecology_dev> /tmp/ecology_dev_back.sql
```
**mysql常用视图**
```sql
-- 流程类型视图,可用于数据集成或流览按钮
create
or replace view workflow_type_info_view as
select wb.id,
wb.workflowname,
wt.typename,
wb.workflowdesc,
(IF(wb.version is null, 1, wb.version)) version
from workflow_base wb
RIGHT JOIN workflow_type wt on wb.workflowtype = wt.id;
-- 流程表单视图,用于流览按钮或数据集成,配置流程类型表可以用字段联动获取流程表表名
create
or replace view workflow_table_view as
select base.id,
base.workflowname,
base.formid,
bill.tablename,
(IF(base.version is null, 1, base.version)) version
from workflow_bill bill
join workflow_base base on base.formid = bill.id;
-- 流程明细表信息,可用流程主表查询对应的明细表信息,用于流览框
create
or replace view workflow_detail_table_view as
select CONCAT(bill.id, '-', base.id) id,
bill.id bill_id,
base.id workflow_id,
base.workflowname,
base.formid main_formid,
bill.tablename
from workflow_billdetailtable bill
join workflow_base base on base.formid = bill.billid;
-- 流程和建模字段视图更具流程和建模的billid可以查询流程和建模中的字段信息
create
or replace view workflow_field_table_view as
select wb.id,
wb.fieldname,
concat(ht.indexdesc, '', wb.fieldname) indexdesc,
(
case
when wb.detailtable is null then (select distinct tablename from workflow_bill where id = wb.billid)
when wb.detailtable = ''
then (select distinct tablename from workflow_bill where id = wb.billid)
else wb.detailtable
end
) tablename,
billid,
(
case
when wb.detailtable = '' then 'main table'
when wb.detailtable is null then 'main table'
else wb.detailtable end
) showtablename,
(case
when wb.fieldhtmltype = '1' then '单行文本框'
when wb.FIELDHTMLTYPE = '2' then '多行文本框'
when wb.FIELDHTMLTYPE = '3' then '流览框'
when wb.FIELDHTMLTYPE = '4' then 'check框'
when wb.FIELDHTMLTYPE = '5' then '选择框'
else '附件上传' end) fieldhtmltype
from workflow_billfield wb
left join htmllabelindex ht on wb.fieldlabel = ht.id;
-- 建模表信息视图
create
or replace view mode_bill_info_view as
select bill.id, bill.tablename, hti.indexdesc
from workflow_bill bill
left join htmllabelindex hti on hti.id = bill.namelabel
where bill.id < 0
and bill.tablename like 'uf%';
-- 流程节点信息视图
create
or replace view workflow_node_info_view as
select distinct nb.id,
nb.nodename,
(case when wb.version is null then 1 else wb.version end) version,
fn.workflowid
from workflow_nodebase nb
left join workflow_flownode fn on nb.id = fn.nodeid
left join workflow_base wb on wb.id = fn.workflowid;
```
**oracle常用视图与mysql对应**
```sql
create
or replace view workflow_type_info_view as
select wb.id,
wb.workflowname,
wt.typename,
wb.workflowdesc,
(IF(wb.version is null, 1, wb.version)) version
from workflow_base wb
RIGHT JOIN workflow_type wt on wb.workflowtype = wt.id
/
create
or replace view workflow_table_view as
select base.id,
base.workflowname,
base.formid,
bill.tablename,
(IF(base.version is null, 1, base.version)) version
from workflow_bill bill
join workflow_base base on base.formid = bill.id
/
create
or replace view workflow_detail_table_view as
select (bill.id || '-' || base.id) id,
bill.id bill_id,
base.id workflow_id,
base.workflowname,
base.formid main_formid,
bill.tablename
from workflow_billdetailtable bill
join workflow_base base on base.formid = bill.billid
/
create
or replace view workflow_field_table_view as
select wb.id,
wb.fieldname,
(ht.indexdesc || '' || wb.fieldname) indexdesc,
(
case
when wb.detailtable is null then (select distinct tablename from workflow_bill where id = wb.billid)
when wb.detailtable = ''
then (select distinct tablename from workflow_bill where id = wb.billid)
else wb.detailtable
end
) tablename,
billid,
(
case
when wb.detailtable = '' then 'main table'
when wb.detailtable is null then 'main table'
else wb.detailtable end
) showtablename,
(case
when wb.fieldhtmltype = '1' then '单行文本框'
when wb.FIELDHTMLTYPE = '2' then '多行文本框'
when wb.FIELDHTMLTYPE = '3' then '流览框'
when wb.FIELDHTMLTYPE = '4' then 'check框'
when wb.FIELDHTMLTYPE = '5' then '选择框'
else '附件上传' end) fieldhtmltype
from workflow_billfield wb
left join htmllabelindex ht on wb.fieldlabel = ht.id
/
create
or replace view mode_bill_info_view as
select bill.id, bill.tablename, hti.indexdesc
from workflow_bill bill
left join htmllabelindex hti on hti.id = bill.namelabel
where bill.id < 0
and bill.tablename like 'uf%'
/
create
or replace view workflow_node_info_view as
select distinct nb.id,
nb.nodename,
(case when wb.version is null then 1 else wb.version end) version,
fn.workflowid
from workflow_nodebase nb
left join workflow_flownode fn on nb.id = fn.nodeid
left join workflow_base wb on wb.id = fn.workflowid
/
```
**sqlserver常用视图与mysql对应**
```sql
create view workflow_type_info_view as
select wb.id,
wb.workflowname,
wt.typename,
wb.workflowdesc,
(
IF(wb.version is null, 1, wb.version)) version
from workflow_base wb
RIGHT JOIN workflow_type wt on wb.workflowtype = wt.id;
create
or replace view workflow_table_view as
select base.id,
base.workflowname,
base.formid,
bill.tablename,
(
IF(base.version is null, 1, base.version)) version
from workflow_bill bill
join workflow_base base on base.formid = bill.id;
create
or replace view workflow_detail_table_view as
select (bill.id + '-' + base.id) id,
bill.id bill_id,
base.id workflow_id,
base.workflowname,
base.formid main_formid,
bill.tablename
from workflow_billdetailtable bill
join workflow_base base on base.formid = bill.billid;
create view workflow_field_table_view as
select wb.id,
wb.fieldname,
(ht.indexdesc + '' + wb.fieldname) indexdesc,
(
case
when wb.detailtable is null then (select distinct tablename from workflow_bill where id = wb.billid)
when wb.detailtable = ''
then (select distinct tablename from workflow_bill where id = wb.billid)
else wb.detailtable
end
) tablename,
billid,
(
case
when wb.detailtable = '' then 'main table'
when wb.detailtable is null then 'main table'
else wb.detailtable end
) showtablename,
(case
when wb.fieldhtmltype = '1' then '单行文本框'
when wb.FIELDHTMLTYPE = '2' then '多行文本框'
when wb.FIELDHTMLTYPE = '3' then '流览框'
when wb.FIELDHTMLTYPE = '4' then 'check框'
when wb.FIELDHTMLTYPE = '5' then '选择框'
else '附件上传' end) fieldhtmltype
from workflow_billfield wb
left join htmllabelindex ht on wb.fieldlabel = ht.id;
create view mode_bill_info_view as
select bill.id, bill.tablename, hti.indexdesc
from workflow_bill bill
left join htmllabelindex hti on hti.id = bill.namelabel
where bill.id < 0
and bill.tablename like 'uf%';
create view workflow_node_info_view as
select distinct nb.id,
nb.nodename,
(case when wb.version is null then 1 else wb.version end) version,
fn.workflowid
from workflow_nodebase nb
left join workflow_flownode fn on nb.id = fn.nodeid
left join workflow_base wb on wb.id = fn.workflowid;
```
### 后端
**1.后端根据请求获取登录用户信息**
> 维护人员xuanran.wang
```java
//@Context HttpServletRequest request, @Context HttpServletResponse response
User logInUser=HrmUserVarify.getUser(request,response);
// 传入id会将此人员信息带出
User user=new User(id);
// 获取人员id
user.getUID();
```
**2.发送邮件**
> 维护人员xuanran.wang
```java
/**
* <h1>发送邮件</h1>
* @param address 邮箱地址
* @param title 标题
* @param content 正文
**/
EmailWorkRunnable.threadModeReminder(address,title,content);
```
> 维护人员: youHong.ai
```java
/**
* <h2>发送附件邮件</h2>
* @param sendTo 收件人邮箱地址(多个值之间用英文逗号分隔)
* @param sendCc 抄送人邮箱地址(多个值之间用英文逗号分隔)
* @param sendBcc 密送人邮箱地址(多个值之间用英文逗号分隔)
* @param subject 主题
* @param content 内容
* @param imageFileIds 附件id
*/
EmailWorkRunnable.threadModeReminder(sendTo,sendCc,sendBcc,subject,content,imageFileIds);
```
或者
```java
/*
@param sendTo 收件人邮箱地址(多个值之间用英文逗号分隔)
@param sendCc 抄送人邮箱地址(多个值之间用英文逗号分隔)
@param sendBcc 密送人邮箱地址(多个值之间用英文逗号分隔)
@param subject 主题
@param content 内容
@param imageFileIds 附件id
*/
EmailWorkRunnable emailWorkRunable=new EmailWorkRunnable(sendTo,sendCc,sendBcc,subject,content);
emailWorkRunable.setImagefileids(imageFileIds);
MailCommonUtils.executeThreadPool(EmailPoolSubTypeEnum.EMAIL_SYS_ALTER.toString(),emailWorkRunable);
```
**3.短信服务**
> 维护人员xuanran.wang
```java
public class SendSms implements SmsService {
@Override
public boolean sendSMS(String smsId, String number, String msg) {
//执行短信调用接口逻辑
return SMSUtil.sendSms(number, msg, url, sn, pwd);
}
}
```
**4.三方插件文档转PDF(培训群找过来的)**
> 维护人员xuanran.wang
```java
//wps转PDF
DocImagefileToPdfUseWps toPdfUseWps=new DocImagefileToPdfUseWps();
newimagefileid=toPdfUseWps.officeDocumetnToPdfByImagefileid(docimagefileid);
//永中转PDF
DocImagefileToPdf yozoToPdf=new DocImagefileToPdf();
newimagefileid=yozoToPdf.officeDocumetnToPdfByImagefileid(docimagefileid);
```