|
@@ -139,12 +139,11 @@ class modbus_code_path(Load):
|
|
|
,path = '/setting/modbus_code'
|
|
|
,width = '600'
|
|
|
,height = '600'
|
|
|
+ ,button = ({'name':'批量上传','link':'/setting/upload_update'},)
|
|
|
,search = (('label-1','cdate-time-start','cdate-time-end','name-input-mlike','product_id-select-'), (u'日期范围',u'开始时间',u'截止时间',u'设备名称',u'选择产品'))
|
|
|
,thead = (u'命令码名称', u'所属产品',u'关联设备类型', u'表达式', u'更新时间')
|
|
|
,tbody = ('name', 'product','device_type_key', 'exp', 'cdate')
|
|
|
- ,state = False
|
|
|
- #,add = False
|
|
|
- #,edit = False
|
|
|
+ ,state = True
|
|
|
)
|
|
|
self.data['common']['search_product_id-select-'] = self.service('common').list('setting_product')
|
|
|
self.list('setting_modbus_code')
|
|
@@ -154,6 +153,157 @@ class modbus_code_path(Load):
|
|
|
self.data['list'][key]['product'] = product['name']
|
|
|
self.show('list')
|
|
|
|
|
|
+class upload_update_path(Load):
|
|
|
+ @Web.auth
|
|
|
+ @Web.setting
|
|
|
+ def get(self):
|
|
|
+ self.set(
|
|
|
+ path = '/setting/upload'
|
|
|
+ ,label = (u'所属产品', u'上传输入点' ,u'上传输出点')
|
|
|
+ ,update = ('product_id-select-required','input-file--','output-file--')
|
|
|
+ ,update_product_id = self.service('common').list('setting_product')
|
|
|
+ )
|
|
|
+ #self.one('setting_upload')
|
|
|
+ self.data['info'] = {}
|
|
|
+ self.show('update')
|
|
|
+ @Web.auth
|
|
|
+ @Web.setting
|
|
|
+ def post(self):
|
|
|
+ product_id = self.input('update_product_id')
|
|
|
+ inputs = self.input('update_input')
|
|
|
+ output = self.input('update_output')
|
|
|
+ sensor = self.input('update_sensor')
|
|
|
+ #self.inputs(inputs, product_id)
|
|
|
+ self.output(output, product_id)
|
|
|
+ #self.sensor(sensor)
|
|
|
+
|
|
|
+ self.out('操作成功,请关闭本窗口并刷新页面')
|
|
|
+
|
|
|
+ def output(self, source, product_id):
|
|
|
+ temp = source.split('/upload/')
|
|
|
+ path = Demeter.path + '/runtime/upload/' + temp[1]
|
|
|
+ data = xlrd.open_workbook(path)
|
|
|
+ table = data.sheets()[0]
|
|
|
+ rows = table.nrows
|
|
|
+ cols = table.ncols
|
|
|
+ result = {}
|
|
|
+ for i in range(rows):
|
|
|
+ if i >= 2:
|
|
|
+ name = str(table.cell_value(i,1))
|
|
|
+ cn_name = str(table.cell_value(i,2))
|
|
|
+ if name:
|
|
|
+ temp_slave = str(table.cell_value(i,0))
|
|
|
+ if temp_slave:
|
|
|
+ slave = temp_slave.replace('.0', '')
|
|
|
+
|
|
|
+ temp_read = str(table.cell_value(i,5))
|
|
|
+ if temp_read:
|
|
|
+ read = temp_read
|
|
|
+
|
|
|
+ control_open = str(table.cell_value(i,3)).replace(slave + ',', '') + '#1'
|
|
|
+ control_close = str(table.cell_value(i,4)).replace(slave + ',', '') + '#2'
|
|
|
+ key = str(name) + '_' + str(slave)
|
|
|
+ if key not in result:
|
|
|
+ result[key] = []
|
|
|
+ result[key].append(name)
|
|
|
+ result[key].append(cn_name)
|
|
|
+ result[key].append(slave)
|
|
|
+ result[key].append(read)
|
|
|
+ result[key].append(control_open)
|
|
|
+ result[key].append(control_close)
|
|
|
+
|
|
|
+ #product_id = 1
|
|
|
+ hardware_type = 3
|
|
|
+ device_type_key = 'sw'
|
|
|
+ model = Demeter.model('setting_modbus_code')
|
|
|
+ for i in result:
|
|
|
+ name = result[i][1]
|
|
|
+ slave = result[i][2]
|
|
|
+ read = result[i][3]
|
|
|
+ control_open = result[i][4]
|
|
|
+ control_close = result[i][5]
|
|
|
+ name = name + '_' + i
|
|
|
+ model.product_id = product_id
|
|
|
+ model.name = name
|
|
|
+ info = model.select(type='fetchone')
|
|
|
+ if not info:
|
|
|
+ model.product_id = product_id
|
|
|
+ model.name = name
|
|
|
+ if '转' in name:
|
|
|
+ model.device_type_key = 'zhuan'
|
|
|
+ else:
|
|
|
+ model.device_type_key = 'sw'
|
|
|
+ model.exp = '{n}'
|
|
|
+ model.hardware_type = hardware_type
|
|
|
+ model.slave_id = int(slave)
|
|
|
+ model.register_read_address = str(read)
|
|
|
+ model.register_write_address = control_open + '||' + control_close
|
|
|
+ model.insert()
|
|
|
+
|
|
|
+ def inputs(self, source, product_id):
|
|
|
+ temp = source.split('/upload/')
|
|
|
+ path = Demeter.path + '/runtime/upload/' + temp[1]
|
|
|
+ data = xlrd.open_workbook(path)
|
|
|
+ table = data.sheets()[0]
|
|
|
+ rows = table.nrows
|
|
|
+ cols = table.ncols
|
|
|
+ result = {}
|
|
|
+ for i in range(rows):
|
|
|
+ if i >= 2:
|
|
|
+ name = str(table.cell_value(i,1))
|
|
|
+ cn_name = str(table.cell_value(i,2))
|
|
|
+ if name:
|
|
|
+ temp_slave = str(table.cell_value(i,3))
|
|
|
+ if temp_slave:
|
|
|
+ slave = temp_slave.replace('.0', '')
|
|
|
+
|
|
|
+ temp_read = str(table.cell_value(i,4))
|
|
|
+ if temp_read:
|
|
|
+ read = temp_read
|
|
|
+
|
|
|
+ write = str(table.cell_value(i,5)).replace('.0', '')
|
|
|
+ key = str(name) + '_' + str(slave)
|
|
|
+ if key not in result:
|
|
|
+ result[key] = []
|
|
|
+ result[key].append(name)
|
|
|
+ result[key].append(cn_name)
|
|
|
+ result[key].append(slave)
|
|
|
+ result[key].append(read)
|
|
|
+ result[key].append(write)
|
|
|
+
|
|
|
+ #product_id = product_id
|
|
|
+ hardware_type = 2
|
|
|
+ device_type_key = 'zhuan'
|
|
|
+ model = Demeter.model('setting_modbus_code')
|
|
|
+ for i in result:
|
|
|
+ name = result[i][1]
|
|
|
+ slave = result[i][2]
|
|
|
+ read = result[i][3]
|
|
|
+ write = result[i][4]
|
|
|
+ name = name + '_' + i
|
|
|
+ model.product_id = product_id
|
|
|
+ model.name = name
|
|
|
+ info = model.select(type='fetchone')
|
|
|
+ if not info:
|
|
|
+ model.product_id = product_id
|
|
|
+ model.name = name
|
|
|
+ if '转' in name:
|
|
|
+ model.device_type_key = 'zhuan'
|
|
|
+ else:
|
|
|
+ model.device_type_key = 'sw'
|
|
|
+ model.exp = '{n}'
|
|
|
+ model.hardware_type = hardware_type
|
|
|
+ model.slave_id = int(slave)
|
|
|
+ model.register_read_address = str(read)
|
|
|
+ model.register_write_address = ''
|
|
|
+ model.insert()
|
|
|
+
|
|
|
+ @Web.auth
|
|
|
+ @Web.setting
|
|
|
+ def delete(self):
|
|
|
+ self.drop('setting_upload')
|
|
|
+
|
|
|
+
|
|
|
class modbus_code_update_path(Load):
|
|
|
@Web.auth
|
|
|
@Web.setting
|
|
@@ -177,4 +327,5 @@ class modbus_code_update_path(Load):
|
|
|
@Web.auth
|
|
|
@Web.setting
|
|
|
def delete(self):
|
|
|
- self.drop('setting_modbus_code')
|
|
|
+ self.drop('setting_modbus_code')
|
|
|
+
|