def post(self): legal, rqmsg, msg = yield self.check_arguments(msgws.UpdateSmsAlarm(), msgws.CommAns(), use_scode=1) if legal: # 删除原始记录 # for a in rqmsg.record_id: # strsql = '''delete from {0}_data.record_msg_new where record_id={1}'''.format( # self._db_name, a) strsql = '''delete from {0}.record_msg_new where record_id in ({1})'''.format( self._db_name_data, ','.join([str(a) for a in rqmsg.record_id])) cur = yield self.mydata_collector(strsql, need_fetch=0) if cur is None: msg.head.if_st = 45 # 写入发送记录 strsql = '''INSERT INTO {0}.record_msg_log(`send_date`, `send_number`,`send_msg`) VALUES ({1},{2},"{3}")'''.format( self._db_name_data, mx.switchStamp(time.time()), rqmsg.user_tel, rqmsg.fault_msg) cur = yield self.mydata_collector(strsql, need_fetch=0) if cur is None: msg.head.if_st = 45 self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg
def post(self): legal, rqmsg, msg = yield self.check_arguments(msgws.rqUserInfo(), msgws.UserInfo(), use_scode=1) if legal: strsql = '''select user_name,user_phonenumber from {0}.user_list'''.format( self._db_name) if len(rqmsg.user_name) > 0: strsql += " where user_name=`{0}`".format(rqmsg.user_name) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, need_paging=0, buffer_tag=msg.head.paging_buffer_tag, paging_idx=msg.head.paging_idx, paging_num=msg.head.paging_num) if record_total is None: msg.head.if_st = 45 else: msg.head.paging_record_total = record_total msg.head.paging_buffer_tag = buffer_tag msg.head.paging_idx = paging_idx msg.head.paging_total = paging_total for d in cur: userview = msgws.UserInfo.UserView() if d[1] is not None and len(d[1]) > 0: userview.user = d[0] userview.tel = str(d[1]).strip() msg.user_view.extend([userview]) del userview del cur, strsql self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg
def post(self): contents = '' env = False user_data, rqmsg, msg, user_uuid = yield self.check_arguments( None, None) user_uuid = self.get_argument('uuid') if user_uuid in libiisi.cache_buildin_users: msg.head.if_st = 0 msg.head.if_msg = 'build-in user are not allowed to logout.' else: if user_data is not None: contents = 'logout from {0}'.format(self.request.remote_ip) del libiisi.cache_user[user_uuid] try: del libiisi.cache_tml_r[user_uuid] del libiisi.cache_tml_w[user_uuid] del libiisi.cache_tml_x[user_uuid] except: pass env = True else: msg.head.if_st = 40 msg.head.if_msg = 'The user is not logged' self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() if env: self.write_event(122, contents, 2, user_name=user_data['user_name'], app_unique=rqmsg.head.unique) del msg, rqmsg, user_data
def post(self): args = self.request.arguments if 'givemejson' in args.keys(): self._go_back_format = True pb2 = self.get_argument('pb2') rqmsg = msgws.rqUserDel() msg = msgws.CommAns() msg.head.ver = 160328 msg.head.if_dt = int(time.time()) try: rqmsg.ParseFromString(base64.b64decode(pb2)) msg.head.idx = rqmsg.head.idx msg.head.if_st = 1 except: msg.head.if_st = 46 # 删除用户 try: contents = '' #判断是否admin账户,是则返回异常,不是则可以删除 if rqmsg.user != 'admin': # 检查用户名密码是否合法并且删除该用户 strsql = 'delete from {0}.user_list where user_name="{1}" and user_password="******"'.format( self._db_name, rqmsg.user.replace('"', ''), rqmsg.pwd.replace('"', '')) cur = yield self.mydata_collector(strsql, need_fetch=0, need_paging=0) affected_rows = cur[0][0] if affected_rows > 0: contents = 'delete user {0} from {1} success'.format( rqmsg.user, self.request.remote_ip) msg.head.if_st = 1 msg.head.if_msg = 'successfully delete' else: contents = 'delete user {0} from {1} failed'.format( rqmsg.user, self.request.remote_ip) msg.head.if_st = 0 msg.head.if_msg = 'no such user or password wrong' else: contents = 'admin account can not delete' msg.head.if_st = 0 msg.head.if_msg = "admin account can not delete" del cur, strsql except Exception as ex: msg.head.if_st = 0 msg.head.if_msg = str(ex.message) self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() yield self.write_event(156, contents, 2, user_name=rqmsg.user, app_unique=rqmsg.head.unique) del msg, rqmsg
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqUserInfo(), msgws.UserInfo()) env = False contents = '' if user_uuid in libiisi.cache_buildin_users and user_data[ 'user_auth'] < 15: msg.head.if_st = 0 msg.head.if_msg = 'build-in user are not allowed to view user info.' else: if user_data is not None: try: strsql = '' if user_data['user_auth'] < 4: msg.head.if_st = 11 else: if user_data['user_auth'] in libiisi.can_admin: if len(rqmsg.user_name) == 0: strsql = 'select user_name, user_real_name, user_password, user_phonenumber, user_operator_code from {0}.user_list'.format( user_data['user_db']) else: strsql = 'select user_name, user_real_name, user_password, user_phonenumber, user_operator_code from {0}.user_list where user_name="{1}"'.format( self._db_name, rqmsg.user_name) elif user_data['user_auth'] in libiisi.can_read: strsql = 'select user_name, user_real_name, user_password, user_phonenumber, user_operator_code from {0}.user_list where user_name="{1}"'.format( self._db_name, user_data['user_name']) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, need_paging=0) if record_total is None: msg.head.if_st = 45 else: msg.head.paging_record_total = record_total msg.head.paging_buffer_tag = buffer_tag msg.head.paging_idx = paging_idx msg.head.paging_total = paging_total for d in cur: userview = msgws.UserInfo.UserView() userview.user = d[0] userview.fullname = d[1] if d[1] is not None else '' # userview.pwd = d[2] # userview.auth = d[3] userview.mobile = d[3] if d[3] is not None else '' userview.code = d[4] if d[4] is not None else '' # userview.area_id = d[5] msg.user_view.extend([userview]) del userview del cur except Exception as ex: msg.head.if_st = 0 msg.head.if_msg = str(ex) self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data, user_uuid
def post(self): args = self.request.arguments if 'givemejson' in args.keys(): self._go_back_format = True pb2 = self.get_argument('pb2') rqmsg = msgws.rqUserInfo() msg = msgws.UserInfo() msg.head.ver = 160328 msg.head.if_dt = int(time.time()) try: rqmsg.ParseFromString(base64.b64decode(pb2)) msg.head.idx = rqmsg.head.idx msg.head.if_st = 1 except: msg.head.if_st = 46 try: strsql = '' if len(rqmsg.user_name) == 0: strsql = 'select user_name,user_real_name,user_password,user_phonenumber,user_remark,user_id from {0}.user_list'.format( self._db_name) else: strsql = 'select user_name,user_real_name,user_password,user_phonenumber,user_remark,user_id from {0}.user_list where user_name="{1}"'.format( self._db_name, rqmsg.user_name) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, need_paging=0) if record_total is None: msg.head.if_st = 45 else: msg.head.paging_record_total = record_total msg.head.paging_buffer_tag = buffer_tag msg.head.paging_idx = paging_idx msg.head.paging_total = paging_total for d in cur: userview = msgws.UserInfo.UserView() userview.user = d[0] userview.fullname = d[1] if d[1] is not None else '' # userview.pwd = d[2] userview.tel = d[3] if d[3] is not None else '' userview.mobile = int(d[3]) if d[3] is not None else 0 userview.remark = d[4] if d[4] is not None else '' userview.user_id = d[5] msg.user_view.extend([userview]) del userview del cur except Exception as ex: msg.head.if_st = 0 msg.head.if_msg = str(ex) self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg
def post(self): args = self.request.arguments if 'givemejson' in args.keys(): self._go_back_format = True pb2 = self.get_argument('pb2') rqmsg = msgws.rqUserAdd() msg = msgws.UserAdd() msg.head.ver = 160328 msg.head.if_dt = int(time.time()) try: rqmsg.ParseFromString(base64.b64decode(pb2)) msg.head.idx = rqmsg.head.idx msg.head.if_st = 1 except: msg.head.if_st = 46 try: # 检查用户名密码是否存在 strsql = 'insert into {0}.user_info (user_name,user_password,user_real_name,date_create,date_update,date_access,user_remark) \ values ("{1}","{2}","{3}","{4}","{5}","{6}","{7}")'.format( self._db_name, rqmsg.user, rqmsg.pwd, rqmsg.fullname, mx.switchStamp(time.time()), mx.switchStamp(time.time()), mx.switchStamp(time.time()), 'add user from {0}'.format(self.request.remote_ip)) cur = yield self.mydata_collector(strsql, need_fetch=0) affected_rows = cur[0][0] msg.user_id = cur[0][1] contents = '' if affected_rows > 0: contents = 'add user {0} from {1} success'.format( rqmsg.user, self.request.remote_ip) yield self.write_event( 154, 'add user {0} from {1} success'.format( rqmsg.user, self.request.remote_ip, app_unique=rqmsg.head.unique)) else: contents = 'add user {0} from {1} failed'.format( rqmsg.user, self.request.remote_ip) msg.head.if_st = 0 msg.head.if_msg = 'User already exists' except Exception as ex: msg.head.if_st = 0 msg.head.if_msg = str(ex.message) self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() yield self.write_event(154, contents, 2, user_name=rqmsg.user, app_unique=rqmsg.head.unique) del msg, rqmsg
def post(self): args = self.request.arguments if 'givemejson' in args.keys(): self._go_back_format = True pb2 = self.get_argument('pb2') rqmsg = msgws.rqUserEdit() msg = msgws.CommAns() msg.head.ver = 160328 msg.head.if_dt = int(time.time()) try: rqmsg.ParseFromString(base64.b64decode(pb2)) msg.head.idx = rqmsg.head.idx msg.head.if_st = 1 except: msg.head.if_st = 46 try: # 检查用户名密码是否存在并更新 strsql = 'update {0}.user_list set \ user_password="******",user_real_name="{4}",user_phonenumber="{5}",user_remark="{6}" \ where user_name="{1}" and user_password="******"'.format( self._db_name, rqmsg.user.replace('"', ''), rqmsg.pwd_old.replace('"', ''), rqmsg.pwd.replace('"', ''), rqmsg.fullname, rqmsg.mobile, rqmsg.remark) cur = yield self.mydata_collector(strsql, need_fetch=0, need_paging=0) affected_rows = cur[0][0] contents = '' if affected_rows > 0: contents = 'edit user {0} from {1} success'.format( rqmsg.user, self.request.remote_ip) msg.head.if_st = 1 msg.head.if_msg = 'successfully to edit user {0}'.format( rqmsg.user) else: contents = 'edit user {0} from {1} failed, wrong username or password or nothing change'.format( rqmsg.user, self.request.remote_ip) msg.head.if_st = 0 msg.head.if_msg = 'Wrong username or password or nothing change' except Exception as ex: msg.head.if_st = 0 msg.head.if_msg = str(ex.message) self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() yield self.write_event(155, contents, 2, user_name=rqmsg.user, app_unique=rqmsg.head.unique) del msg, rqmsg
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqEluCtl(), None) if user_data is not None: if user_data['user_auth'] in libiisi.can_read & libiisi.can_exec: # 验证用户可操作的设备id yield self.update_cache('r', user_uuid) if 0 in user_data['area_r'] or user_data['is_buildin'] == 1: rtu_ids = list(rqmsg.tml_id) else: rtu_ids = self.check_tml_r(user_uuid, list(rqmsg.tml_id)) if len(rtu_ids) == 0: msg.head.if_st = 11 else: yield self.update_cache() for tml_id in rtu_ids: phy_id, fid, tml_name = self.get_phy_info(tml_id) if phy_id == -1: continue if fid > 0: addr = self.get_phy_list([fid]) cid = phy_id tra = 2 else: addr = [phy_id] cid = 1 tra = 1 tcsmsg = libiisi.initRtuProtobuf(cmd='wlst.elu.6257', addr=list(addr), cid=cid, tra=tra) lp_do = [] i = 0 for loop in range(len(rqmsg.loop_id)): if i == 8: break lp_do.append(loop if loop <= 2 else 2) if len(lp_do) < 8: lp_do.extend([2] * (8 - len(lp_do))) tcsmsg.wlst_tml.wlst_elu_6257.opt_do.extend(lp_do) libiisi.send_to_zmq_pub( 'tcs.req.{1}.{0}'.format(tcsmsg.head.cmd, libiisi.cfg_tcs_port), tcsmsg.SerializeToString()) else: msg.head.if_st = 11 self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data, user_uuid
def post(self): args = self.request.arguments if 'givemejson' in args.keys(): self._go_back_format = True pb2 = self.get_argument('pb2') rqmsg = msgws.rqUserLogin() msg = msgws.UserLogin() msg.head.ver = 160328 msg.head.if_dt = int(time.time()) try: rqmsg.ParseFromString(base64.b64decode(pb2)) msg.head.idx = rqmsg.head.idx msg.head.if_st = 1 except: msg.head.if_st = 46 # 检查用户名密码是否合法 strsql = 'select user_id,user_name,user_real_name,user_phonenumber,user_remark from {0}.user_list \ where user_name="{1}" and user_password="******"'.format( self._db_name, rqmsg.user.replace('"', ''), rqmsg.pwd.replace('"', '')) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, need_paging=0) if record_total is None or record_total == 0: msg.head.if_st = 0 msg.head.if_msg = 'Wrong username or password' yield self.write_event(121, 'login from {0} failed'.format( self.request.remote_ip), 2, user_name=rqmsg.user, app_unique=rqmsg.head.unique) else: for d in cur: msg.user_id = d[0] msg.user = d[1] msg.fullname = d[2] if d[2] is not None else '' msg.mobile = int(d[3]) if d[3] is not None else 0 msg.remark = d[4] if d[4] is not None else '' break yield self.write_event(121, 'login from {0} success'.format( self.request.remote_ip), 2, user_name=rqmsg.user, app_unique=rqmsg.head.unique) self.write(mx.code_pb2(msg, self._go_back_format)) self.finish()
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqEluDataGet(), None) if user_data is not None: if user_data['user_auth'] in libiisi.can_read: # 验证用户可操作的设备id yield self.update_cache('r', user_uuid) if 0 in user_data['area_r'] or user_data['is_buildin'] == 1: rtu_ids = list(rqmsg.tml_id) else: rtu_ids = self.check_tml_r(user_uuid, list(rqmsg.tml_id)) if len(rtu_ids) == 0: msg.head.if_st = 11 else: yield self.update_cache() for tml_id in rtu_ids: phy_id, fid, tml_name = self.get_phy_info(tml_id) if phy_id == -1: continue if fid > 0: addr = self.get_phy_list([fid]) cid = phy_id tra = 2 else: addr = [phy_id] cid = 1 tra = 1 tcsmsg = libiisi.initRtuProtobuf(cmd='wlst.elu.6259', addr=list(addr), cid=cid, tra=tra) libiisi.send_to_zmq_pub( 'tcs.req.{1}.{0}'.format(tcsmsg.head.cmd, libiisi.cfg_tcs_port), tcsmsg.SerializeToString()) tcsmsg = libiisi.initRtuProtobuf(cmd='wlst.elu.6260', addr=list(addr), cid=cid, tra=tra) libiisi.send_to_zmq_pub( 'tcs.req.{1}.{0}'.format(tcsmsg.head.cmd, libiisi.cfg_tcs_port), tcsmsg.SerializeToString()) else: msg.head.if_st = 11 self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data, user_uuid
def post(self): legal, rqmsg, msg = yield self.check_arguments(msgws.rqQuerySmsAlarm(), msgws.QuerySmsAlarm(), use_scode=1) if legal: if rqmsg.data_mark == 2: # 市政短信 strsql = '''select is_alarm,record_id,rtu_name,user_phone_number from {0}.record_msg_new where is_alarm=2 order by user_phone_number limit 100'''.format( self._db_name_data) else: strsql = '''select is_alarm,record_id,rtu_name,user_phone_number,rtu_id,loop_id,loop_name,fault_name, date_create from {0}.record_msg_new where is_alarm in (0,1) order by user_phone_number,rtu_id,loop_id,is_alarm,date_create desc limit 100'''.format( self._db_name_data) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, need_paging=0, buffer_tag=msg.head.paging_buffer_tag, paging_idx=msg.head.paging_idx, paging_num=msg.head.paging_num) if record_total is None: msg.head.if_st = 45 else: msg.head.paging_record_total = record_total msg.head.paging_buffer_tag = buffer_tag msg.head.paging_idx = paging_idx msg.head.paging_total = paging_total for d in cur: smsr = msgws.QuerySmsAlarm.SmsAlarm() smsr.data_mark = d[0] smsr.record_id = d[1] smsr.tml_name = d[2] smsr.user_tel = d[3] if d[0] in (0, 1): smsr.tml_id = d[4] smsr.loop_id = d[5] smsr.loop_name = d[6] smsr.fault_name = d[7] smsr.dt_create = mx.switchStamp(int(d[8])) msg.sms_alarm.extend([smsr]) del smsr del cur, strsql self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqMruInfoNN(), msgws.MruInfoNN()) if user_data is not None: if user_data['user_auth'] in libiisi.can_read: if msg.head.if_st == 1: if rqmsg.company_id == -1: str_companyid = '1=1' else: str_companyid = ' a.company_id = {0} '.format( rqmsg.company_id) strsql = ''' select a.rtu_name,a.meter_address,a.mru_baudrate,a.mru_type,a.company_id,a.date_create,a.init_value, a.company_name,a.meter_scale ,a.sim_number from {0}.para_meter as a where {1} {2}'''.format( self._db_name_data, str_companyid, self._fetch_limited) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, buffer_tag=msg.head.paging_buffer_tag, paging_idx=msg.head.paging_idx, paging_num=msg.head.paging_num) if record_total is None: msg.head.if_st = 45 else: msg.head.paging_record_total = record_total msg.head.paging_buffer_tag = buffer_tag msg.head.paging_idx = paging_idx msg.head.paging_total = paging_total for d in cur: mm = msgws.MruInfoNN.MruInfoNN() mm.mru_name = d[0] mm.mru_id = int(d[1]) mm.mru_baud_rate = d[2] mm.mru_type = d[3] mm.company_id = d[4] mm.setup_date = mx.switchStamp(int(d[5])) mm.setup_value = float( d[6]) if d[6] is not 0 else 0.0 mm.company_name = d[7] mm.transform = d[8] if d[8] is not 0 else 0 mm.sim = d[9] msg.mru_infonn.extend([mm]) del cur, strsql self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqQuerySmsRecord(), msgws.QuerySmsRecord()) if user_data is not None: if user_data['user_auth'] in libiisi.can_read: sdt, edt = self.process_input_date(rqmsg.dt_start, rqmsg.dt_end, to_chsarp=1) yield self.update_cache("r", user_uuid) if len(rqmsg.tels) > 0: str_tels = ' and send_number in ({0})'.format(','.join( [str(t) for t in rqmsg.tels])) else: str_tels = '' strsql = 'select send_date,send_number,send_msg from {0}.record_msg_log \ where send_date>={1} and send_date<={2} and send_msg like "%{3}%" \ {4} {5}'.format(self._db_name_data, sdt, edt, rqmsg.msg, str_tels, self._fetch_limited) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, buffer_tag=msg.head.paging_buffer_tag, paging_idx=msg.head.paging_idx, paging_num=msg.head.paging_num) if record_total is None: msg.head.if_st = 45 else: msg.head.paging_record_total = record_total msg.head.paging_buffer_tag = buffer_tag msg.head.paging_idx = paging_idx msg.head.paging_total = paging_total for d in cur: smsr = msgws.QuerySmsRecord.SmsRecord() smsr.dt_send = mx.switchStamp(int(d[0])) smsr.tel = int(d[1]) smsr.msg = d[2] msg.sms_record.extend([smsr]) del smsr del cur, strsql self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data, user_uuid
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqErrInfo(), msgws.ErrInfo()) if user_data is not None: if user_data['user_auth'] in libiisi.can_read: # ,akarn_time_set,alarm_time_start,alarm_time_end strsql = 'select fault_id,fault_name,fault_name_define,is_enable,fault_remark, \ fault_check_keyword from {0}.fault_types'.format( self._db_name) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, buffer_tag=msg.head.paging_buffer_tag, paging_idx=msg.head.paging_idx, paging_num=msg.head.paging_num) if record_total is None: msg.head.if_st = 45 else: msg.head.paging_record_total = record_total msg.head.paging_buffer_tag = buffer_tag msg.head.paging_idx = paging_idx msg.head.paging_total = paging_total for d in cur: if d[1] is not None: errinfoview = msgws.ErrInfo.ErrInfoView() errinfoview.err_id = int(d[0]) errinfoview.err_name = d[ 1] if d[1] is not None else '' errinfoview.err_name_custome = d[ 2] if d[2] is not None else '' errinfoview.enable_alarm = int(d[3]) errinfoview.err_remark = d[4] # errinfoview.err_level = d[5] errinfoview.err_check_keyword = d[5] # errinfoview.err_time_set = d[7] # errinfoview.dt_err_custome_start = mx.switchStamp(d[8]) # errinfoview.dt_err_custome_end = mx.switchStamp(d[9]) msg.err_info_view.extend([errinfoview]) del errinfoview del cur, strsql self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data, user_uuid
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqRtuVerGet(), None) env = False if user_data is not None: try: tver = int(self.get_argument('tver')) except: tver = 1 if user_data['user_auth'] in libiisi.can_read: # 验证用户可操作的设备id yield self.update_cache('r', user_uuid) if 0 in user_data['area_r'] or user_data['is_buildin'] == 1: rtu_ids = ','.join( [str(a) for a in self.get_phy_list(rqmsg.tml_id)]) else: rtu_ids = ','.join([ str(a) for a in self.get_phy_list( self.check_tml_r(user_uuid, list(rqmsg.tml_id))) ]) if len(rtu_ids) == 0: msg.head.if_st = 11 else: if tver == 1: tcsmsg = libiisi.initRtuJson(2, 7, 1, 1, 1, 'wlst.rtu.5c00', self.request.remote_ip, 0, rtu_ids, dict()) # libiisi.set_to_send(tcsmsg, 0, False) libiisi.send_to_zmq_pub( 'tcs.req.{0}.wlst.rtu.5c00'.format( libiisi.cfg_tcs_port), json.dumps(tcsmsg, separators=(',', ':')).lower()) elif tver == 2: tcsmsg = libiisi.initRtuProtobuf(cmd='ahhf.rtu.5c00', tver=tver) libiisi.send_to_zmq_pub( 'tcs.req.{0}.{1}'.format(libiisi.cfg_tcs_port, tcsmsg.head.cmd), tcsmsg.SerializeToString()) else: msg.head.if_st = 11 self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqUserAdd(), None) env = False contents = '' if user_uuid in libiisi.cache_buildin_users: msg.head.if_st = 0 msg.head.if_msg = 'build-in user are not allowed to add new user.' else: if user_data is not None: if user_data['user_auth'] < 15: msg.head.if_st = 11 else: # 判断用户是否存在 strsql = 'select * from {0}.user_list where user_name="{1}" and user_password="******"'.format( self._db_name, rqmsg.user.replace('"', ''), rqmsg.pwd.replace('"', '')) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1) if record_total > 0: msg.head.if_st = 45 msg.head.if_msg = 'User already exists' else: strsql = 'insert into {0}.user_list (user_name, user_real_name, user_password, user_phonenumber, user_operator_code, date_create, date_update, date_access) \ values ("{1}","{2}","{3}","{4}","{5}",{6},{7},{8})'.format( self._db_name, rqmsg.user, rqmsg.fullname, rqmsg.pwd, rqmsg.mobile, rqmsg.code, mx.switchStamp(int(time.time())), mx.switchStamp(int(time.time())), mx.switchStamp(int(time.time()))) yield self.mydata_collector(strsql, need_fetch=0) env = True contents = 'add user {0}'.format(rqmsg.user) del cur, strsql self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() if env: self.write_event(154, contents, 2, user_name=user_data['user_name'], app_unique=rqmsg.head.unique) del msg, rqmsg, user_data
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqUserDel(), None) env = False contents = '' if user_uuid in libiisi.cache_buildin_users: msg.head.if_st = 0 msg.head.if_msg = 'build-in user are not allowed to del user.' else: if user_data is not None: if user_data['user_auth'] < 15: msg.head.if_st = 11 else: # 删除用户 try: strsql = 'select * from {0}.user_list where user_name="{1}"'.format( self._db_name, rqmsg.user.replace('"', '')) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1) if record_total > 0: strsql = 'delete from {0}.user_list where user_name="{1}"'.format( self._db_name, rqmsg.user) yield self.mydata_collector(strsql, need_fetch=0) env = True contents = 'del user {0}'.format(rqmsg.user) else: msg.head.if_st = 46 msg.head.if_msg = 'no such user' del cur, strsql except Exception as ex: msg.head.if_st = 0 msg.head.if_msg = str(ex.message) self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() if env: self.write_event(156, contents, 2, user_name=user_data['user_name'], app_unique=rqmsg.head.unique) del msg, rqmsg, user_data, user_uuid
def post(self): legal, rqmsg, msg = yield self.check_arguments(msgws.rqSubmitSms(), msgws.CommAns(), use_scode=1) if legal: strsql = '' t = mx.switchStamp(int(time.time())) for tel in rqmsg.tels: if isinstance(tel, types.LongType): strsql += 'insert into {0}.record_msg_new (date_create,rtu_name,user_phone_number,is_alarm) values ({1},"{2}",{3},2);'.format( self._db_name_data, t, u'{0}'.format(str(rqmsg.msg).strip()), tel) yield self.mydata_collector(strsql, need_fetch=0) # else: # msg.head.if_st = 0 # msg.head.if_msg = 'Security code error' self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg
def post(self): legal, rqmsg, msg = yield self.check_arguments(msgws.CommAns(), msgws.CommAns(), use_scode=1) if legal: strsql = '''select count(1) from {0}.record_msg_log'''.format( self._db_name_data) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1) if cur is not None: if cur[0][0] > 1000: strsql = '''delete from {0}.record_msg_log where send_date<{1}'''.format( self._db_name_data, mx.switchStamp(int(time.time() - 31622400))) cur = yield self.mydata_collector(strsql, need_fetch=0) if cur is None: msg.head.if_st = 45 self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqQueryErrorCount(), msgws.QueryErrorCount()) if user_data is not None: if user_data['user_auth'] in libiisi.can_read: if rqmsg.type == 1: # 按设备查询 strsql = 'select a.rtu_id,b.rtu_name,a.fault_num from {0}.para_base_equipment as b \ left join {1}.sum_fault_by_tml as a on a.rtu_id=b.rtu_id order by a.fault_num desc'.format(self._db_name, self._db_name_data) elif rqmsg.type == 2: # 按故障查询 strsql = 'select a.fault_id,b.fault_name,a.fault_num from {1}.sum_fault_by_faultid as a \ left join {0}.fault_types as b on a.fault_id=b.fault_id order by a.fault_num desc'.format(self._db_name, self._db_name_data) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, need_paging=0) if record_total is None: msg.head.if_st = 45 else: msg.head.paging_record_total = record_total msg.head.paging_buffer_tag = buffer_tag msg.head.paging_idx = paging_idx msg.head.paging_total = paging_total msg.type = rqmsg.type for d in cur: if d[0] is not None: errnum = msgws.QueryErrorCount.Error_count() errnum.id = d[0] if d[0] is not None else 0 errnum.name = d[1] if d[1] is not None else "" errnum.count = d[2] msg.error_count.extend([errnum]) del errnum del cur, strsql self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data, user_uuid
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqRtuTimerCtl(), None) env = False contents = '' if user_data is not None: try: tver = int(self.get_argument('tver')) except: tver = 1 if rqmsg.data_mark == 0: user_auth = libiisi.can_read else: user_auth = libiisi.can_exec & libiisi.can_write if user_data['user_auth'] in user_auth: env = True contents = 'user from {0} set rtu timer'.format( self.request.remote_ip) # 验证用户可操作的设备id yield self.update_cache('r', user_uuid) if 0 in user_data['area_r'] or user_data['is_buildin'] == 1: rtu_ids = ','.join( [str(a) for a in self.get_phy_list(rqmsg.tml_id)]) else: rtu_ids = ','.join([ str(a) for a in self.get_phy_list( self.check_tml_r(user_uuid, list(rqmsg.tml_id))) ]) if len(rtu_ids) == 0: msg.head.if_st = 11 else: if tver == 1: if rqmsg.data_mark == 0: cmd = 'wlst.rtu.1200' else: cmd = 'wlst.rtu.1300' tcsmsg = libiisi.initRtuJson(2, 7, 1, 1, 1, cmd, self.request.remote_ip, 0, rtu_ids, dict()) # libiisi.set_to_send(tcsmsg, 0, False) libiisi.send_to_zmq_pub( 'tcs.req.{1}.{0}'.format(cmd, libiisi.cfg_tcs_port), json.dumps(tcsmsg, separators=(',', ':')).lower()) elif tver == 2: if rqmsg.data_mark == 0: cmd = 'ahhf.rtu.1200' else: cmd = 'ahhf.rtu.1300' tcsmsg = libiisi.initRtuProtobuf(cmd=cmd, tver=2) libiisi.send_to_zmq_pub( 'tcs.req.{0}.{1}'.format(libiisi.cfg_tcs_port, cmd), tcsmsg.SerializeToString()) else: msg.head.if_st = 11 self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() if env and rqmsg.data_mark == 1: self.write_event(11, contents, 2, user_name=user_data['user_name'], app_unique=rqmsg.head.unique) del msg, rqmsg, user_data
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqMruDataGet(), None) if user_data is not None: if user_data['user_auth'] in libiisi.can_read: # 验证用户可操作的设备id if 0 in user_data['area_r'] or user_data['is_buildin'] == 1: if len(rqmsg.tml_id) > 0: tml_ids = list(rqmsg.tml_id) else: tml_ids = [] else: if len(rqmsg.tml_id) > 0: tml_ids = self.check_tml_r(user_uuid, list( rqmsg.tml_id)) else: tml_ids = libiisi.cache_tml_r[user_uuid] if len(tml_ids) == 0: msg.head.if_st = 11 if msg.head.if_st == 1: if len(tml_ids) == 0: str_tmls = '' else: str_tmls = ' where a.rtu_id in ({0}) '.format( ','.join([str(a) for a in tml_ids])) strsql = '''select a.rtu_id,a.rtu_fid, b.mru_addr_1,b.mru_addr_2,b.mru_addr_3,b.mru_addr_4,b.mru_addr_5,b.mru_addr_6 from {0}.para_base_equipment as a left join {0}.para_mru as b on a.rtu_id=b.rtu_id {1} '''.format( self._db_name, str_tmls) yield self.update_cache() record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1) for d in cur: if int(d[1]) > 0: tra = 2 else: tra = 1 tcsmsg = libiisi.initRtuJson( mod=2, src=7, ver=1, tver=1, tra=tra, cmd='wlst.mru.9100', ip=self.request.remote_ip, port=0, addr=','.join( [str(a) for a in self.get_phy_list([d[1]])]), data=dict( addr1=int(d[2]), addr2=int(d[3]), addr3=int(d[4]), addr4=int(d[5]), addr5=int(d[6]), addr6=int(d[7]), ver=rqmsg.dev_ver, type=rqmsg.data_mark, date=rqmsg.dt_mark, br=rqmsg.baud_rate)) # libiisi.set_to_send(tcsmsg, 0, False) print(tcsmsg) libiisi.send_to_zmq_pub( 'tcs.req.{0}.wlst.mru.9100'.format( libiisi.cfg_tcs_port), json.dumps(tcsmsg, separators=(',', ':')).lower()) else: msg.head.if_st = 11 self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data, user_uuid
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqRtuCtl(), None) env = False event_id = 0 if user_data is not None: try: tver = int(self.get_argument('tver')) except: tver = 1 if user_data['user_auth'] in libiisi.can_exec: env = True self.get_eventinfo() dosomething = False for x in list(rqmsg.rtu_do): event_id = 0 if len(x.tml_id) == 0: continue dosomething = True tcsdata = dict() # 验证用户可操作的设备id yield self.update_cache('x', user_uuid) if 0 in user_data['area_x'] or user_data['is_buildin'] == 1: rtu_ids = ','.join( [str(a) for a in self.get_phy_list(x.tml_id)]) else: rtu_ids = ','.join([ str(a) for a in self.get_phy_list( self.check_tml_x(user_uuid, list(x.tml_id))) ]) if len(rtu_ids) > 0: if x.opt == 1: # 单回路操作 event_id = 19 i = 0 for k in list(x.loop_do): if k in (0, 1): tcsdata['k'] = i tcsdata['o'] = k tcsmsg = libiisi.initRtuJson( 2, 7, 1, 1, 1, 'wlst.rtu.2210', self.request.remote_ip, 0, rtu_ids, tcsdata) # libiisi.set_to_send(tcsmsg, 0, False) libiisi.send_to_zmq_pub( 'tcs.req.{0}.wlst.rtu.2210'.format( libiisi.cfg_tcs_port), json.dumps(tcsmsg, separators=(',', ':')).lower()) i += 1 elif x.opt == 2: # 多回路操作 event_id = 19 if tver == 1: i = 1 for k in list(x.loop_do): tcsdata['k{0}'.format(i)] = k if i == 6: break i += 1 tcsmsg = libiisi.initRtuJson( 2, 7, 1, 1, 1, 'wlst.rtu.4b00', self.request.remote_ip, 0, rtu_ids, tcsdata) # libiisi.set_to_send(tcsmsg, 0, False) libiisi.send_to_zmq_pub( 'tcs.req.{0}.wlst.rtu.4b00'.format( libiisi.cfg_tcs_port), json.dumps(tcsmsg, separators=(',', ':')).lower()) elif tver == 2: tcsmsg = libiisi.initRtuProtobuf( cmd='ahhf.rtu.4b00', tver=tver) tcsmsg.wlst_tml.wlst_rtu_4b00.operation.extend( list(x.loop_do)) libiisi.send_to_zmq_pub( 'tcs.req.{0}.{1}'.format( libiisi.cfg_tcs_port, tcsmsg.head.cmd), tcsmsg.SerializeToString()) elif x.opt == 3: # 停运 event_id = 17 tcsmsg = libiisi.initRtuJson( 2, 7, 1, 1, 1, 'wlst.rtu.2800', self.request.remote_ip, 0, rtu_ids, tcsdata) # libiisi.set_to_send(tcsmsg, 0, False) libiisi.send_to_zmq_pub( 'tcs.req.{0}.wlst.rtu.2800'.format( libiisi.cfg_tcs_port), json.dumps(tcsmsg, separators=(',', ':')).lower()) elif x.opt == 4: # 解除停运 event_id = 18 tcsmsg = libiisi.initRtuJson( 2, 7, 1, 1, 1, 'wlst.rtu.2900', self.request.remote_ip, 0, rtu_ids, tcsdata) # libiisi.set_to_send(tcsmsg, 0, False) libiisi.send_to_zmq_pub( 'tcs.req.{0}.wlst.rtu.2900'.format( libiisi.cfg_tcs_port), json.dumps(tcsmsg, separators=(',', ':')).lower()) if not dosomething: msg.head.if_st = 11 contents = u'{0},build-in user from {1} ctrl rtu '.format( libiisi.events_def.get(event_id), self.request.remote_ip) else: msg.head.if_st = 11 self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() if env: cur = yield self.write_event(event_id, contents, 2, user_name=user_data['user_name'], app_unique=rqmsg.head.unique) del msg, rqmsg, user_data, user_uuid
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqQueryDataRtu(), msgws.QueryDataRtu()) if user_data is not None: if user_data['user_auth'] in libiisi.can_read: sdt, edt = self.process_input_date(rqmsg.dt_start, rqmsg.dt_end, to_chsarp=1) msg.type = rqmsg.type yield self.update_cache("r", user_uuid) # 验证用户可操作的设备id if 0 in user_data['area_r'] or user_data['is_buildin'] == 1: if len(rqmsg.tml_id) > 0: tml_ids = list(rqmsg.tml_id) else: tml_ids = [] else: if len(rqmsg.tml_id) > 0: tml_ids = self.check_tml_r(user_uuid, list(rqmsg.tml_id)) else: tml_ids = libiisi.cache_tml_r[user_uuid] if len(tml_ids) == 0: msg.head.if_st = 11 if msg.head.if_st == 1: if len(tml_ids) == 0: str_tmls = '' else: str_tmls = ' and a.rtu_id in ({0}) '.format(','.join( [str(a) for a in tml_ids])) if rqmsg.type == 0: # 最新数据 strsql = 'select a.TABLE_NAME from information_schema.VIEWS as a where a.TABLE_NAME="data_rtu_view_new" and a.TABLE_SCHEMA="{0}"'.format( self._db_name_data) cur = libiisi.m_sql.run_fetch(strsql) has_view = False if cur is not None: if len(cur) > 0: has_view = True del cur # try: # d = cur.next() # has_view = True # except: # pass if has_view: strsql = '''select a.date_create, a.rtu_id,a.rtu_voltage_a,a.rtu_voltage_b,a.rtu_voltage_c, a.rtu_current_sum_a,a.rtu_current_sum_b,a.rtu_current_sum_c, a.rtu_alarm,a.switch_out_attraction,a.loop_id,a.v,a.a,a.power, a.power_factor,a.bright_rate,a.switch_in_state,a.a_over_range,a.v_over_range,a.temperature, c.loop_name,b.rtu_phy_id,b.rtu_name,c.switch_output_id from {2}.data_rtu_view_new as a right join {0}.para_rtu_loop_info as c on a.rtu_id=c.rtu_id and a.loop_id=c.loop_id right join {0}.para_base_equipment as b on a.rtu_id=b.rtu_id where a.temperature>-50 {1} order by a.rtu_id,a.loop_id'''.format( self._db_name, str_tmls, self._db_name_data) else: strsql = '''select x.*,a.rtu_voltage_a,a.rtu_voltage_b,a.rtu_voltage_c, a.rtu_current_sum_a,a.rtu_current_sum_b, a.rtu_current_sum_c,a.rtu_alarm,a.switch_out_attraction, d.loop_id,d.v,d.a,d.power,d.power_factor,d.bright_rate,d.switch_in_state,d.a_over_range,d.v_over_range,a.temperature, c.loop_name,b.rtu_phy_id,b.rtu_name,c.switch_output_id from (select max(a.date_create) as date_create,a.rtu_id from {2}.data_rtu_record as a where a.temperature>-50 {1} group by a.rtu_id) as x left join {2}.data_rtu_record as a on x.rtu_id=a.rtu_id and x.date_create=a.date_create left join {2}.data_rtu_loop_record as d on x.rtu_id=d.rtu_id and x.date_create=d.date_create right join {0}.para_base_equipment as b on x.rtu_id=b.rtu_id right join {0}.para_rtu_loop_info as c on d.rtu_id=c.rtu_id and d.loop_id=c.loop_id'''.format( self._db_name, str_tmls, self._db_name_data) # strsql = 'select a.date_create,a.rtu_id,a.rtu_voltage_a,a.rtu_voltage_b,a.rtu_voltage_c, \ # a.rtu_current_sum_a,a.rtu_current_sum_b, a.rtu_current_sum_c,a.rtu_alarm,a.switch_out_attraction, \ # a.loop_id,a.v,a.a,a.power,a.power_factor,a.bright_rate,a.switch_in_state,a.a_over_range,a.v_over_range,c.loop_name \ # from {0}_data.data_rtu_view as a left join {0}.para_rtu_loop_info as c on a.rtu_id=c.rtu_id and a.loop_id=c.loop_id \ # where EXISTS \ # (select rtu_id,date_create from \ # (select rtu_id,max(date_create) as date_create from {0}_data.data_rtu_view group by rtu_id) as t \ # where t.rtu_id=a.rtu_id and t.date_create=a.date_create) {1} order by a.date_create desc,a.rtu_id,a.loop_id;'.format( # self._db_name, str_tmls) else: if len(tml_ids) != 1: strsql = "" else: # 徐坤说把right join 改成join, 后面加where strsql = '''select x.*,c.loop_name,b.rtu_phy_id,b.rtu_name,c.switch_output_id from (select a.date_create, a.rtu_id,a.rtu_voltage_a,a.rtu_voltage_b,a.rtu_voltage_c, a.rtu_current_sum_a,a.rtu_current_sum_b,a.rtu_current_sum_c, a.rtu_alarm,a.switch_out_attraction,a.loop_id,a.v,a.a,a.power, a.power_factor,a.bright_rate,a.switch_in_state,a.a_over_range,a.v_over_range,a.temperature from {5}.data_rtu_view as a where a.temperature>-50 and a.date_create>={1} and a.date_create<={2} {3}) as x join {0}.para_base_equipment as b on x.rtu_id=b.rtu_id join {0}.para_rtu_loop_info as c on x.rtu_id=c.rtu_id and x.loop_id=c.loop_id where 1=1 {6} ORDER BY x.rtu_id ,x.date_create'''.format( self._db_name, sdt, edt, str_tmls, self._fetch_limited, self._db_name_data, str_tmls.replace("a.", "c.")) # strsql = '''select a.date_create, a.rtu_id,a.rtu_voltage_a,a.rtu_voltage_b,a.rtu_voltage_c, # a.rtu_current_sum_a,a.rtu_current_sum_b,a.rtu_current_sum_c, # a.rtu_alarm,a.switch_out_attraction,a.loop_id,a.v,a.a,a.power, # a.power_factor,a.bright_rate,a.switch_in_state,a.a_over_range,a.v_over_range, # c.loop_name from {0}_data.data_rtu_view as a # left join {0}.para_rtu_loop_info as c on a.rtu_id=c.rtu_id and a.loop_id=c.loop_id # where a.date_create>={1} and a.date_create<={2} {3} # order by a.rtu_id,a.date_create desc,a.loop_id'''.format(self._db_name, sdt, # edt, str_tmls) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, buffer_tag=msg.head.paging_buffer_tag, paging_idx=msg.head.paging_idx, paging_num=msg.head.paging_num, multi_record=[0, 1], key_column=20) if record_total is None: msg.head.if_st = 45 else: drv = msgws.QueryDataRtu.DataRtuView() msg.head.paging_record_total = record_total msg.head.paging_buffer_tag = buffer_tag msg.head.paging_idx = paging_idx msg.head.paging_total = paging_total for d in cur: if d[0] is None: continue if drv.tml_id != int( d[1]) or drv.dt_receive != mx.switchStamp( int(d[0])): if drv.tml_id > 0: msg.data_rtu_view.extend([drv]) drv = msgws.QueryDataRtu.DataRtuView() drv.tml_id = int(d[1]) drv.dt_receive = mx.switchStamp(int(d[0])) drv.voltage_a = float(d[2]) drv.voltage_b = float(d[3]) drv.voltage_c = float(d[4]) drv.current_sum_a = float(d[5]) drv.current_sum_b = float(d[6]) drv.current_sum_c = float(d[7]) # drv.alarm_st.extend([int(a) for a in '{0:08b}'.format(int(d[ # 8]))[::-1]]) s = [0, 0, 0, 0, 0, 0, 0, 0] for r in list(str(d[8])): s[int(r) - 1] = 1 drv.alarm_st.extend(s) x = d[9][:len(d[9]) - 1].split(';') drv.switch_out_st.extend( [1 if a == 'True' else 0 for a in x]) drv.phy_id = int( d[21]) if d[21] is not None else -1 drv.tml_name = d[22] if d[ 22] is not None else '' drv.temperature = d[19] # if d[19] is not None: if d[10] is not None: drlv = msgws.QueryDataRtu.LoopView() drlv.loop_id = int(d[10]) drlv.voltage = float(d[11] / 100.0) drlv.current = float(d[12] / 100.0) drlv.power = float(d[13] / 100.0) drlv.factor = float(d[14]) drlv.rate = float(d[15]) drlv.switch_in_st = int(d[16]) drlv.current_over_range = int(d[17]) drlv.voltage_over_range = int(d[18]) drlv.loop_name = d[20] if d[ 20] is not None else '' drlv.loop_switchout_id = d[23] if d[ 23] is not None else 0 drv.loop_view.extend([drlv]) del drlv if drv.tml_id > 0: msg.data_rtu_view.extend([drv]) del cur, strsql self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data, user_uuid
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqQueryDataRtuElec(), msgws.QueryDataRtuElec()) if user_data is not None: if user_data['user_auth'] in libiisi.can_read: sdt, edt = self.process_input_date(rqmsg.dt_start, rqmsg.dt_end, to_chsarp=1) yield self.update_cache("r", user_uuid) # 验证用户可操作的设备id if 0 in user_data['area_r'] or user_data['is_buildin'] == 1: if len(rqmsg.tml_id) > 0: tml_ids = list(rqmsg.tml_id) else: tml_ids = [] else: if len(rqmsg.tml_id) > 0: tml_ids = self.check_tml_r(user_uuid, list(rqmsg.tml_id)) else: tml_ids = libiisi.cache_tml_r[user_uuid] if len(tml_ids) == 0: msg.head.if_st = 11 if msg.head.if_st == 1: if len(tml_ids) == 0: str_tmls = '' else: str_tmls = ' and a.rtu_id in ({0}) '.format(','.join( [str(a) for a in tml_ids])) if rqmsg.data_mark == 0: strsql = 'select a.date_create,a.rtu_id,a.loop_id,a.minutes_open,a.power \ from {5}.info_rtu_elec as a \ where a.date_create>={1} and a.date_create<={2} {3} \ order by a.date_create desc,a.rtu_id,a.loop_id {4}'.format( self._db_name, sdt, edt, str_tmls, self._fetch_limited, self._db_name_data) else: strsql = 'select a.rtu_id,a.rtu_id,a.loop_id,sum(a.minutes_open) as m,sum(a.power) as p \ from {5}.info_rtu_elec as a \ where a.date_create>={1} and a.date_create<={2} {3} \ group by a.rtu_id,a.loop_id \ order by a.rtu_id,a.loop_id {4}'.format( self._db_name, sdt, edt, str_tmls, self._fetch_limited, self._db_name_data) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, buffer_tag=msg.head.paging_buffer_tag, paging_idx=msg.head.paging_idx, paging_num=msg.head.paging_num, multi_record=[]) if record_total is None: msg.head.if_st = 45 else: msg.head.paging_record_total = record_total msg.head.paging_buffer_tag = buffer_tag msg.head.paging_idx = paging_idx msg.head.paging_total = paging_total for d in cur: dv = msgws.QueryDataRtuElec.DataRtuElecView() if rqmsg.data_mark == 0: dv.dt_count = mx.switchStamp(int(d[0])) dv.tml_id = int(d[1]) dv.loop_id = int(d[2]) dv.data_lenght = int(d[3]) dv.estimate_value = float(d[4]) msg.data_rtu_elec_view.extend([dv]) del dv del cur, strsql self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data, user_uuid
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqQueryRtuTimeTableBind(), msgws.QueryRtuTimeTableBind()) env = False if user_data is not None: sdt, edt = self.process_input_date(rqmsg.dt_start, rqmsg.dt_end, to_chsarp=0) msg.data_mark = rqmsg.data_mark yield self.update_cache("r", user_uuid) # 验证用户可操作的设备id if 0 in user_data['area_r'] or user_data['is_buildin'] == 1: if len(rqmsg.tml_id) > 0: tml_ids = list(rqmsg.tml_id) else: tml_ids = [] else: if len(rqmsg.tml_id) > 0: tml_ids = self.check_tml_r(user_uuid, list(rqmsg.tml_id)) else: tml_ids = libiisi.cache_tml_r[user_uuid] if len(tml_ids) == 0: msg.head.if_st = 11 if msg.head.if_st == 1: if len(tml_ids) == 0: str_tmls = '' else: str_tmls = ' and a.rtu_or_grp_id in ({0}) '.format( ','.join([str(a) for a in tml_ids])) if len(rqmsg.tml_loop_id) > 0: str_loops = ' and a.loop_id in ({0})'.format(','.join( [str(a) for a in rqmsg.tml_loop_id])) else: str_loops = '' dt = time.localtime(time.time()) y = str(dt[0]) m = '{0:02d}'.format(dt[1]) d = '{0:02d}'.format(dt[2]) if rqmsg.data_mark == 0: dt_today = int(m + d) dt_week = dt[6] + 1 if dt[6] < 6 else 0 strsql = 'select a.rtu_or_grp_id,a.loop_id,a.time_id, \ b.time_name,b.lux_on_value,b.lux_off_value, b.light_on_offset,b.light_off_offset, \ c.date_start,c.date_end,c.timetable_section_id,c.type_on,c.type_off,c.time_on,c.time_off,c.dayOfWeekUsed \ from {0}.rtu_timetable_reference as a \ left join {0}.time_table_info as b on a.time_id=b.time_id \ left join {0}.time_table_rule_info as c on a.time_id = c.time_id \ where c.date_start<={1} and c.date_end >={1} and c.dayOfWeekUsed like "%{2}%" {3} {4} \ order by a.rtu_or_grp_id,a.loop_id,a.time_id,c.timetable_section_id'.format( self._db_name, dt_today, dt_week, str_tmls, str_loops) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, buffer_tag=msg.head.paging_buffer_tag, paging_idx=msg.head.paging_idx, paging_num=msg.head.paging_num, multi_record=[0]) if record_total is None: msg.head.if_st = 45 else: for d in cur: dv = msgws.QueryRtuTimeTableBind.TimeTableBindView( ) dv.tml_id = d[0] dv.tml_loop_id = d[1] dv.tt_on_type = d[11] if d[11] == 1: dv.turn_on = d[4] elif d[11] == 2: r, s = self.get_sunriseset(dt_today) dv.turn_on = s + d[6] elif d[11] == 3: dv.turn_on = d[13] dv.tt_off_type = d[12] if d[12] == 1: dv.turn_off = d[5] elif d[12] == 2: r, s = self.get_sunriseset(dt_today) dv.turn_off = r + d[7] elif d[12] == 3: dv.turn_off = d[14] dv.dt_ctl = int(time.time()) dv.tt_section_id = d[10] msg.timetable_bind_view.extend([dv]) del dv self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data, user_uuid
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqQueryDataErr(), msgws.QueryDataErr()) if user_data is not None: if user_data['user_auth'] in libiisi.can_read: sdt, edt = self.process_input_date( rqmsg.dt_start, rqmsg.dt_end, to_chsarp=1) msg.type = rqmsg.type yield self.update_cache("r", user_uuid) if len(rqmsg.err_id) == 0: str_errs = '' else: str_errs = ' and a.fault_id in ({0}) '.format( ','.join([str(a) for a in rqmsg.err_id])) # 验证用户可操作的设备id if 0 in user_data['area_r'] or user_data['is_buildin'] == 1: if len(rqmsg.tml_id) > 0: tml_ids = list(rqmsg.tml_id) else: tml_ids = [] else: if len(rqmsg.tml_id) > 0: tml_ids = self.check_tml_r(user_uuid, list( rqmsg.tml_id)) else: tml_ids = libiisi.cache_tml_r[user_uuid] if len(tml_ids) == 0: msg.head.if_st = 11 if msg.head.if_st == 1: if len(tml_ids) == 0: str_tmls = '' else: str_tmls = ' and a.rtu_id in ({0}) '.format( ','.join([str(a) for a in tml_ids])) if rqmsg.confirm_type == 0: str_confirm = "" else: str_confirm = " and a.confirm = {0}".format( rqmsg.confirm_type) if rqmsg.type == 0: # 现存故障 strsql = 'select a.fault_id,b.fault_name,a.rtu_id,a.date_create,a.date_create, \ c.rtu_phy_id,c.rtu_name,a.loop_id,a.lamp_id,a.remark,a.error_count,a.v,a.a,b.fault_name_define,d.loop_name, \ a.confirm,a.svr_ip,a.svr_name,a.app_name \ from {2}.info_fault_exist as a left join {0}.fault_types as b \ on a.fault_id=b.fault_id right join {0}.para_base_equipment as c on a.rtu_id=c.rtu_id \ left join {0}.para_rtu_loop_info as d on a.rtu_id=d.rtu_id and a.loop_id=d.loop_id \ where a.date_create>={1} {3}'.format( self._db_name, sdt, self._db_name_data, str_confirm) if edt > 0: strsql += ' and a.date_create<={0}'.format(edt) if len(str_tmls) > 0: strsql += ' {0}'.format(str_tmls) if len(str_errs) > 0: strsql += ' {0}'.format(str_errs) strsql += ' order by a.date_create desc {0}'.format( self._fetch_limited) elif rqmsg.type == 1: # 历史故障 strsql = 'select a.fault_id,b.fault_name,a.rtu_id,a.date_create,a.date_remove, \ c.rtu_phy_id,c.rtu_name,a.loop_id,a.lamp_id,a.remark,a.lamp_id,a.v,a.a,b.fault_name_define,d.loop_name, \ a.confirm,a.svr_ip,a.svr_name,a.app_name \ from {3}.info_fault_history as a left join {0}.fault_types as b \ on a.fault_id=b.fault_id right join {0}.para_base_equipment as c on a.rtu_id=c.rtu_id \ left join {0}.para_rtu_loop_info as d on a.rtu_id=d.rtu_id and a.loop_id=d.loop_id \ where a.date_create <={1} and a.date_create >={2} {4}'.format( self._db_name, edt, sdt, self._db_name_data, str_confirm) if len(str_tmls) > 0: strsql += ' {0}'.format(str_tmls) if len(str_errs) > 0: strsql += ' {0}'.format(str_errs) strsql += ' order by a.date_create desc {0}'.format( self._fetch_limited) elif rqmsg.type == 2: # 现存仅返回数量 strsql = '''select count(a.rtu_id) from {3}.info_fault_exist as a where a.date_create >=0'''.format( self._db_name, edt, sdt, self._db_name_data) if len(str_tmls) > 0: strsql += ' {0}'.format(str_tmls) if len(str_errs) > 0: strsql += ' {0}'.format(str_errs) elif rqmsg.type == 3: # 历史仅返回数量 strsql = '''select count(a.rtu_id) from {3}.info_fault_history as a where a.date_create <={1} and a.date_create >={2} {4}'''.format( self._db_name, edt, sdt, self._db_name_data, str_confirm) if len(str_tmls) > 0: strsql += ' {0}'.format(str_tmls) if len(str_errs) > 0: strsql += ' {0}'.format(str_errs) if rqmsg.type in (0, 1): np = 1 else: np = 0 record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, need_paging=np, buffer_tag=rqmsg.head.paging_buffer_tag, paging_idx=rqmsg.head.paging_idx, paging_num=rqmsg.head.paging_num) if record_total is None: msg.head.if_st = 45 else: msg.head.paging_record_total = record_total msg.head.paging_buffer_tag = buffer_tag msg.head.paging_idx = paging_idx msg.head.paging_total = paging_total if rqmsg.type in (0, 1): for d in cur: errview = msgws.QueryDataErr.ErrView() errview.err_id = int(d[0]) errview.err_name = d[ 13] if d[13] is not None else '' errview.tml_id = int(d[2]) errview.dt_create = mx.switchStamp(int(d[3])) errview.dt_remove = mx.switchStamp(int(d[4])) errview.phy_id = int( d[5]) if d[5] is not None else 0 errview.tml_name = d[ 6] if d[6] is not None else '' errview.tml_sub_id1 = int(d[7]) errview.tml_sub_id2 = int(d[8]) errview.remark = d[9] errview.err_count = int(d[10]) errview.voltage = float(d[11]) errview.current = float(d[12]) # errview.err_name_custome = d[13] errview.tml_loop_name = d[ 14] if d[14] is not None else "" # 武汉特殊,融断器开路,火零不平衡报警取消回路名称结尾的’火线’二字 if errview.err_id in (25, 26): if errview.tml_loop_name.endswith(u'火线'): errview.tml_loop_name = errview.tml_loop_name.replace( u'火线', u'') # 广州新增 errview.confirm_type = int(d[15]) errview.server_ip = d[16] errview.server_name = d[17] errview.app_name = d[18] msg.err_view.extend([errview]) del errview elif rqmsg.type in (2, 3): msg.head.paging_record_total = cur[0][0] del cur, strsql self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data, user_uuid
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqQueryDataMru(), msgws.QueryDataMru()) if user_data is not None: if user_data['user_auth'] in libiisi.can_read: yield self.update_cache("r", user_uuid) sdt, edt = self.process_input_date( rqmsg.dt_start, rqmsg.dt_end, to_chsarp=1) if sdt + edt > 0: strdt = ' and a.date_create>={0} and a.date_create<={1}'.format( sdt, edt) else: strdt = '' # 验证用户可操作的设备id if 0 in user_data['area_r'] or user_data['is_buildin'] == 1: if len(rqmsg.tml_id) > 0: tml_ids = list(rqmsg.tml_id) else: tml_ids = [] else: if len(rqmsg.tml_id) > 0: tml_ids = self.check_tml_r(user_uuid, list( rqmsg.tml_id)) else: tml_ids = libiisi.cache_tml_r[user_uuid] if len(tml_ids) == 0: msg.head.if_st = 11 if msg.head.if_st == 1: if len(tml_ids) == 0: str_tmls = '' else: str_tmls = ' and a.meter_address in ({0}) '.format( ','.join([str(a) for a in tml_ids])) if rqmsg.company_id == -1: str_companyid = '' else: str_companyid = ' and a.company_id = {0} '.format( rqmsg.company_id) strsql = '''select a.date_create,a.meter_address,a.data_value,b.rtu_name,a.company_id from {0}.meter_day as a left join {0}.para_meter as b on a.meter_address=b.meter_address where 1=1 {1} {2} {3} {4}'''.format( self._db_name_data, strdt, str_tmls, str_companyid, self._fetch_limited) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, buffer_tag=msg.head.paging_buffer_tag, paging_idx=msg.head.paging_idx, paging_num=msg.head.paging_num) if record_total is None: msg.head.if_st = 45 else: msg.head.paging_record_total = record_total msg.head.paging_buffer_tag = buffer_tag msg.head.paging_idx = paging_idx msg.head.paging_total = paging_total for d in cur: dv = msgws.QueryDataMru.DataMruView() dv.dt_create = mx.switchStamp(int(d[0])) dv.tml_id = int(d[1]) dv.dt_mark = 0 dv.data_mark = 4 dv.mru_value = float( d[2]) if d[2] is not 0 else 0.0 dv.mru_name = d[3] if d[3] is not None else '' dv.company_id = d[4] msg.data_mru_view.extend([dv]) del cur, strsql self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data
def post(self): user_data, rqmsg, msg, user_uuid = yield self.check_arguments( msgws.rqQueryDataMru(), msgws.QueryDataMru()) if user_data is not None: if user_data['user_auth'] in libiisi.can_read: yield self.update_cache("r", user_uuid) sdt, edt = self.process_input_date( rqmsg.dt_start, rqmsg.dt_end, to_chsarp=1) if sdt + edt > 0: strdt = ' and a.date_create>={0} and a.date_create<={1}'.format( sdt, edt) else: strdt = '' # 验证用户可操作的设备id if 0 in user_data['area_r'] or user_data['is_buildin'] == 1: if len(rqmsg.tml_id) > 0: tml_ids = list(rqmsg.tml_id) else: tml_ids = [] else: if len(rqmsg.tml_id) > 0: tml_ids = self.check_tml_r(user_uuid, list( rqmsg.tml_id)) else: tml_ids = libiisi.cache_tml_r[user_uuid] if len(tml_ids) == 0: msg.head.if_st = 11 if msg.head.if_st == 1: if len(tml_ids) == 0: str_tmls = '' else: str_tmls = ' and a.rtu_id in ({0}) '.format( ','.join([str(a) for a in tml_ids])) if sdt == 0 and edt == 0: # 最新数据 strsql = '''select a.rtu_id,a.date_create,a.date_type_code,a.mru_type_code,a.mru_data, (b.mru_ratio * a.mru_data) / 5 as elec,c.rtu_name from {3}.data_mru_record as a left join {0}.para_mru as b on a.rtu_id=b.rtu_id left join {0}.para_base_equipment as c on c.rtu_id = a.rtu_id where EXISTS (select rtu_id,date_create from (select rtu_id,max(date_create) as date_create from {3}.data_mru_record group by rtu_id) as t where a.rtu_id=t.rtu_id and a.date_create=t.date_create) {1} {2} order by a.rtu_id,a.date_create desc'''.format( self._db_name, strdt, str_tmls, self._db_name_data) else: strsql = '''select a.rtu_id,a.date_create,a.date_type_code,a.mru_type_code,a.mru_data, (b.mru_ratio * a.mru_data) / 5 as elec,c.rtu_name from {5}.data_mru_record as a left join {0}.para_mru as b on a.rtu_id=b.rtu_id left join {0}.para_base_equipment as c on c.rtu_id = a.rtu_id where a.date_create>={1} and a.date_create<={2} {3} {4}'''.format( self._db_name, sdt, edt, str_tmls, self._fetch_limited, self._db_name_data) record_total, buffer_tag, paging_idx, paging_total, cur = yield self.mydata_collector( strsql, need_fetch=1, buffer_tag=msg.head.paging_buffer_tag, paging_idx=msg.head.paging_idx, paging_num=msg.head.paging_num) if record_total is None: msg.head.if_st = 45 else: msg.head.paging_record_total = record_total msg.head.paging_buffer_tag = buffer_tag msg.head.paging_idx = paging_idx msg.head.paging_total = paging_total for d in cur: dv = msgws.QueryDataMru.DataMruView() dv.dt_create = mx.switchStamp(int(d[1])) dv.tml_id = int(d[0]) dv.dt_mark = int(d[2]) dv.data_mark = int(d[3]) dv.mru_value = float(d[4]) dv.mru_elec = float( d[5]) if d[5] is not None else 0 dv.mru_name = d[6] if d[5] is not None else '' msg.data_mru_view.extend([dv]) del cur, strsql self.write(mx.code_pb2(msg, self._go_back_format)) self.finish() del msg, rqmsg, user_data