本文记录了村长用聚表/慧表捣鼓考试系统的心得,希望能启发您做出更多好玩的系统。
首先做个题库,包含单选,多选,判断题
题目
,选项
,答案
和图片
,如下图:考试模板主要有已答题计数
,题库相关字段,已选择的答案
,如下图
看着很丑,没关系,我们接下来要讲重点了。
在传统ES中这是一个难点,一般是通过EXCEL函数或者vba去生成不重复随机数,然后匹配抽题。
order by newid()
即可。上面是下一题
按钮的命令,主要包含三个部分:
1.将作答存入sheet2的回答字段,用来匹配记分。
2.当还有下一题(共10题)时,已答
数增1,提取题目,否则保存退出。
3.根据题目类型,设置相关答题按钮状态,例如判断题时只显示对错
按钮,否则显示ABCD
按钮。
答题按钮分对错
和ABCD
两组共6个,另外加一个重置按钮
,命令都是给主表答案
字段赋值。
使用聚表/慧表,可以轻松实现随机获取记录。
本文涉及的案例已打包成【六一库(180614)】←点击下载,欢迎下载玩耍。
本文记录了村长迁移到聚表/慧表后的各种感受,外加各种给力的高端功能玩法。
sp全称是spreadsheet,通常聚表/慧表模板默认使用该模式,其最大特点是客户端不再依赖EXCEL,因此带来了诸多好处,例如:
EXCEL加载项禁用
导致的ES闪退
啦;Automation 错误
;ActiveX控件出错
;office检测到此文件存在一个问题。要保护您的计算机……
除了完美避开各种office软件本身的坑,sp模式还带来了窗口尺寸可调,多窗口同时打开等灵活功能,怎一个美字了得?
聚表/慧表的数据表可定义为普通表
,临时表
,映射表
,支持灵活切换。
最实用的是字段可以设置为存
与不存
,这样我们就不用像ES那样费力依靠bug技术制作UD表
,直接一个表搞定,简单定义,轻松维护,快乐玩转3NF
。
聚表/慧表原生支持触发器/存储过程,当然,这跟SQL的触发器/存储过程有些区别。
与ES相比,聚表/慧表不需要费劲的使用vba来调用存储过程,只要设置一下,写好sql代码即可。
使用存储过程+中间表
这套 重器 ,官方开发了稳定支撑1000万行级的大型企业的仓储系统。
此项暂不赘述,本文后面介绍如何使用
万能提数
来快速实现适合中小企业的系统功能。
聚表/慧表包含一个html5类型的移动端APP,使用vue组件化开发。
APP支持IOS/安卓,同时也支持在微信中使用,可替换素材DIY自己的APP。
以前我们经常讲到,ES提数公式最稳定,而应尽量避免使用回写
公式。
聚表/慧表中的提数公式可以直接写sql,这就赋予了他更多更强的能力。
在ES中,如果我们要提取某个物料的最新采购单价
,一般要用两条提数公式,一条提取最新单价的日期,再一条根据这个日期去匹配提取单价信息。
使用聚表/慧表,我们可以手工修改提数公式的sql,加入not exists子查询
进行筛选
从而实现一步到位
提取最新单价及日期。
一般的,采购订单可能会有多次送货,例如:订单共下了10个,第一次送1个,第二次送2个……
那么,用户第一次填报时应该自动显示计划待收10个,第二次显示9个,第三次显示7个……
在ES中,这个功能通常做成视图
,然后再做成列表选择或提数。
使用聚表/慧表,我们可以一步到位提数
实现,手工加入left join
子查询,用订单数-已收数
得到待收数
从而实现第一次填时自动待收10
第二次待收9
这是MRP的核心预算功能,特别是成本预算中,我们要临时组合组件
来预算产品
成本,组件本身又可不断展开为下级组件
,层级数不确定。
在以往我们用ES开发时,只有两种选择:
一种是把数据先保存到数据库,然后依靠sql视图的CTE递归展开,这个视图运算量非常大,随着BOM的增加呈几何数量上升,性能差而且预算不即时
,因为需要先提交保存,再打开查看结果。
另一种办法是用vba把本表数据提交到数据库,调用存储过程进行计算,结果存入临时表,再从临时表提数到客户端进行显示。这种办法性能很好,但是维护困难,会有一堆又臭又长的vba以及sql代码要撸。
使用聚表/慧表提数,多快好省的解决了这个问题,同样的,手工编辑sql,将本表明细
传给cte递归的第一个部分,union all
后的第二个部分用现有BOM
表递归展开。
实际效果,第一次选择前置四驱
,自动展开:
第二次选择双电机四驱
,自动展开:
除此以外,提数sql还能写入update或insert,可以像ESAP的数据库API一样任你玩耍哦~
很多时候我们需要使用映射表来避免使用回写公式,聚表/慧表的映射表比ES更灵活。
例如:财务有一个的【凭证模板】
,通常我们希望一些单据在保存时可以自动生成这个凭证。
为了实现出库单自动凭证,可以在【出库单】建立sheet2,命名为pz,相关字段可以写死,即用=
号链接到sheet1
然后定义两个明细表分别映射到凭证主表
和凭证明细表
,为了能在【凭证】模板也显示,必须建立一个字段映射到Createtime
字段。
这样,当我们保存【出库单】后,就可以看到【凭证】中也有了单据。
比ES更灵活的是,在凭证中删除该凭证后,出库单不会影响,而重存出库单可以再次生成凭证。
聚表/慧表提供的报表命令,取代了vba,轻松实现更多更好方案。
例如,报表命令的事件可以调用表间公式,而表间公式可以直接写sql使用本表字段作为变量,这就提供了无限的想象。
通过报表命令+提数
轻松实现ES很难实现的BOM逐行双击展开演示
+
号前置四驱
,展开振金
,展开JU的回写也能直接写SQL,这看起来可以干一票大的^_^,一些在ES中难以想象的事情。
通过映射+回写
实现数据快速导入(新建表单)
通常在ES中,我们要批量新建表单就必须用回写中的新建表单公式
,一般的做法是开发一个模板,填数或提数,然后通过保存时-回写新建表单
来创建这些表单,实际上我们是把数据存入A表,然后再新建B表,一份数据保存了两次。
在JU中,我们可以把A模板的明细直接映射到B表,不需要回写新建表单
,数据保存一次即可,速度快N倍啊有木有。
往来单位
到JU时就用了这招,先建立往来单位
模板,此时空空如也。往来单位表
,增加两个特殊列,createtime和recordid,设置好自动生成公式。100
是当前系统RecordId
的最大编号,从系统表JU_Seed
表直接提数拿到。主表字段(rcid2)的103
这个数是完成导入后要回写到JU_seed表的新最大编号移花接木
的既视感!使用聚表/慧表,我们可以告别UD表
和vba,也能少写很多视图
。
本文涉及的部分案例已打包成【六一库(180611)】←点击下载,欢迎下载玩耍。
最后,祝童鞋们六一快乐,恭喜聚表/慧表六一版(2.6.1)发布。
本文将不定期解锁更多的好玩的姿势。
本文记录了esap示例库迁移到聚表/慧表(JU)的过程。
说是”迁移”,其实是重建,因为两者的架构不一样,所以我们需要三步走:
首先从ES导出模板,这里我选择导出ESAP_关于
模板,这个模板可以顺带导出所有其他模板。
原理很简单,用一条提数公式,引用所有需要导出的模板即可。
导入模板前,先要对模板进行加工,因为ES模板并不能直接导入JU,只能导入excel表样。
因此,需要把所有的.es
后缀的文件改成.xls
后缀,也就是正常的EXCEL表格。
改名后的文件如下:
接下来,就可以在聚表中重建这些模板了,导入xls文件表样。
模板全部导入大概花费几分钟,重建后是这样:
通常只需要导入主数据
,例如物料表,商品表,客户信息等。
一般地,设计一个批量导入模板,批量新建回写这些数据即可。
可以将ES库注册为JU的外部数据源,这样可以直接从ES提数。
图片、附件不能直接提数回写,这里村长使用ESAP(v3.0.22+)新增的转换工具来达成目的。
注意:ES与JU要求安装在同一服务器上,并且ES数据库、网盘也都在该服务器
以商品表为例,ES商品表中部分表单有图片如下:
而JU商品表还没有图片,如下:
我们登陆到ESAP云管理台,配置主数据库为聚表所在的库。
关闭ES模式,开启JU盘,设置好路径
注意,该路径应该与聚表服务器设置一致,并且聚表开启了网盘。
进入ES2JU转存工具
,设置好相关参数,确保准确无误,注意JU盘要带上账套名
。
点击转存图片
按钮完成转存。
附件同理,设置好表字段等参数后,点击转存附件
按钮,最终完成效果如下:
目前从ES迁移到JU基本意味着模板重建,但是好在ES模板可以导出改名,作为表样导入,可以节省一部分重建工作。
迁移最麻烦的实际是图片和附件,目前ESAP3.0.22+云平台可以完成这部分工作,但只能逐个字段进行。
最后,迁移系统前,一定要多测试,确保无误后再投入生产环境。
通常,在生产企业中,一线员工按计件计算收入,入库作为关键环节,需要投入大量统计核对工作,本文记录了半年来我们在这一领域的新应用研发和突破。
改进前:传统的入库需要员工填报各种纸质单据,放到入库的成品中,然后由车间统计员根据纸质单据,核验数量(重量),填写电子入库单,检验、仓管依次做相关校验审核。
改进后:员工通过手机(微信)扫码,自行核验数量上报,检验、仓管依次做相关校验审核。
此方案预计可以节省统计人员若干,同时还能增加入库记录细节,可以记录每箱(筐)的数量(重量),员工甚至可以立即获知自己的计件工资收入情况。
func main() {
// 打开配置文件
fd, err := ioutil.ReadFile(filepath.Dir(os.Args[0]) + Confile)
E(err, "打开配置出错")
// 解析数据库连接信息
E(json.Unmarshal(fd, &C), "解析配置出错")
// 连接数据库
dsn := fmt.Sprintf(C.Dsn)
db, err = sql.Open("odbc", dsn)
E(err, "打开数据库出错")
defer db.Close()
// 打开串口
log.Printf("串口: %s 波特率: %d\n", C.COM, C.Baud)
s, err := serial.OpenPort(&serial.Config{Name: C.COM, Baud: C.Baud})
E(err, "打开串口出错")
defer s.Close()
// 循环扫描串口数据存入数据库,间隔500ms
for range time.Tick(500 * time.Millisecond) {
saveData(s)
}
}
两年前,微软着手拥抱开源,开放自家平台,甚至搞出mssql运行在Linux上的震惊计划。
mssql是使用最为广泛的一种企业级数据库,linux是整个服务器领域的操作系统霸主,强强联手,稳如磐石。
而相较于 windows + mssql 动辄 20G+
的基本空间占用,linux + mssql 才 2G
,堪称神器,这也是为什么国内很多银行开始纷纷采用该方案。
linux发行版,村长选择了centos7
版本选择DVD ISO,从阿里云镜像下载:http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso
下载后,用hyper-v进行安装,虚拟内存设置要大于2G,其他安装设置默认即可,村长在【软件选择】中勾选了【开发工具】
然后配置自动分区后即可下一步安装了,安装过程中可以配置root密码。
安装完成后重启,输入root和密码登陆,使用命令df -h
查看一下空间占用情况,总共才1.3G,是不是很惊艳?
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo
sudo yum install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup
systemctl status mssql-server
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload
OK,现在我们就获得了一台稳如磐石的linux版mssql服务器了,村长这台服务器IP为 192.168.1.222
我们可以通过其他网内的计算机连接该sqlserver,村长创建了一个 ju
数据库备用
目前ES平台百花齐放,村长准备用聚表/慧表
(Juable/Nxcells,以下简称JU)来代替以前的X哲,X表平台,首先安装2.3.22版
进入【服务器端配置】,设置数据源服务器到linux版sql服务器IP,输入之前配置的sa密码,测试连接
sudo yum install -y samba samba-client
sudo mkdir -p /mnt/tmp
sudo mount -t cifs -o username=administrator,password=123 //192.168.1.200/c$ /mnt/tmp
sudo mv /mnt/tmp/blank.bak /var/opt/mssql/data/ju.bak
解析:上面命令首先安装了samba,samba-client文件共享协议和客户端,然后创建了/mnt/tmp目录用来挂载我本机C盘,其中192.168.1.200是我本机IP,事先我已把JU的blank.bak复制到了c盘根目录,方便拷贝,最后一个命令就是将bak移动到了centos的/var/opt/mssql/data目录下,并重命名为ju.bak
/var/opt/mssql/data/ju.bak
,恢复即可。感谢 @Juable-杨工
提供的特别版JU服务器配置管理程序。
目前经过一系列测试,linux版sql基础性能与sql2008r2相仿,只需要2G空间,神图镇楼: