예제 #1
0
    def insertRSUDevice(self, data):

        s = rsuDeviceManage(self.db)
        db = self.getDB("public.device_list")

        systemUserID = self.GetSystemUserID()

        # 检查序列号是否重复
        result = db.findByCond(
            "device_sn", "device_sn = '%s' and system_user_id = %d " %
            (data['device_sn'], systemUserID))
        if len(result['rows']) > 0:
            raise BaseError(801, "数据错误:序列号 %s 已经存在!" % data['device_sn'])

        # 检查设备编号是否重复
        result = db.findByCond(
            "device_code", "device_code = '%s' and system_user_id = %d " %
            (data['device_code'], systemUserID))
        if len(result['rows']) > 0:
            raise BaseError(801, "数据错误:设备编号 %s 已经存在!" % data['device_code'])

        # 创建设备时默认为未连接状态
        data['device_status'] = '5'

        data['create_id'] = self.objUserInfo['id']
        data['create_time'] = datetime.datetime.now().strftime(
            '%Y-%m-%d %H:%M:%S')
        data['system_user_id'] = systemUserID

        device_id = s.save(data, table='public.device_list')

        return device_id
예제 #2
0
    def insertRSUData(self, data):

        s = rsuDeviceManage(self.db)
        systemUserID = self.GetSystemUserID()

        # 检查设备是否是否重复
        db = self.getDB("rsu.rsu_list")
        result = db.findByCond(
            "device_id", "device_id = '%s' and system_user_id = %d " %
            (data['device_id'], systemUserID))
        if len(result['rows']) > 0:
            raise BaseError(801, "数据错误:该设备已经存在!")

        # 检查IP地址是否重复
        condition = "(ip_address1 = '%s' or ip_address1 = '%s' or ip_address2 = '%s' or ip_address2 = '%s' ) and system_user_id = %d " % (
            data['ip_address1'], data['ip_address1'], data['ip_address1'],
            data['ip_address2'], systemUserID)
        result = db.findByCond("ip_address1", condition)
        if len(result['rows']) > 0:
            raise BaseError(
                801, "数据错误:IP 地址 %s, %s 已经存在!" %
                (data['ip_address1'], data['ip_address2']))

        data['create_id'] = self.objUserInfo['id']
        data['create_time'] = datetime.datetime.now().strftime(
            '%Y-%m-%d %H:%M:%S')
        data['system_user_id'] = systemUserID

        rsu_id = s.save(data, table='rsu.rsu_list')

        return rsu_id
예제 #3
0
    def put(self):

        alldata = self.getRequestData()
        if self.getParam(alldata, "id", 0) == 0:
            raise BaseError(801, "必须指定待更新信息的节目栏ID!")

        s = programUnitManage(self.db)

        lsData = {
            'id': 'id',
            'name': 'name',
            'start_time': 'start_time',
            'end_time': 'end_time',
            'list_id': 'list_id',
            'sort': 'sort',
        }

        data = {}
        for (k, v) in lsData.items():
            try:
                data[k] = alldata[v]
            except:
                pass

        db = self.getDB("pis.program_unit")

        # # 检查名称是否重复
        # result = db.findByCond("name", "name = '%s' and id <> %s "%(data['name'], data['id']) )
        # if len( result['rows'] ) > 0 :
        #     raise BaseError(801, "节目栏名称 %s 重复!"%data['name'])

        # 检查开始时间和结束时间是否重复
        cond = " (start_time < '%s' and end_time > '%s' " % (
            data['start_time'], data['end_time'])
        cond += " or start_time > '%s' and end_time < '%s' ) and ( id <> %d )" % (
            data['start_time'], data['end_time'], data['id'])
        cond += " and list_id = %d " % data['list_id']

        result = db.findByCond("id", cond)
        if len(result['rows']) > 0:
            raise BaseError(
                801,
                "节目栏时间 %s - %s 重复!" % (data['start_time'], data['end_time']))

        # # 检查序号是否重复
        # result = db.findByCond("id", "sort = %d and list_id = %d and id <> %d"%(data['sort'], data['list_id'], data['id']) )
        # if len( result['rows'] ) > 0 :
        #     raise BaseError(801, "节目栏序号 %d 在节目单中重复!"%data['sort'])

        data['update_time'] = datetime.datetime.now().strftime(
            '%Y-%m-%d %H:%M:%S')
        data['update_id'] = self.objUserInfo['id']
        id = s.save(data, data['id'], table='pis.program_unit')

        logInfo = "更新节目栏信息:开始时间:%s,结束时间:%s" % (data['start_time'],
                                               data['end_time'])

        operation_log(self.db).addLog(self.GetUserInfo(), "programUnitManage",
                                      logInfo, id)
        self.response(data)
예제 #4
0
    def delete(self):

        alldata = self.getRequestData()
        id = self.getParam(alldata, "id", 0)
        unit_id = self.getParam(alldata, "unit_id", 0)

        if id == 0 and unit_id == 0:
            raise BaseError(801, "参数错误:必须指定待更删除的节目ID!")

        if id > 0:
            # 删除单个节目记录,不删除文件
            logInfo = deleteProgramFile(self, alldata['list_id'],
                                        alldata['unit_id'], id, alldata)

        elif unit_id > 0:
            # 删除节目记录
            logInfo = deleteProgramFile(self, alldata['list_id'],
                                        alldata['unit_id'], 0, alldata)

        else:
            raise BaseError(801, "参数错误:必须指定待更删除的节目ID或节目栏ID!")

        # 记录日志并退出
        operation_log(self.db).addLog(self.GetUserInfo(), "programInfo",
                                      logInfo, id)

        self.response(id)
