Compare commits

...

10 Commits

Author SHA1 Message Date
e0ea8d241e Fixed Separtion State in ADIS 2021-04-21 20:11:51 +02:00
43e9d56b23 Modified animals with Seperation State 2020-06-29 08:26:01 +02:00
bb64cc022c zexp Version 20200608 2020-06-08 23:45:31 +02:00
54e6297888 Zexp Version 20200323 2020-06-08 23:44:45 +02:00
cb8d680040 Added Timerange for Zope 2020-06-08 23:35:48 +02:00
164d6990df Fixed old Milkforbid 2020-06-08 23:35:05 +02:00
82abe16cca Added Animalnr to entitiyfields 2019-10-14 17:38:14 +02:00
b3b8e05510 Added Info 2019-10-14 17:24:08 +02:00
eb5a5d1734 Added Business information 2019-10-14 17:19:36 +02:00
3fb7ab59a4 Added Entity 800001 and removed Debug Prints 2019-10-14 17:07:28 +02:00
4 changed files with 107 additions and 32 deletions

View File

@@ -5,7 +5,7 @@ import os
entities = {}
"""
Entity 990001
Header AGRO 2014
Header AGRO 2015
"""
#NR, ART, ITEM, NAME, TYPE, LEN, RESOLUTION, UNIT, CODE
entities ['990001'] = [
@@ -24,9 +24,34 @@ entities ['990001'] = [
]
"""
Entity 880001
Betriebsdaten am Prueftag
"""
#NR, ART, ITEM, NAME, TYPE, LEN, RESOLUTION, UNIT, CODE
entities ['880001'] = [
(1, 'MAN', '00800004', 'Betrieb Nr', 'N', 15, 0, '', 0),
(2, 'OPT', '00800043', 'Betriebstaette (AE)', 'N', 2, 0, '', 0),
(3, 'KEY', '00900032', 'Pruefdatum', 'N', 8, 0, 'CCYYMMDD', 0),
(4, 'OPT', '00800136', 'Pruefmethode', 'AN', 1, 0, '', 0),
(5, 'OPT', '00800138', 'Pruefschema', 'AN', 1, 0, '', 0),
(6, 'OPT', '00800139', 'Pruefintervall', 'AN', 1, 0, '', 0),
(7, 'OPT', '00800140', 'Melkfrequenz', 'AN', 1, 0, '', 0),
(8, 'OPT', '00800025', 'Pruefbezirksnummer', 'N', 4, 0, '', 0),
(9, 'OPT', '00800027', 'Probenehmernummer', 'N', 15, 0, '', 0),
(10, 'OPT', '00800028', 'Personalnummer KA', 'N', 15, 0, '', 0),
(11, 'OPT', '00800704', 'Melkbeginnzeit abends', 'N', 14, 0, '', 0),
(12, 'OPT', '00800707', 'Melkendezeit abends', 'N', 14, 0, '', 0),
(13, 'OPT', '00800705', 'Melkbeginnzeit morgens', 'N', 14, 0, '', 0),
(14, 'OPT', '00800708', 'Melkendezeit morgens', 'N', 14, 0, '', 0),
(15, 'OPT', '00800706', 'Gemelk f. alternierende Probenentnahme', 'AN', 1, 0, '', 0),
(11, 'OPT', '00800001', 'Schluesselart Betrieb', 'N', 1, 0, '', 0)
]
"""
Entity 880022
Gemelkerfassung AGRO 2014
Gemelkerfassung AGRO 2015
"""
#NR, ART, ITEM, NAME, TYPE, LEN, RESOLUTION, UNIT, CODE
entities ['880022'] = [
@@ -55,8 +80,10 @@ class ADIS:
def __init__ (self, loglevel):
self.loglevel = loglevel
#Optional Fields for an entity
self.entityfields = {'880022': ['00900042', '00800123'],
self.entityfields = {'880001': [],
'880022': ['00900042', '00800123', '00900070'],
'990001': [ '00900007', '00900009']}
self.businessinfos = {}
def log (self, msg, _level = 3):
@@ -72,6 +99,20 @@ class ADIS:
file.write ("%4d-%02d-%02d %02d:%02d:%02d.%06d: " %(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond) + msg + "\n")
file.close ()
def updatebusinessinfos (self, businessinfos):
"""
Betriebsdaten
updaten
"""
self.businessinfos = businessinfos
if not 'businessid' in businessinfos or businessinfos ['businessid'] == "":
businessinfos ['businessid'] = 0
#Betriebsnummer in ADIS ID Aendern
businessinfos ['00800004'] = businessinfos ['businessid']
del businessinfos ['businessid']
def generated (self, entity):
#Generate Datadefiniton
@@ -82,10 +123,11 @@ class ADIS:
return l
def createaheader (self, fields):
def createaheader (self):
"""
Header
"""
fields = entities ['990001']
data = {'00000000': 'DD'}
data ['00900002'] = 1996
@@ -94,12 +136,11 @@ class ADIS:
data ['00900006'] = 'Siliconform'
data ['00900007'] = 'LKV'
data ['00900008'] = '1.00'
data ['00900009'] = 'AGRO2018'
data ['00900009'] = 'AGRO2015'
ds = "VH990001"
for nr, art, item, name, datatype, length, resolution, unit, code in fields:
if art in ['KEY', 'MAN'] or item in self.entityfields ['990001']:
self.log ("Item %s needed" % item, 9)
print ("Item %s" % item)
if item in data:
if datatype == 'AN':
_v = str (data[item]).rjust (int (length))
@@ -109,7 +150,32 @@ class ADIS:
_v = _v.rjust (int (length))
ds += _v[len (_v) - int (length):]
else:
print ("do")
ds += '?' * length
self.log (ds, 9)
return ds
def createbusinessinfos (self):
"""
Betriebsdaten am Prueftag
"""
fields = entities ['880001']
data = self.businessinfos
data ['00900032'] = datetime.now().strftime ('%Y%m%d')
ds = "VN880001"
for nr, art, item, name, datatype, length, resolution, unit, code in fields:
if art in ['KEY', 'MAN'] or item in self.entityfields ['880001']:
self.log ("Item %s needed" % item, 9)
if item in data:
if datatype == 'AN':
_v = str (data[item]).rjust (int (length))
ds += _v [len (_v) - int (length):]
elif datatype == 'N':
_v = "%d" % (int (data[item] * (10**int (resolution))))
_v = _v.rjust (int (length))
ds += _v[len (_v) - int (length):]
else:
ds += '?' * length
self.log (ds, 9)
return ds
@@ -119,23 +185,25 @@ class ADIS:
"""
Creating entity for 880022
"""
animalnr, earmark, rfid, forbidmilk, tsforbidstart, tsforbidend = animalinfo
animalnr, earmark, rfid, forbidmilk, tsforbidstart, tsforbidend, seperation = animalinfo
#Check milking forbidden
milkforbid = 0
if forbidmilk and tsforbidstart:
dttsforbidstart = datetime.strptime (tsforbidstart + ' 00:00:00', '%Y-%m-%d %H:%M:%S')
if datetime.now () > dttsforbidstart:
if tsforbidend:
dttsforbidend = datetime.strptime (tsforbidend + ' 23:59:59', '%Y-%m-%d %H:%M:%S')
if datetime.now () <= dttsforbidend:
milkforbid = 1
else:
milkforbid = 1
if forbidmilk:
milkforbid = 1
#if forbidmilk and tsforbidstart:
# dttsforbidstart = datetime.strptime (tsforbidstart + ' 00:00:00', '%Y-%m-%d %H:%M:%S')
# if datetime.now () > dttsforbidstart:
# if tsforbidend:
# dttsforbidend = datetime.strptime (tsforbidend + ' 23:59:59', '%Y-%m-%d %H:%M:%S')
# if datetime.now () <= dttsforbidend:
# milkforbid = 1
# else:
# milkforbid = 1
retval = ""
for ammount, time, mdate, starttime in milkdata:
data = {'00900070': animalnr}
data ['00800004'] = '0'
data ['00800004'] = self.businessinfos ['00800004']
data ['00800043'] = '9'
data ['00900080'] = earmark
data ['00800143'] = rfid
@@ -166,46 +234,48 @@ class ADIS:
def createlkv (animalinfos, milkdata):
def createlkv (businessinfos, animalinfos, milkdata):
"""
LKV Daten generieren
"""
adis = ADIS (loglevel = 0)
adis.updatebusinessinfos (businessinfos)
retval =""
#Datendefinition und Header generieren
dh = adis.generated ('990001').replace ('DN', 'DH')
print ("Debug HEADER DEF:\n" + dh)
retval += dh + "\n"
header = adis.createaheader (entities ['990001'])
print ("Debug HEADER:\n" + header)
header = adis.createaheader ()
retval += header + "\n" + "TN\n"
#Datendefinition und Daten Betriebsdaten am Prueftag generieren
dd = adis.generated ('880001')
retval += dd + "\n"
ds = adis.createbusinessinfos ()
retval += ds + "\n"
#Datendefinition Melkungen generieren
print ("DEBUG MDEF\n")
dd = adis.generated ('880022')
print (dd)
retval += dd + "\n"
if animalinfos:
for animalnr, earmark, rfid, forbidmilk, tsforbidstart, tsforbidend in animalinfos:
for animalnr, earmark, rfid, forbidmilk, tsforbidstart, tsforbidend, seperation in animalinfos:
if animalnr in milkdata:
ds = adis.createmilkdataset ((animalnr, earmark, rfid, forbidmilk, tsforbidstart, tsforbidend), milkdata[animalnr])
print ("Debug Dataset")
print (ds)
ds = adis.createmilkdataset ((animalnr, earmark, rfid, forbidmilk, tsforbidstart, tsforbidend, seperation), milkdata[animalnr])
retval += ds
else:
return "help"
retval += "TN\n"
retval += "ZN\n"
print ("Debug End")
print (retval)
return retval
if __name__ == "__main__":
animalinfos = [(100, '2730000000000000', '', '1', '2019-09-11', '2019-09-20')]
businessinfos = {'businessid' : '123567'}
animalinfos = [(100, '2730000000000000', '', '1', '2019-09-11', '2019-09-20'), 'Normal']
milkdata = {100: [(3462, 177.6, '2019-08-11', '06:26:47'), (1235, 421.6, '2019-08-07', '18:06:43')]}
createlkv (animalinfos, milkdata)
print (createlkv (businessinfos, animalinfos, milkdata))

1
info.txt Normal file
View File

@@ -0,0 +1 @@
Link ADIS_LKV.py to /opt/Zope_lactor/Extensions

BIN
siliconform.zexp Normal file

Binary file not shown.

4
timerange.py Executable file
View File

@@ -0,0 +1,4 @@
from datetime import *
def timerange (tdelta):
return tdelta.days * 24 * 3600 + tdelta.seconds