这里说的大屏是指大屏幕报表
展示,现在,它还有许多酷炫的叫法,诸如:仪表盘
,驾驶舱
,或者更加洋气的BI
。
村长经常溜娃的宁波图书馆
也有这么一块大屏:
如何实现这些高逼格、酷炫狂拽屌炸天的大屏呢?
答案往下拉:
第一,需要一个大屏幕,经济方案可以找几个超薄边框显示器(壁挂电视)拼接,6个或9个。例如下面这个是大神wang sir的树莓派6分屏大屏:
第二,需要数据,通常这些数据来自ERP等企业信息化系统,例如用ju/nx/es汇集一个数据表或视图如下:
第三,需要前端html5模板,以及后端api获取ERP中的数据,最终demo使用百度sugar做为前端,效果如下:
经过村长攻关后,esap-api已经可以轻松对接百度sugarBI了,所以技术方面就只剩下设置
了。
主要有三种类型的api设置:
esap-api: /api4/模板id
输出字段:value
esap-api: /api3/模板id
输出字段:value
,name
esap-api: /api5/模板id
输出字段:value
,name
,cate
esap-api: /api6/模板id
输出字段: 任意
目前sugar为免费使用,其他效果如下:
使用esap-api连接数据库和sugarBI,实现大屏展示。
2019-05-27
目前sugar已经开始收费了……
客户甲:我们在某个孤岛上有个塔台监测站,没有网络,如何把电脑数据传回大陆机房。
客户乙:我们的生产线工控机有很多机密数据,不能连网,如何把工控机的部分数据传回数据中心。
在电脑没网线,没WIFI的情况下,通常选择GPRS来定向传输,下面就是采集小外设:
SIM800C
+GPRS物联卡
直接插在电脑USB接口上即可
安装USB转串口驱动后,会得到一个COM口,这里是COM3
使用NX3.1为例,设置打开串口
按钮
设置连接GRPS
按钮,示例中的tcpwc.erp8.net:19999
就是远程数据中心主机
设置自动发送数据
按钮,数据区域的记录将会使用AT+CIPSEND
逐条发送到远程主机。
动画中可以看到远程主机与本地的通信和传输过程:
读取工控机数据库,串口通信发给SIM800C,通过GPRS让数据飞一会,最终到达数据中心。
2019-04-30
定期扫描数据表,将结果以表格形式发给相关人。
这里假设用户扫描商品表并发送结果,扫描结果如下:
在ESAP根目录/sql/esap
目录下复制email.get
和email.put
模板文件,修改为自定义模板,例如加入后缀.my
email.get副本
中的sql代码如下:
自定义邮件配置,仍然使用ES系统邮件配置
{{define "email.conf.my"}}
SELECT
isnull(SmtpServer,'') server,
isnull(SmtpPort,0) port,
isnull(SmtpAuth,0) auth,
isnull(SmtpUseSSL,0) ssl,
isnull(EmailSender,'') sender,
isnull(EmailAddress,'') addr,
isnull(EmailPassword,'') pwd
FROM essystem..es_sysinfo
{{end}}
自定义邮件提醒
{{define "email.my"}}
select
'woylyn@qq.com' mailto,
'备库提醒' subject,
'下列商品请注意备库存:<br><table border="1">' + replace(
(select '品号' as th ,'品名' as th_,'类别' as th__,'库存' as th___ for xml path('tr'))
+ (select 号 as td , 名 as td_,类 as td__,0 as td___ from 品 for xml path('tr')
),'_','') + '</table>' content,
'' pic,
'' files,
0 id,
'' mailfrom,
'' pwd
{{end}}
自定义邮件扫描sql代码执行效果如下,主要使用replace函数和for xml path拼接构造html表格标签。
email.put副本
中的sql代码如下,是个空模板,不做任何操作:
{ {define "email.my"} }
{ {end} }
配置esap,加入邮件提醒计划,设置每天9点,配置加入后缀.my
,启动即可。
加入样式,实现更美观的表格邮件:
1.主要应用esap自定义邮件提醒,使用自定义sql模板。
2.使用replace函数和for xml path拼接构造html表格标签
本文示例ES数据库与往期相同,不再提供额外下载。
2019-04-24
A公司提供appid和appkey给B公司,B公司使用appid和appkey先从A公司API拿到access_token,再用access_token去请求其他业务数据。
典型的Oauth2鉴权,让数据请求更加安全。
本案演示如何使用ESAP实现完整的请求和处理流程。
改造上一篇文章的demo系统,加入oauth2
模板。
主要包含appid
,appkey
和keyword
三个关键字段,appid和appkey分发给不同供应商使用。
加入accesstoken
模板,用于存放accesstoken鉴权,主要包括keyword,accesstoken,createtime三个字段。
Tips: createtime主要用于定期清理过期的accesstoken,本案不再赘述。
配置好ESAP,在ESAP根目录/sql/api2/
下配置gettoken
sql模板:
{{define "gettoken"}}
declare @accesstoken nvarchar(50)
declare @keyword nvarchar(50)
--验证appid和appkey
set @keyword=(select keyword from oauth2 where appid='{{.appid}}' and appkey='{{.appkey)}}'
if @keyword is not null
begin
--生产accesstoken
set @accesstoken='{{uuid}}'
insert accesstoken(keyword,accesstoken,createtime) values(@keyword,@accesstoken,getdate())
--返回正常的access_token和expires_in
select @accesstoken as access_token,7200 as expires_in
end
else
begin
--返回失败信息
select -1 as errcode,'错误的id或key' as errmsg
end
{{end}}
请求成功时效果如下:
失败时(appkey错误),效果如下:
修改getpurchaseorder
sql模板,将原来的name
改为子查询:
{{define "getpurchaseorder"}}
select
订.交期,
订.号,
订.供方,
单.品,
单.品名,
单.数,
单.单位
from 订
inner join 单 on 订.excelserverrcid=单.excelserverrcid
where 订.类='采购'
and 订.供方=(select keyword from accesstoken where accesstoken=:access_token)
{{end}}
B公司NX系统在外部接口追加gettoken
接口。
根据esap查询结果,gettoken
关键表结构设置如下:
修改getpurchaseorder
接口,传入参数改为access_token
,其他不变。
修改待确认采购单
模板,增加accesstoken提数公式,通过API提取:
修改外部采购单
提数公式,传入参数改为上一个提数的结果,即access_token:
appid和appkey正确时,将获得对应绑定供应商的订单数据:
主要应用esap构建API微服务。
本文涉及的数据库备份可在ESAP水镜禅院中下载。
2019-04-04
A公司是客户,下采购单;B公司是供应商之一,收到邮件通知后,希望从A公司ERP系统获取相关订单数据并导入自己公司的ERP系统。
典型的现代供应链系统工作方式,告别传统手工录单。
通常,两家公司的系统是不一样的,只能通过Internet通信,像下图这样。
如果是在局域网,可以直接在B公司系统中注册A公司系统的数据库为外部源。
* 但是,在广域网,应该禁止直接暴露数据库端口1433,这非常危险。*
本案采用ESAP构建当下流行的API微服务,A公司仅暴露需要的数据,B通过api获取采购订单数据。
假设A使用ES系统,下若干采购单给不同供应商。
订单数据使用sql查询结果如下:
配置好ESAP,在ESAP根目录/sql/api2/
下配置getpurchaseorder
sql模板:
{ {define "getpurchaseorder"} }
select
订.交期,
订.号,
订.供方,
单.品,
单.品名,
单.数,
单.单位
from 订
inner join 单 on 订.excelserverrcid=单.excelserverrcid
where 订.类='采购'
and 订.供方=:name
{ {end} }
api访问效果如下,name代入特斯拉
获得特斯拉相关采购订单:
假设B公司使用NX,在外部接口中注册这个接口。
根据esap查询结果,getpurchaseorder
关键表结构设置如下:
建立待确认采购单
模板,设置表间公式从API提数,表字段一一对应。
特斯拉供应商:
华为供应商:
主要应用esap构建API微服务。
A公司可以是任意基于sql的系统。
B公司系统需要支持API提数。
本文涉及的数据库备份可在ESAP水镜禅院中下载。
2019-04-03