예제 #5
0
    def delete(self):

        alldata = self.getRequestData()
        s = programUnitManage(self.db)

        unit_id = self.getParam(alldata, "id", 0)
        if unit_id == 0:
            raise BaseError(801, "必须指定待更删除的节目栏ID!")

        list_id = self.getParam(alldata, "list_id", 0)
        if list_id == 0:
            raise BaseError(801, "必须指定待更删除车站归属的运营线路ID!")

        # 不删除节目栏归属的节目信息
        # programInfo.deleteProgramFile(self, list_id, unit_id, 0, alldata)

        logInfo = "删除节目栏:开始时间:%s, 结束时间:%s" % (alldata['start_time'],
                                              alldata['end_time'])

        # 删除节目栏记录
        s.remove(unit_id, table="pis.program_unit", key="id", delete=True)

        # 记录日志并退出
        operation_log(self.db).addLog(self.GetUserInfo(), "programUnitManage",
                                      logInfo, unit_id)

        self.response(unit_id)
예제 #6
0
	def post(self):

		alldata = self.getRequestData()

		s = rsuProjectManage(self.db)
		
		lsData = {
			'project_name'	: 'project_name',
			'project_amount': 'project_amount', 
			'sign_date' 	: 'sign_date',
			'sign_addr' 	: 'sign_addr',
			'parta_id'		: 'parta_id', 
			'parta_code' 	: 'parta_code',
			'parta_man_name': 'parta_man_name',
			'parta_title' 	: 'parta_title',
			'partb_id'		: 'partb_id', 
			'partb_code' 	: 'partb_code',
			'partb_man_name': 'partb_man_name',
			'partb_title' 	: 'partb_title',
		}

		data = {}
		for (k, v) in lsData.items():
			try:
				data[k] = alldata[v]
			except:
				pass

		# LogI("RSU 项目信息:", data)
		system_user_id = self.GetSystemUserID()

		db = self.getDB("rsu.rsu_project")

		# 只对比记录状态为正常的记录

		# 检查合同名称是否重复
		result = db.findByCond("project_name", "project_name = '%s' "%(data['project_name']))
		if len( result['rows'] ) > 0 :
			raise BaseError(801, "数据错误:合同 %s 已经存在!"%data['project_name'])

		# 检查合同编号是否重复
		result = db.findByCond("parta_code", "parta_code = '%s' and system_user_id = %d"%(data['parta_code'], system_user_id))
		if len( result['rows'] ) > 0 :
			raise BaseError(801, "数据错误:甲方合同编号 %s 已经存在!"%data['parta_code'])

		result = db.findByCond("partb_code", "partb_code = '%s' and system_user_id = %d"%(data['partb_code'], system_user_id))
		if len( result['rows'] ) > 0 :
			raise BaseError(801, "数据错误:乙方合同编号 %s 已经存在!"%data['partb_code'])

		data['create_id'] 		= self.objUserInfo['id']
		data['create_time'] 	= datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
		data['system_user_id'] 	= self.GetSystemUserID()

		id = s.save(data, table = 'rsu.rsu_project')

		# 创建项目成功,记录日志并退出
		operation_log(self.db).addLog(self.GetUserInfo(), "rsuProjectManage", 
			"%s 创建 RSU 项目:%s"%(self.objUserInfo['name'], data['project_name']), id)

		self.response(id)
예제 #7
0
    def delete(self):

        fileInfo = self.getRequestData()

        s = program_file(self.db)

        id = self.getParam(fileInfo, "id", 0)
        if id == 0:
            raise BaseError(801, "参数错误:缺少待更删除的节目文件ID!")

        filename = self.getParam(fileInfo, "file_name", "")
        if filename == "":
            raise BaseError(801, "参数错误:缺少待更删除的节目文件名称!")

        filePath = self.getParam(fileInfo, "file_path", "")
        if filePath == "":
            raise BaseError(801, "参数错误:缺少待更删除的节目文件路径!")

        logInfo = "%s 删除节目文件:名称:%s" % (self.objUserInfo['name'], filename)

        # 删除节目文件记录
        s.remove(id, table="pis.program_file", key="id", delete=True)

        # 删除节目文件
        # logI("删除文件:%s"%filePath)
        if os.path.exists(filePath):
            os.remove(filePath)

        # 记录日志并退出
        operation_log(self.db).addLog(self.GetUserInfo(), "programFileManage",
                                      logInfo, id)
        self.response(id)
