中间层定时读取检验设备输出结果
中间层支持定时读取指定类型的检验结果文件到数据库中,以便后续报工或者包装时判断品质状况
当前支持从Excel文件,文本文件,数据库中读取检验结果
配置
在中间层appsettings.json文件OpenFlowSettings下增加配置内容:
"OpenFlowApiSettings": {
... ,
... ,
... , //其他的配置,配置之间用**逗号**分隔开
"TimingReadFile": { //配置自动读取文件
"IntervalMinutes": 1, //定时任务执行周期,单位是分钟 ,分钟与下面的秒不用同时配置,可以只保留一个
"IntervalSeconds": 5, //定时任务执行周期,单位为秒 ,与上面按分钟参数只需要设置其中一个,当设置了按分钟时则按照秒设置无效
"PathInfo": [
{
"FileType":"FILE_SY01" , //当前能够解析的文件内容,只能使用特定参数 ,如果未设置此参数默认按照三烨的格式读取
"DeviceNo": "123", //对应的设备代码,应与ERP中设备编码一致
"ShareDir": "\\\\pc1\\share1" //该设备生成的文件的存放路径,一般为网络共享路径,注意需要使用**双斜线**表示路径
},
{
"FileType":"FILE_GX01" , //只能设置为指定的字符串,随意设置会导致读取出错
"DeviceNo": "321", //配置多台设备
"ShareDir": "\\\\pc2\\share2" //注意是**双斜线**
} ,
{
"FileType":"DB_SQL" , //表示从数据库中读取数据
"DeviceNo": "321", //对应的设备编码
"ConnectionString": "server=;uid=sa;pwd=;database=" //数控连接信息,表示从此数据库中读取检验参数
}
],
"ConnectionString": "server=;uid=sa;pwd=;database=" //数据库连接信息
}
}
FileType | 说明 | 文件类型 |
---|---|---|
FILE_SY01 | 三烨格式1 | excel |
FILE_SY02 | 三烨格式2 | excel |
FIlE_GX01 | 谷鑫格式1 | csv |
FILE_YK01 | 盈科格式1 | ini |
FILE_WX01 | 维玺1 | csv |
FILE_AFN_SI | 安费诺 SI | xlsx |
FILE_AFN_HIPOT | 安费诺 HiPot | csv,pdf |
FILE_AFN_CCD3D | 安费诺 CCD 3d | csv |
FILE_AFN_CCDOSFP | 安费诺 CCD OSFP | csv |
FILE_AFN_CCDEXE | 安费诺 EXE | csv |
DB_SQL | 从SQL Server数据库读取数据 | 数据库 |
下面的内容是一个完整的例子,可以拷贝到项目中修改:
{
"OpenFlowApiSettings": {
"SchedulerBaseUrl": "5566",
"OpenFlowApiPort": "8003",
"OpenFlowApiName": "OpenFlowApiService",
"OpenFlowSettings": {
"MicroErpDbConnection": {
"OpenFlowConnection": ""
},
"TimingReadFile": {
"IntervalMinutes": 1,
"PathInfo": [
{
"FileType": "FILE_SY01",
"DeviceNo": "abc",
"ShareDir": "\\\\server1\\share1"
},
{
"FileType": "FILE_GX01",
"DeviceNo": "567",
"ShareDir": "\\\\server2\\share2"
},
{
"FileType": "DB_SQL",
"DeviceNo": "567",
"ConnectionString":"server=.;uid=sa;pwd=123;database=db01"
}
],
"ConnectionString": "server=.;uid=sa;pwd=123;database=test"
}
},
"OpenFlowSingleOptions": {
}
}
}
从数据库中读取数据时,需要配置数据库的触发器,下面是个例子:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[sBatteryData_TR] ON [dbo].[BatteryData]
FOR INSERT
AS
BEGIN
if @@rowcount = 0 return
set nocount on
IF Exists(SELECT * FROM INSERTED)
BEGIN
INSERT open_mes_dct_testresult(serial_no,device_no,arg_name,test_result,remark,test_datetime)
SELECT Barcode,ProductLine,'mem1',mem,'档位',GETDATE()
FROM inserted
INSERT open_mes_dct_testresult(serial_no,device_no,arg_name,test_result,remark,test_datetime)
SELECT Barcode,ProductLine,'TestingResultCode',TestingResultCode,'测试结果',GETDATE()
FROM inserted
INSERT open_mes_dct_testresult(serial_no,device_no,arg_name,test_result,remark,test_datetime)
SELECT Barcode,ProductLine,'CompareResultCode',TestingResultCode,'比对结果',GETDATE()
FROM inserted
END
END
共享目录设置
由于可能需要访问共享目录,如果服务器无法正常访问局域网内的共享目录,则需要在客户端电脑添加指定用户和密码,并设置共享目录该用户有读写权限(共享和安全都要设置)
用户名:openmesuser
密码:OpenMesUser999
定时操作说明
服务器会按照上面定义的时间周期定时执行读取共享目录下的文件,按照预先定义的格式解析,写入数据库中: omes_dctaoitxt 表中
数据比较原则:
- 检查序列号+设备编码,在数据库中是否存在 ,如果不存在则添加
- 如果存在则判断检验日期,如果新检验日期晚于旧数据,则用新数据替换旧纪录