예제 #8
0
    def post(self):

        alldata = self.getRequestData()

        s = gpsModuleManage(self.db)

        lsData = {
            'name': 'name',
            'code': 'code',
            'serial_no': 'serial_no',
            'device_type': 'device_type',
            'vendor': 'vendor',
            'mac_addr': 'mac_addr',
            'install_date': 'install_date',
            'install_batch': 'install_batch',
            'install_type': 'install_type',
            'install_id': 'install_id',
        }

        data = {}
        for (k, v) in lsData.items():
            try:
                data[k] = alldata[v]
            except:
                pass

        # LogI("定位模块信息:", data)

        db = self.getDB("iot.gps_module")

        # 检查定位模块名称是否重复
        result = db.findByCond("name", "name = '%s'" % (data['name']))
        if len(result['rows']) > 0:
            raise BaseError(801, "数据错误:定位模块名称 %s 已经存在!" % data['name'])

        # 检查定位模块编号是否重复
        result = db.findByCond("code", "code = '%s'" % (data['code']))
        if len(result['rows']) > 0:
            raise BaseError(801, "数据错误:定位模块编号 %s 已经存在!" % data['code'])

        # 检查定位模块MAC地址是否重复
        result = db.findByCond("mac_addr",
                               "mac_addr = '%s'" % (data['mac_addr']))
        if len(result['rows']) > 0:
            raise BaseError(801, "数据错误:定位模块MAC地址 %s 已经存在!" % data['mac_addr'])

        data['create_id'] = self.objUserInfo['id']
        data['create_time'] = datetime.datetime.now().strftime(
            '%Y-%m-%d %H:%M:%S')

        id = s.save(data, table='iot.gps_module')

        # 创建定位模块成功,记录日志并退出
        operation_log(self.db).addLog(
            self.GetUserInfo(), "gpsModuleManage",
            "%s 创建定位模块:名称:%s,编号:%s,MAC地址:%s" %
            (self.objUserInfo['name'], data['name'], data['code'],
             data['mac_addr']), id)

        self.response(id)
예제 #9
0
    def patch(self):

        alldata = self.getRequestData()
        stationID = self.getParam(alldata, "sid", 0)
        if stationID == 0:
            raise BaseError(801, "参数错误:缺少车站ID!")

        op = self.getParam(alldata, "op", "")
        if op == "":
            raise BaseError(801, "必须指定操作模式!")

        # 返回的数据
        data = {}

        if op == "line" or op == "both":

            # 运营线路列表
            sql = "select ol.id, ol.name "
            sql += " from pis.operation_line ol"
            sql += " inner join pis.station_line st on st.station_id = %d and st.line_id = ol.id" % stationID
            sql += " order by ol.code"

            cur = self.db.getCursor()
            cur.execute(sql)
            rows = cur.fetchall()

            lineList = {}
            lineList['struct'] = "id, name"
            lineList['rows'] = rows

            data['lineList'] = lineList

        if op == "data" or op == "both":
            # 获取指定车站开行信息

            cur = self.db.getCursor()

            sql = "select sl.id, sl.line_id, sl.station_id, sl.sort, sl.up_start_time, sl.up_end_time, "
            sql += " sl.down_start_time, sl.down_end_time, ol.name "
            sql += " from pis.station_line sl"
            sql += " inner join pis.operation_line ol on ol.id = sl.line_id"
            sql += " where sl.station_id = %s" % stationID
            sql += " order by sl.sort"

            cur.execute(sql)
            rows = cur.fetchall()

            selectedLineList = {}
            selectedLineList[
                'struct'] = "id, line_id, station_id, sort, up_start_time, up_end_time, "
            selectedLineList[
                'struct'] += "down_start_time, down_end_time, name"
            selectedLineList['rows'] = rows

            data['selectedLineList'] = selectedLineList

        self.response(data)
예제 #10
0
    def UpdateSubLineInfo(self, lid):
        if lid == 0:
            raise BaseError(801, "参数错误,无线路编号!")

        # 获取支线信息
        sql = """
			select sli.id, sli.line_id, sli.sub_line_name, sli.sub_line_name_en, sli.up_start_station, stus.name, stus.name_en, sli.up_end_station, stue.name, stue.name_en, 
			sli.down_start_station, stds.name, stds.name_en, sli.down_end_station, stde.name, stde.name_en, sli.up_start_time, sli.up_end_time, 
			sli.down_start_time, sli.down_end_time from pis.sub_line_info sli
			inner join pis.station stus on stus.id = sli.up_start_station
			inner join pis.station stue on stue.id = sli.up_end_station
			inner join pis.station stds on stds.id = sli.down_start_station
			inner join pis.station stde on stde.id = sli.down_end_station
			where sli.line_id = %d
			""" % lid

        cur = self.db.getCursor()
        cur.execute(sql)
        rows = cur.fetchall()

        key = [
            'id', 'line_id', 'sub_line_name', 'sub_line_name_en',
            'up_start_station', 'up_start_station_name',
            'up_start_station_name_en', 'up_end_station',
            'up_end_station_name', 'up_end_station_name_en',
            'down_start_station', 'down_start_station_name',
            'down_start_station_name_en', 'down_end_station',
            'down_end_station_name', 'down_end_station_name_en',
            'up_start_time', 'up_end_time', 'down_start_time', 'down_end_time'
        ]

        subLineList = []
        for item in rows:
            subLineInfo = dict(zip(key, item))
            subLineList.append(subLineInfo)

        msgInfo = {
            'msgType': 'line_info',
            'lineInfo': subLineList,
        }

        # 只发送给在线的控制器,非在线控制器在启动时会获取到最新的支线信息
        db = self.getDB("pis.controller")
        result = db.findByCond("id,code,ip_address,install_type",
                               "line_id=%d and status = '0' " % lid)
        items = dbResultToDict(result)

        if len(items) == 0:
            raise BaseError(801, "系统错误:无控制器, %d" % lid)

        msgInfo['controllerList'] = items

        SendMsgToController(self, msgInfo)

        return
예제 #11
0
    def InsertProgramInfo(self, lid, uid, file_name, duration, sort):
        cur = self.db.getCursor()

        # 检查节目文件是否已经存在
        sql = "select file_name, file_path from pis.program_file where file_name = '%s'" % file_name
        cur.execute(sql)
        # logI("查询:%s"%sql)
        rows = cur.fetchall()
        if len(rows) == 0:
            raise BaseError(801, "节目单中文件 %s 不存在,请先上传该文件!" % file_name)

        # 文件类型是否支持
        filenameItem = file_name.split(".")
        itemLen = len(filenameItem)
        if itemLen < 2:
            raise BaseError(801, "文件名 %s 无扩展名" % file_name)

        filetype = filenameItem[itemLen - 1]
        if filetype.lower() not in PisConfig['videoType']:
            raise BaseError(801, "节目文件 %s 类型不是mp4文件!" % file_name)

        filePath = rows[0][1]
        fileName = os.path.basename(filePath)
        fileInfo = {}
        fileInfo['name'] = file_name
        fileInfo['list_id'] = lid
        fileInfo['unit_id'] = uid

        fileInfo['program_type'] = filetype.upper()
        fileInfo['file_name'] = fileName
        fileInfo['file_path'] = filePath
        fileInfo['sort'] = sort
        fileInfo['duration'] = duration
        sort = sort + 1
        fileInfo['program_source'] = ""

        fileInfo['uploader_id'] = self.objUserInfo['id']
        fileInfo['uploader_name'] = self.objUserInfo['name']
        fileInfo['upload_date'] = datetime.datetime.now().strftime(
            '%Y-%m-%d %H:%M:%S')

        fileInfo['create_time'] = datetime.datetime.now().strftime(
            '%Y-%m-%d %H:%M:%S')
        fileInfo['create_id'] = self.objUserInfo['id']

        s = programUnitManage(self.db)
        id = s.save(fileInfo, table='pis.program_info')
        fileInfo['code'] = id
        s.save(fileInfo, id, table='pis.program_info')

        # 记录日志
        logInfo = "%s 上传了节目文件:名称:%s" % (self.objUserInfo['name'], file_name)
        operation_log(self.db).addLog(self.GetUserInfo(), "programFile",
                                      logInfo, id)
예제 #12
0
    def put(self):

        alldata = self.getRequestData()
        if self.getParam(alldata, "id", 0) == 0:
            raise BaseError(801, "必须指定待更新信息的车辆ID!")

        if self.getParam(alldata, "code", 0) == 0:
            raise BaseError(801, "必须指定待更新信息的车辆编码!")

        s = vehicleManage(self.db)

        lsData = {
            'id': 'id',
            'name': 'name',
            'code': 'code',
            'serial_no': 'serial_no',
            'type': 'type',
            'default_count': 'default_count',
            'train_id': 'train_id',
            'description': 'description',
        }

        data = {}
        for (k, v) in lsData.items():
            try:
                data[k] = alldata[v]
            except:
                pass

        # 检查车站名称是否重复
        db = self.getDB("pis.vehicle")
        result = db.findByCond(
            "serial_no",
            "serial_no = '%s' and id <> %s " % (data['serial_no'], data['id']))
        if len(result['rows']) > 0:
            raise BaseError(801, "车辆序列号 %s 重复!" % data['serial_no'])

        # 检查车辆编号是否重复
        result = db.findByCond(
            "code", "code = '%s' and id <> %s " % (data['code'], data['id']))
        if len(result['rows']) > 0:
            raise BaseError(801, "车辆编号 %s 已经存在!" % data['code'])

        data['update_time'] = datetime.datetime.now().strftime(
            '%Y-%m-%d %H:%M:%S')
        data['update_id'] = self.objUserInfo['id']
        id = s.save(data, data['id'], table='pis.vehicle')

        logInfo = "更新车辆信息:名称:%s,编号:%s" % (data['name'], data['code'])

        operation_log(self.db).addLog(self.GetUserInfo(), "vehicleManage",
                                      logInfo, id)
        self.response(id)
예제 #13
0
    def sendMessageToDevice(self, paramData):

        msgType = self.getParam(paramData, "msgType", "")
        if msgType == "":
            raise BaseError(801, "参数错误:缺少消息类别")

        deviceList = self.getParam(paramData, "deviceList", [])
        if len(deviceList) == 0:
            raise BaseError(801, "参数错误:无设备列表!")

        deviceList = self.getDeviceList(deviceList)

        logInfo = ""
        data = {}
        if msgType == "update":
            data['message_type'] = RSU_MSG_UpdateSoftware
            file_name = self.getParam(paramData, "file_name", "")
            if file_name == "":
                raise BaseError(801, "参数错误:无版本文件名称!")

            file_path = self.getParam(paramData, "file_path", "")
            if file_path == "":
                raise BaseError(801, "参数错误:无版本文件路径!")

            data['file_name'] = file_name
            data['file_path'] = file_path
            data['updateMode'] = self.getParam(paramData, "UpdateMode", 0)

            logInfo = "%s Send RSU_MSG_UpdateSoftware to device, filename: %s" % (
                self.objUserInfo['name'], file_name)

        elif msgType == "reboot":
            data['message_type'] = RSU_MSG_Reboot
            data['delay_second'] = self.getParam(paramData, "delay_second", 0)
            data['reboot_mode'] = self.getParam(paramData, "rebootMode", 1)

            if data['reboot_mode'] == 0:
                modeStr = "Reboot Application"
            else:
                modeStr = "Reboot System"
            logInfo = "%s Send RSU_MSG_Reboot to device, RebootMode: %s, DelayTime: %d" % (
                self.objUserInfo['name'], modeStr, data['delay_second'])

        # 操作日志
        operation_log(self.db).addLog(self.GetUserInfo(), "rsuDeviceManage",
                                      logInfo, 0)

        _thread.start_new_thread(self.SendMessage, (
            deviceList,
            data,
        ))
        self.response(0)
예제 #14
0
    def patch(self):

        paramData = self.getRequestData()
        op = self.getParam(paramData, "op", "")
        if op == "":
            raise BaseError(801, "参数错误:缺少操作模式参数OP")

        cur = self.db.getCursor()

        if op == "list":
            # 返回的数据
            data = {}

            # 版式文件列表
            sql = "select pf.id, pf.file_name "
            sql += " from pis.program_file pf"
            sql += " order by pf.file_name"

            cur.execute(sql)
            rows = cur.fetchall()

            nameList = {}
            nameList['struct'] = "id, name"
            nameList['rows'] = [(
                0,
                "选择全部",
            )] + rows

            data['nameList'] = nameList

            # 上传人员列表
            sql = "select a.id, a.name "
            sql += " from system.account a"
            sql += " where a.id = (select distinct(uploader_id) from pis.program_file) "
            sql += " order by a.id"

            cur.execute(sql)
            rows = cur.fetchall()

            uploaderList = {}
            uploaderList['struct'] = "id, name"
            uploaderList['rows'] = [(
                '0',
                "选择全部",
            )] + rows

            data['uploaderList'] = uploaderList

            self.response(data)

        else:
            raise BaseError(801, "参数错误:操作类型参数OP值错误!")
예제 #15
0
    def addLog2(self, userInfo, logData):
        if not logData['operator_id'] or not logData['menu_code'] or not logData['operation_context'] or not logData['operation_id']:
            raise BaseError(801)

        logData['system_user_id'] = userInfo['system_user_id']

        logData['create_time']=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))
        id = self.save(logData, table='system.operation_log')
        if id <= 0:
            raise BaseError(703)
        
        return True
        
예제 #16
0
    def post(self):

        alldata = self.getRequestData()

        s = vehicleManage(self.db)

        lsData = {
            'name': 'name',
            'code': 'code',
            'serial_no': 'serial_no',
            'type': 'type',
            'default_count': 'default_count',
            'train_id': 'train_id',
            'description': 'description',
        }

        data = {}
        for (k, v) in lsData.items():
            try:
                data[k] = alldata[v]
            except:
                pass

        # 检查车辆编号是否重复
        db = self.getDB("pis.vehicle")
        result = db.findByCond("code", "code = '%s' " % data['code'])
        if len(result['rows']) > 0:
            raise BaseError(801, "车辆编号 %s 已经存在!" % data['code'])

        # 检查序列号是否重复
        result = db.findByCond("serial_no",
                               "serial_no = '%s' " % data['serial_no'])
        if len(result['rows']) > 0:
            raise BaseError(801, "车辆序列号 %s 已经存在!" % data['serial_no'])

        # 新建车站

        data['create_id'] = self.objUserInfo['id']
        data['create_time'] = datetime.datetime.now().strftime(
            '%Y-%m-%d %H:%M:%S')

        # 创建车站记录
        vid = s.save(data, table='pis.vehicle')

        # 创建车辆成功,记录日志并退出
        operation_log(self.db).addLog(
            self.GetUserInfo(), "vehicleManage",
            "创建车辆信息:名称:%s,编号:%s" % (data['name'], data['code']), vid)

        self.response(vid)
예제 #17
0
    def patch(self):

        alldata = self.getRequestData()
        op = self.getParam(alldata, "op", "")
        if op == "":
            raise BaseError(801, "必须指定操作模式!")

        if op == "train":
            # 列车列表

            # 返回的数据
            data = {}

            sql = "select t.id, t.name "
            sql += " from pis.train t"
            sql += " order by t.code"

            cur = self.db.getCursor()
            cur.execute(sql)
            rows = cur.fetchall()

            # logI("列车", sql, rows)

            trainList = {}
            trainList['struct'] = "id, name"
            trainList['rows'] = rows

            data['trainList'] = trainList

            self.response(data)

        # elif op == "data":
        # 	# 获取所有列车的车辆、控制器信息

        # 	trainList = self.getTrainList()

        # 	treeTreeNode = {}
        # 	treeTreeNode['name'] 		= "列车列表"
        # 	treeTreeNode['children'] 	= trainList
        # 	treeTreeNode['chkDisabled'] = True
        # 	treeTreeNode['open']	 	= True
        # 	treeTreeNode['checked']  	= False
        # 	treeTreeNode['isItem']   	= False
        # 	treeTreeNode['nodeType'] 	= 'root'

        # 	logI("列车:", treeTreeNode)
        # 	self.response(treeTreeNode)

        else:
            raise BaseError(801, "参数错误:指定的操作类型OP错误!")
예제 #18
0
    def put(self):

        alldata = self.getRequestData()
        if self.getParam(alldata, "id", 0) == 0:
            raise BaseError(801, "参数错误:缺少待更新信息的列车ID!")

        line_name = self.getParam(alldata, "name", "")
        if line_name == "":
            raise BaseError(801, "参数错误,无列车名称!")

        s = trainManage(self.db)

        # 只能更新列车名称及描述
        lsData = {
            'id': 'id',
            'name': 'name',
            'name_en': 'name_en',
            # 'code'			: 'code',
            'description': 'description',
        }

        data = {}
        for (k, v) in lsData.items():
            try:
                data[k] = alldata[v]
            except:
                pass

        # 检查列车名称是否重复
        db = self.getDB("pis.train")
        result = db.findByCond(
            "name", "(name = '%s' or name_en = '%s') and id <> %s " %
            (data['name'], data['name_en'], data['id']))
        if len(result['rows']) > 0:
            raise BaseError(801, "数据错误:列车名称重复!")

        data['update_time'] = datetime.datetime.now().strftime(
            '%Y-%m-%d %H:%M:%S')
        data['update_id'] = self.objUserInfo['id']

        id = s.save(data, data['id'], table='pis.train')

        logInfo = "更新列车信息:名称:%s,%s,编号:%s" % (data['name'], data['name_en'],
                                             data['code'])

        operation_log(self.db).addLog(self.GetUserInfo(), "trainManage",
                                      logInfo, id)
        self.response(id)
예제 #19
0
    def delete(self):

        alldata = self.getRequestData()
        if self.getParam(alldata, "id", 0) == 0:
            raise BaseError(801, "必须指定待删除的公告ID!")

        bid = self.getParam(alldata, "id", 0)

        s = oaBulletinBoardManager(self.db)

        sql = " select bb.title, bb.code from oa.bulletinboard bb "
        sql += " where bb.id = %s" % bid

        cur = self.db.getCursor()
        cur.execute(sql)
        rows = cur.fetchall()
        logInfo = "删除公告:标题:%s, 编号:%s" % (rows[0][0], rows[0][1])

        # 删除记录,将数据移动到历史表中
        MoveDeleteRecord("oa", "bulletinboard", bid, self.GetUserID())

        # 记录日志并退出
        operation_log(self.db).addLog(self.GetUserInfo(),
                                      "BulletinBoardManage", logInfo, bid)

        self.response(bid)
예제 #20
0
    def delete(self):
        alldata = self.getRequestData()
        vid = self.getParam(alldata, "vid", 0)
        if vid == 0:
            raise BaseError(801, "必须指定待更删除的车辆ID!")

        sql = " select v.serial_no, v.code from pis.vechicle v "
        sql += " where v.id = %s" % vid

        cur = self.db.getCursor()
        cur.execute(sql)
        rows = cur.fetchall()
        logInfo = "删除车辆:序列号:%s, 编号:%s" % (rows[0][0], rows[0][1])

        # 删除车辆记录
        s.remove(vid, table="pis.vechicle", key="id", delete=True)

        # 删除车站安装的控制器信息

        # 记录日志并退出
        operation_log(self.db).addLog(self.GetUserInfo(), "vehicleManage",
                                      logInfo, sid)

        # 重新获取线路的车站列表,以更新站点树
        # lineNode = lineManage.getStationList(lid)

        self.response(vid)
예제 #21
0
    def delete(self):

        alldata = self.getRequestData()
        subLineID = self.getParam(alldata, "id", 0)
        if subLineID == 0:
            raise BaseError(801, "参数错误:缺少待更删除的支线ID!")

        sql = " select sli.sub_line_name, sli.line_id from pis.sub_line_info sli "
        sql += " where sli.id = %s" % subLineID

        cur = self.db.getCursor()
        cur.execute(sql)
        rows = cur.fetchall()
        logInfo = "删除运营支线:名称:%s, 所属运营线路ID: %d" % (rows[0][0], rows[0][1])

        s = subLineInfoManage(self.db)
        s.remove(subLineID, table="pis.sub_line_info", key="id", delete=True)

        # 记录日志并退出
        operation_log(self.db).addLog(self.GetUserInfo(), "subLineInfoManage",
                                      logInfo, subLineID)

        # 更新支线信息
        self.UpdateSubLineInfo(rows[0][1])

        self.response(subLineID)
예제 #22
0
    def delete(self):

        listInfo = self.getRequestData()

        # logI("待删除节目单信息:", listInfo)

        id = self.getParam(listInfo, "id", 0)
        if id == 0:
            raise BaseError(801, "参数错误:缺少待更删除的节目单ID!")

        logInfo = "%s 删除节目单及相关节目栏、节目信息:节目单名称:%s, 生效效期:%s" % (
            self.objUserInfo['name'], listInfo['name'], listInfo['valid_date'])

        # 不删除节目文件

        # 删除节目单所有的节目信息
        s = programList(self.db)
        s.remove(id, table="pis.program_info", key="list_id", delete=True)

        # 删除节目栏记录
        s.remove(id, table="pis.program_unit", key="list_id", delete=True)

        # 删除节目单记录
        s.remove(id, table="pis.program_list", key="id", delete=True)

        # 记录日志并退出
        operation_log(self.db).addLog(self.GetUserInfo(), "programList",
                                      logInfo, id)
        self.response(id)
예제 #23
0
    def get(self):

        lid = int(self.get_argument('lid', default='0'))
        if lid == 0:
            raise BaseError(801, "参数错误:缺少线路ID!")

        rowdata = {}
        cur = self.db.getCursor()

        sql = "select t.id, t.create_time, t.update_time, t.create_id, t.update_id, "
        sql += " t.name, t.name_en, t.code, t.description, t.line_id, t.sort, ol.name "
        sql += " from pis.train t "
        sql += " inner join pis.operation_line ol on ol.id = t.line_id"
        sql += " where t.line_id = %d" % lid
        sql += " order by t.code"

        cur.execute(sql)
        rows = cur.fetchall()

        rowdata[
            'struct'] = "id, create_time, update_time, create_id, update_id, name, name_en, code, description, line_id, sort, line_name"
        rowdata['rows'] = rows

        sql = "select count(*) from pis.train t  "

        cur.execute(sql)
        row = cur.fetchone()
        rowdata['count'] = row[0]

        trainInfo = {}
        trainInfo['trainList'] = rowdata

        self.response(trainInfo)
예제 #24
0
    def delete(self):
        alldata = self.getRequestData()
        tid = self.getParam(alldata, "id", 0)
        if tid == 0:
            raise BaseError(801, "参数错误:缺少待更删除的列车ID!")

        sql = " select t.name, t.code from pis.train t "
        sql += " where t.id = %s" % tid

        cur = self.db.getCursor()
        cur.execute(sql)
        rows = cur.fetchall()
        logInfo = "删除列车:名称:%s, 编号:%s" % (rows[0][0], rows[0][1])

        # 删除列车的控制器
        sql = "delete from pis.controller ct where ct.install_id = %d and ct.install_type < '2' " % tid
        cur.execute(sql)

        s = trainManage(self.db)

        # 删除列车记录
        s.remove(tid, table="pis.train", key="id", delete=True)

        # 记录日志并退出
        operation_log(self.db).addLog(self.GetUserInfo(), "trainManage",
                                      logInfo, tid)
        self.response(tid)
예제 #25
0
    def get(self):

        lid = int(self.get_argument('lid', default='0'))
        if lid == 0:
            raise BaseError(801, "参数错误:缺少线路ID!")

        sql = " select st.id, st.name, st.name_en, st.code, st.type, st.ip_address, st.description, st.status"
        sql += " from pis.station st"
        sql += " inner join pis.station_line sl on sl.station_id = st.id and sl.line_id =%d" % lid
        sid = int(self.get_argument('sid', default='0'))
        if sid != 0:
            sql += " where st.id = %d" % sid
        sql += " order by sl.sort"

        cur = self.db.getCursor()
        cur.execute(sql)
        rows = cur.fetchall()

        rowdata = {}

        stationList = {}
        stationList['rows'] = rows
        stationList[
            'struct'] = "id, name, name_en, code, type, ip_address, description, status"

        sql = "select count(st.id) from pis.station st "
        sql += " inner join pis.station_line sl on sl.station_id = st.id and sl.line_id =%d" % lid

        cur.execute(sql)
        row = cur.fetchone()
        stationList['count'] = row[0]

        self.response(stationList)
예제 #26
0
    def post(self):

        alldata = self.getRequestData()

        s = lineManage(self.db)

        lsData = {
            'name': 'name',
            'name_en': 'name_en',
            'code': 'code',
            'memo': 'memo',
        }

        data = {}
        for (k, v) in lsData.items():
            try:
                data[k] = alldata[v]
            except:
                pass

        # 检查线路名称是否重复
        db = self.getDB("pis.operation_line")
        result = db.findByCond(
            "name",
            "name = '%s' or name_en = '%s' " % (data['name'], data['name_en']))
        if len(result['rows']) > 0:
            raise BaseError(801, "数据错误:运营线路名称已经存在!")

        # 检查线路编号是否重复
        db = self.getDB("pis.operation_line")

        result = db.findByCond("code", "code = '%s' " % data['code'])
        if len(result['rows']) > 0:
            raise BaseError(801, "数据错误:运营线路编号已经存在!")

        data['create_id'] = self.objUserInfo['id']
        data['create_time'] = datetime.datetime.now().strftime(
            '%Y-%m-%d %H:%M:%S')

        id = s.save(data, table='pis.operation_line')

        # 创建线路成功,记录日志并退出
        operation_log(self.db).addLog(
            self.GetUserInfo(), "lineManage",
            "创建运营线路:线路名称:%s,线路编号:%s" % (data['name'], data['code']), id)

        self.response(id)
예제 #27
0
    def getFileParam(self, file_path):

        fileParam = {}
        logI("版式文件路径:", file_path)
        xmlFilePath = os.path.abspath(file_path)

        try:
            tree = ET.parse(xmlFilePath)
            # print ("tree type:", type(tree))

            # 获得根节点
            root = tree.getroot()
        except Exception as e:  #捕获除与程序退出sys.exit()相关之外的所有异常
            logI("parse %s fail!" % file_path)
            raise BaseError(801, "参数错误:版式文件ID错误,找不到数据!")

        # 背景图片
        Background = root.findall("Background")
        if len(Background) == 0:
            raise BaseError(801, "版式文件格式错误:无背景图片定义!")

        item = Background[0]
        fileParam['background'] = item.attrib['imagepath']

        # 各区域参数
        fileParam['vedio'] = self.getParamUnit(root, 'Vedio', flag=False)
        fileParam['message'] = self.getParamUnit(root, 'Message')
        fileParam['emergency'] = self.getParamUnit(root, 'Emergency')
        fileParam['date'] = self.getParamUnit(root, 'Date')
        fileParam['week_ch'] = self.getParamUnit(root, 'Week_ch')
        fileParam['week_en'] = self.getParamUnit(root, 'Week_en')
        fileParam['time'] = self.getParamUnit(root, 'Time')
        fileParam['first_Up_Station_ch'] = self.getParamUnit(
            root, 'First_Up_Station_ch')

        fileParam['last_Up_Station_ch'] = self.getParamUnit(
            root, 'Last_Up_Station_ch')
        fileParam['first_Up_Time'] = self.getParamUnit(root, 'First_Up_Time')
        fileParam['last_Up_Time'] = self.getParamUnit(root, 'Last_Up_Time')
        fileParam['first_Down_Time'] = self.getParamUnit(
            root, 'First_Down_Time')
        fileParam['last_Down_Time'] = self.getParamUnit(root, 'Last_Down_Time')

        #logI("版式文件参数:", fileParam)
        return fileParam
예제 #28
0
    def post(self):

        alldata = self.getRequestData()

        s = programList(self.db)

        lsData = {
            'name': 'name',
            'valid_date': 'valid_date',
            'video_type': 'video_type',
        }

        data = {}
        for (k, v) in lsData.items():
            try:
                data[k] = alldata[v]
            except:
                pass

        # 检查名称是否重复
        db = self.getDB("pis.program_list")
        result = db.findByCond("name", "name = '%s' " % data['name'])
        if len(result['rows']) > 0:
            raise BaseError(801, "数据错误:节目单名称已经存在!")

        data['create_id'] = self.objUserInfo['id']
        data['create_time'] = datetime.datetime.now().strftime(
            '%Y-%m-%d %H:%M:%S')

        # 节目单初始值
        data['apply_status'] = '1'  # 未提交审核

        id = s.save(data, table='pis.program_list')

        data['code'] = id
        s.save(data, id, table='pis.program_list')

        # 创建节目栏
        hour = 0
        while hour < 24:
            unit = {
                'list_id': id,
                'start_time': "%02d:00:00" % hour,
                'end_time': "%02d:59:59" % hour,
                'sort': hour - 4,
            }
            hour += 1
            uid = s.save(unit, table="pis.program_unit")
            unit['code'] = uid
            s.save(unit, uid, table="pis.program_unit")

        # 创建节目单成功,记录日志并退出
        operation_log(self.db).addLog(
            self.GetUserInfo(), "listManage", "%s 创建节目单:名称:%s,生效日期:%s" %
            (self.objUserInfo['name'], data['name'], data['valid_date']), id)

        self.response(id)
예제 #29
0
	def patch(self):

		s = messageListManage(self.db)

		paramData = self.getRequestData()
		dataType  = self.getParam( paramData, 'dt', 'current')
		if dataType == "current":
			tableName = "pis.message_list"
		elif dataType == "history":
			tableName = "pis.message_list_history"
		else:
			raise BaseError(801, "参数错误:查询来源类型错误!") 

		data = {}

		cur = self.db.getCursor()

		# 发送方列表
		sql = "select distinct(sender_name), sender_id from %s where sender_name is not null order by sender_name"%tableName
		cur.execute(sql)
		rows = cur.fetchall()

		senderList = {
			'rows' : [("选择全部", 0, "")] + rows,
			'struct' : 'name, id',
		}

		data['senderList'] = senderList

		# 消息类别
		sql = "select cv.name, cv.code from system.code_value cv "
		sql += " where cv.type_code = 'MESSAGE_TYPE' "
		sql += " and to_number(cv.code, '999') < 100 and to_number(cv.code, '999') > 1 "
		sql += " and POSITION( 'ACK' in cv.description ) = 0"
		sql += " order by cv.sort"
		cur.execute(sql)
		rows = cur.fetchall()

		msgTypeList = {
			'rows' : [("选择全部", '0', "")] + rows,
			'struct' : 'name, code',
		}
		data['msgTypeList'] = msgTypeList

		# 消息发送状态
		sql = "select cv.name, cv.code from system.code_value cv where cv.type_code = 'PROGRAM_SEND_STATUS' order by cv.sort "
		cur.execute(sql)
		rows = cur.fetchall()

		sendStatusList = {
			'rows' : [("选择全部", '0', "")] + rows,
			'struct' : 'name, code',
		}
		data['sendStatusList'] = sendStatusList

		self.response(data)
예제 #30
0
    def SendMessage(self, deviceList, msgData):
        rsuMsgServer = None
        for item in SystemModuleList:
            if item['name'] == 'rsu':
                rsuMsgServer = item['server']

        if rsuMsgServer == None:
            raise BaseError(801, "系统错误:未加载RSU模块,请检查配置文件!")

        rsuMsgServer.sendMessage(deviceList, msgData)