Exemple #1
0
    def kill_process(self, process_list):
        try:
            #
            for i in process_list:
                # print(i)
                logger.info('Star kill process:{}!'.format(i))
                if i.find('om.exe') > -1:
                    command = r'wmic process where name="{program}" delete'.format(
                        program=i)
                else:
                    command = 'taskkill /f /t /im {program}'.format(program=i)
                temp = os.system(command)
                # if self.is_admin():
                #     print("以管理员权限运行")
                #     temp=os.system(command)
                # else:
                #     if sys.version_info[0] == 3:
                #         print("无管理员权限")
                #         ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)

                logger.info('End kill prcess:{} !'.format(i))
        except Exception as e:
            logger.error(
                'kill all process error!原因:{},filename:{},line:{}'.format(
                    e, e.__traceback__.tb_frame.f_globals['__file__'],
                    e.__traceback__.tb_lineno))
def api_check_object_task_by_status(status_id):
    try:
        new_check_object_task_url = check_object_task_url + '?status_id={}'.format(
            status_id)
        pr = requests.get(url=new_check_object_task_url, headers=pheaders)
        logger.info(
            f'-----url:{ new_check_object_task_url},返回:{pr.status_code}')
        if (pr.status_code == 200):
            return_dict = eval(
                pr.text.replace('null', 'None').replace('false',
                                                        'False').replace(
                                                            'true', 'True'))
            object_task_num = len(return_dict)
            return object_task_num
        else:
            logger.info(
                f'---------------check_id:{current_check_id}---------Failed :api_check_agv_commands! agv_list:{status_id},status_code:{pr.status_code}'
            )
            return None

    except Exception as e:
        logger.error(
            f'---------------check_id:{current_check_id}---------api_check_agv_commands Error!!results:{e}'
        )
        return None
Exemple #3
0
 def get_agv_info_from_docks(self):
     try:
         #打开xml文档
         dom = minidom.parse(self.dockspath)
         #得到文档元素对象
         root = dom.documentElement
         docks = root.getElementsByTagName('dock')
         choice_docks = random.sample(docks, int(self.need_get_agv_num))
         agv_info = []
         for sd in choice_docks:
             #dock点
             docks_id = sd.getElementsByTagName("id")[0].childNodes[0].data
             docks_info = sd.getElementsByTagName("pos")[0]
             #x值、y值、坐标
             x = docks_info.getAttribute("x")
             y = docks_info.getAttribute("y")
             angle = docks_info.getAttribute("angle")
             single_dock_info = (docks_id, x, y, angle)
             # print(docks_id,x,y,angle)
             logger.info(f'get docks info:{docks_id},{x},{y},{angle}')
             agv_info.append(single_dock_info)
         return agv_info
     except Exception as e:
         logger.error(
             'get_agv_info_from_docks error!原因:{},filename:{},line:{}'.
             format(e, e.__traceback__.tb_frame.f_globals['__file__'],
                    e.__traceback__.tb_lineno))
Exemple #4
0
 def check_sheet_and_clear_content(self, excel_name, sheet_name,
                                   title_list):
     try:
         isexists = os.path.exists(excel_name)
         if isexists:
             wb = xlrd.open_workbook(excel_name)
             sheet_names = wb.sheet_names()
             # print(f'sheet_names:{sheet_names},{self.sheet_name in sheet_names}')
             if (sheet_name not in sheet_names):
                 logger.info(
                     f'current file:{excel_name} unexists sheet:{sheet_name},need create sheet!'
                 )
                 self.Add_sheet(excel_name, sheet_name)
                 self.write_title_cell(excel_name, sheet_name, title_list)
             else:
                 sheet = wb.sheet_by_name(self.sheet_name)
                 current_title = sheet.row_values(0)
                 current_rows = sheet.nrows
                 checkinfo = [
                     xx for xx in title_list if xx not in current_title
                 ]
                 if (checkinfo != [] or current_rows > 1):
                     logger.info(
                         f'current file:{excel_name} title error or have content,detele sheet and add new!'
                     )
                     self.remove_sheet(excel_name, sheet_name)
                     self.Add_sheet(excel_name, sheet_name)
                     self.write_title_cell(excel_name, sheet_name,
                                           title_list)
     except Exception as e:
         logger.error(
             'check_sheet_and_clear_content error!原因:{},filename:{},line:{}'
             .format(e, e.__traceback__.tb_frame.f_globals['__file__'],
                     e.__traceback__.tb_lineno))
Exemple #5
0
 def copy_layout_to_general_process(self):
     try:
         logger.info('------start copy layout and eg.-----')
         dispath_l = os.path.join(self.dispathpath, 'etc')
         enginepath_l = os.path.join(self.enginepath, 'etc')
         if not os.path.exists(dispath_l):
             os.makedirs(dispath_l)
         if not os.path.exists(enginepath_l):
             os.makedirs(enginepath_l)
         # 清空文件
         self.detele_path(dispath_l)
         self.detele_path(enginepath_l)
         # 复制文件
         dirlist = os.listdir(self.layoutpath)
         for dir in dirlist:
             source = os.path.join(self.layoutpath, dir)
             if (dir == 'docks.xml' or dir == 'layout.xml'):
                 shutil.copy(source, dispath_l)
                 logger.info('copy dir:{} to "{}"'.format(
                     source, dispath_l))
                 shutil.copy(source, enginepath_l)
                 logger.info('copy dir:{} to "{}"'.format(
                     source, enginepath_l))
             else:
                 shutil.copy(source, enginepath_l)
                 logger.info('copy dir:{} to "{}"'.format(
                     source, enginepath_l))
         logger.info('------end copy layout and eg.-----')
     except Exception as e:
         logger.error('copy layout error!原因:{}'.format(e))
Exemple #6
0
 def func_engine(self):
     try:
         logger.info('Start open engine process!')
         results = os.startfile(self.engine_process_path)
         logger.info(
             'End open engine process!,return content:{}'.format(results))
     except Exception as e:
         logger.error('open engine process error!原因:{}'.format(e))
Exemple #7
0
 def func_gui_web(self):
     try:
         logger.info('start open gui in  web!')
         command = r'cd /d ' + self.chromepath + ' && start chrome.exe http://127.0.0.1:2000'
         results = os.system(command)
         logger.info(
             'End open gui in  web!return content:{}'.format(results))
     except Exception as e:
         logger.error('open gui in web error!原因:{}'.format(e))
Exemple #8
0
 def func_rest_api(self):
     try:
         logger.info('start open rest_api process!')
         command1 = r'cd /d ' + self.rest_api_path + ' && start ' + self.rest_api_process_name
         results = os.system(command1)
         logger.info(
             'End open rest_api process!return content:{}'.format(results))
     except Exception as e:
         logger.error('open rest_api error!原因:{}'.format(e))
Exemple #9
0
    def func_guiservice(self):
        try:
            logger.info('start guiservice process!')
            command = r'cd /d ' + configs.guiservice_path + ' && start  ' + configs.guiservice_process_name
            results = os.system(command)
            logger.info('End open guiservice process!return content:{}'.format(
                results))

        except Exception as e:
            logger.error('open guiservice error!原因:{}'.format(e))
Exemple #10
0
    def func_nginx(self):
        try:
            logger.info('start ngnix process!')
            command = r'cd /d ' + configs.nginx_path + ' && start ' + configs.nginx_process_name
            results = os.system(command)
            logger.info(
                'End open nginx process!return content:{}'.format(results))

        except Exception as e:
            logger.error('open nginx error!原因:{}'.format(e))
Exemple #11
0
 def func_om(self):
     try:
         logger.info('Start open om process!')
         # results=os.startfile(self.engine_process_path)
         command = r'cd /d ' + self.ompath + ' && start  ' + configs.om_process_name
         results = os.system(command)
         logger.info(
             'End open om process!,return content:{}'.format(results))
     except Exception as e:
         logger.error('open om process error!原因:{}'.format(e))
Exemple #12
0
 def func_dispath(self):
     try:
         logger.info('Start open dispath process!')
         command = r'cd /d ' + self.dispathpath + ' && start ' + self.i_dispath_process_name
         results = os.system(command)
         # results=os.startfile(self.dispath_process_path)
         logger.info(
             'End open dispath process!,return content:{}'.format(results))
     except Exception as e:
         logger.error('open dispath process error!原因:{}'.format(e))
Exemple #13
0
    def func_monitor(self):
        try:
            logger.info('start open monitor process!')
            command = r'cd /d ' + self.i_monitorpath + ' && start ' + self.i_monitor_process_name
            results = os.system(command)
            logger.info(
                'End open monitor process!return content:{}'.format(results))

        except Exception as e:
            logger.error('open monitor error!原因:{}'.format(e))
Exemple #14
0
 def detele_path_files(self, path, de_file):
     try:
         de_path = os.path.join(path, de_file)
         if os.path.exists(de_path):
             os.remove(de_path)
             logger.info('start detele path :{} files:{}!'.format(
                 path, de_file))
         else:
             logger.info('path :{}not exists!'.format(de_path))
     except Exception as e:
         logger.error('detele path :{} files error!原因:{}'.format(path, e))
Exemple #15
0
 def func_bsmonitor(self):
     try:
         logger.info('start open monitor')
         command = r'cd /d ' + self.webmonitorpath + ' && start  ' + self.monitor_process_name + ' runserver  0.0.0.0:5006 --noreload'
         results = os.system(command)
         print(command)
         # print('monitor_open_process_path:{}'.format(self.monitor_open_process_path))
         logger.info(
             'End open monitor process!return content:{}'.format(results))
     except Exception as e:
         logger.error('open monitor error!原因:{}'.format(e))
Exemple #16
0
 def func_rest_api(self):
     try:
         logger.info('start open rest_api process!')
         command1 = r'cd /d ' + self.rest_api_path + ' && start /min  ' + self.rest_api_process_name
         results = os.system(command1)
         logger.info(
             'End open rest_api process!return content:{}'.format(results))
     except Exception as e:
         logger.error(
             'open rest_api error!原因:{},filename:{},line:{}'.format(
                 e, e.__traceback__.tb_frame.f_globals['__file__'],
                 e.__traceback__.tb_lineno))
Exemple #17
0
 def func_open_webmonitor_web(self):
     try:
         logger.info('start webmonitor in  web!')
         command = r'cd /d ' + self.chromepath + ' && start chrome.exe http://127.0.0.1:5006'
         results = os.system(command)
         logger.info(
             'End webmonitor in  web!return content:{}'.format(results))
     except Exception as e:
         logger.error(
             'open webmonitor in web error!原因:{},filename:{},line:{}'.
             format(e, e.__traceback__.tb_frame.f_globals['__file__'],
                    e.__traceback__.tb_lineno))
Exemple #18
0
 def get_excel_info(self):
     try:
         workbook = xlrd.open_workbook(self.excelpath)
         sheet_names = workbook.sheet_names()
         for i in sheet_names:
             sheet = workbook.sheet_by_name(i)
             num = sheet.nrows - 1
             title_list = sheet.row_values(0)
             logger.info('Excel表{}的标题栏是:{},内容有{}行'.format(
                 i, title_list, num))
     except Exception as e:
         logger.error('get_excel_info error!原因:{}'.format(e))
Exemple #19
0
 def delete_induct_log(self):
     try:
         logger.info('start delete induct process log!')
         process_path = [
             self.dispathpath, self.enginepath, self.i_monitorpath
         ]
         for i in process_path:
             logpath = os.path.join(i, 'log')
             self.d.detele_path(logpath)
         logger.info('end delete induct process log!')
     except Exception as e:
         logger.error('delete induct process log error!原因:{}'.format(e))
Exemple #20
0
 def func_bsmonitor(self):
     try:
         logger.info('start open monitor')
         command = r'cd /d ' + self.webmonitorpath + ' && start  /min ' + self.monitor_process_name + ' runserver  0.0.0.0:5006 --noreload'
         results = os.system(command)
         print(command)
         # print('monitor_open_process_path:{}'.format(self.monitor_open_process_path))
         logger.info(
             'End open monitor process!return content:{}'.format(results))
     except Exception as e:
         logger.error('open monitor error!原因:{},filename:{},line:{}'.format(
             e, e.__traceback__.tb_frame.f_globals['__file__'],
             e.__traceback__.tb_lineno))
Exemple #21
0
 def func_om(self):
     try:
         logger.info('Start open om process!')
         # results=os.startfile(self.engine_process_path)
         command = r'cd /d ' + self.ompath + ' && start  /min ' + configs.om_process_name
         results = os.system(command)
         logger.info(
             'End open om process!,return content:{}'.format(results))
     except Exception as e:
         logger.error(
             'open om process error!原因:{},filename:{},line:{}'.format(
                 e, e.__traceback__.tb_frame.f_globals['__file__'],
                 e.__traceback__.tb_lineno))
Exemple #22
0
    def auto_start_main(self, agv_id):
        '''1;"in_system"
        2;"out_system"
        3;"online"
        4;"offline"
        5;"ready"
        6;"not_ready"
        7;"in_dispatch"
        8;"out_dispatch"
        9;"running"
        10;"not_running"
        '''
        '''10000;"AGV_COMMAND_TYPE_ADD";"vehicle management";"add agv into dispath engine"
        10001;"AGV_COMMAND_TYPE_DELETE";"vehicle management";"delete agv from dispath engine"
        10002;"AGV_COMMAND_TYPE_CREATE";"vehicle management";"create agv in dispath engine"
        10003;"AGV_COMMAND_TYPE_DISTORY";"vehicle management";"distory agv in dispath engine"
        10004;"AGV_COMMAND_TYPE_SET_READY";"vehicle management";"set ready agv"
        10005;"AGV_COMMAND_TYPE_RUN";"vehicle management";"run agv"'''

        logger.info(f'===start auto start agv_id :{agv_id}===')
        while 1:
            agv_list = []
            d = self.api_opt_check_agvs_info(agv_id)
            if d:
                agv_id = d[0]["agv_id"]
                agv_list.append(agv_id)
                status_id = d[0]["agv_management_status_id"]
                if (status_id == 2):
                    if not (self.api_check_agv_commands(
                            agv_id, 10000, [10, 11])):
                        self.api_opt_add_agv(agv_list)
                if (status_id == 1):
                    if not (self.api_check_agv_commands(
                            agv_id, 10002, [10, 11])):
                        self.api_opt_create_agv(agv_list)
                if (status_id == 3):
                    if not (self.api_check_agv_commands(
                            agv_id, 10004, [10, 11])):
                        self.api_opt_setready_agv(agv_list)
                if (status_id == 5):
                    if not (self.api_check_agv_commands(
                            agv_id, 10005, [10, 11])):
                        self.api_opt_run_agv(agv_list)
                if (status_id == 7 or status_id == 9):
                    if agv_id not in self.current_indispathlogic_agv_id:
                        self.current_indispathlogic_agv_id.append(agv_id)
                    break

            time.sleep(3)

        logger.info(f'===end auto start agv_id :{agv_id}===')
Exemple #23
0
 def func_webvehicle(self):
     try:
         command = r'cd /d ' + os.path.join(
             configs.simpath) + ' && start  /min  webvehicle-go.exe'
         results = os.system(command)
         logger.info(
             f'------start webvehicle-go command:{command},return content:{results}'
         )
         time.sleep(2)
     except Exception as e:
         logger.error(
             'open webvehicle-go process error!原因:{},filename:{},line:{}'.
             format(e, e.__traceback__.tb_frame.f_globals['__file__'],
                    e.__traceback__.tb_lineno))
Exemple #24
0
 def common_post_agv_opt_api(self, api_agv_opt_url, agv_list,
                             caller_func_name):
     try:
         body = {"agv_list": agv_list}
         if isinstance(agv_list, list):
             body["agv_list"] = agv_list
             payload = json.dumps(body)
             pr = requests.post(url=api_agv_opt_url,
                                data=payload,
                                headers=self.pheaders)
             logger.info(f'接口url:{api_agv_opt_url},下发指令body:{payload}')
             results = dict(
                 eval(
                     pr.text.replace('null', 'None').replace(
                         'false', 'False').replace('true', 'True')))["msg"]
             if (pr.status_code == 200 and results == 'success'):
                 suc_info = dict(
                     eval(
                         pr.text.replace('null', 'None').replace(
                             'false', 'False').replace(
                                 'true', 'True')))["data"]["success_list"]
                 suc_agv_id = [i["agv_id"] for i in suc_info]
                 if suc_info != []:
                     logger.info(
                         f'api succ, and succ {caller_func_name},add_succ_agv_ids:{suc_info}'
                     )
                 error_info = dict(
                     eval(
                         pr.text.replace('null', 'None').replace(
                             'false', 'False').replace(
                                 'true', 'True')))["data"]["error_list"]
                 if error_info != []:
                     logger.info(
                         f'api succ ,but error {caller_func_name},rertun error_agv_ids:{error_info}'
                     )
             else:
                 logger.info(
                     f'api fail,and fail{caller_func_name}, agv_list:{agv_list},status_code:{pr.status_code}'
                 )
         else:
             logger.info(f'传入参数Error !!{agv_list} is not list!')
         if suc_agv_id:
             return suc_agv_id
         else:
             return None
     except Exception as e:
         logger.error(
             f'Error :commmon_post_agv_opt_api:{caller_func_name} !!results:{e}'
         )
         return None
Exemple #25
0
 def copy_layout_to_vehicles(self):
     try:
         if os.path.exists(configs.simpath):
             logger.info('------start copy layout to vehicles-----')
             for i in os.listdir(configs.simpath):
                 if os.path.isdir(i):
                     vehiclespath = os.path.join(configs.simpath, i)
                     mappath = os.path.join(vehiclespath, 'etc\map')
                     if not os.path.exists(mappath):
                         os.makedirs(mappath)
                     # 清空文件
                     self.detele_path(mappath)
                     # 复制文件
                     dirlist = os.listdir(self.layoutpath)
                     for dir in dirlist:
                         source = os.path.join(self.layoutpath, dir)
                         if (dir == 'docks.xml' or dir == 'layout.xml'):
                             shutil.copy(source, mappath)
                             logger.info('copy dir:{} to "{}"'.format(
                                 source, mappath))
             logger.info('------end copy layout to vehicles-----')
         else:
             logger.info('path:{} not exists!'.format(configs.simpath))
     except Exception as e:
         logger.error('copy layout to vehicles error!原因:{}'.format(e))
Exemple #26
0
    def db_kill(self):
        try:

            process_list = ['navicat.exe', 'pgAdmin3.exe']
            for i in process_list:
                logger.info('Star kill db process:{}!'.format(i))
                command = r'wmic process where name="{program}" delete'.format(
                    program=i)
                # command='taskkill /f /t /im {}'.format(program=i)
                temp = os.system(command)
                logger.info('End kill db prcess:{} !return content::{}'.format(
                    i, temp))
        except Exception as e:
            logger.error('kill all db process error!原因:{}'.format(e))
def common_post_agv_opt_api(data_dict):
    try:
        body = {"data": []}
        suc_object_task_info = None
        if isinstance(data_dict, dict):
            if "object_id" in data_dict.keys(
            ) and "destination_location_id" in data_dict.keys():

                data_dict["task_type_id"] = 2
                data_dict["status_id"] = 2
                body["data"].append(data_dict)

                payload = json.dumps(body)
                pr = requests.post(url=add_object_task_url,
                                   data=payload,
                                   headers=pheaders)
                logger.info(f'接口url:{add_object_task_url},下发指令body:{payload}')
                results = dict(
                    eval(
                        pr.text.replace('null', 'None').replace(
                            'false', 'False').replace('true', 'True')))["msg"]
                if (pr.status_code == 200 and results == 'success'):
                    suc_object_task_info = \
                    dict(eval(pr.text.replace('null', 'None').replace('false', 'False').replace('true', 'True')))["data"][
                        "success_list"]

                    if suc_object_task_info != []:
                        logger.info(
                            f'api succ, and succ {caller_func_name},add_succ_object_task_info:{suc_object_task_info}'
                        )
                    error_info = \
                    dict(eval(pr.text.replace('null', 'None').replace('false', 'False').replace('true', 'True')))["data"][
                        "error_list"]
                    if error_info != []:
                        logger.info(
                            f'api succ ,but error {caller_func_name},rertun error_object_task_info:{error_info}'
                        )
                else:
                    logger.info(
                        f'api fail,and fail{caller_func_name}, data_dict:{data_dict},status_code:{pr.status_code}'
                    )
        else:
            logger.info(f'传入参数Error !!{data_dict} is not dict!')

        return suc_object_task_info
    except Exception as e:
        logger.error(
            f'Error :commmon_post_agv_opt_api:{caller_func_name} !!results:{e}'
        )
        return None
Exemple #28
0
 def modify_dbai(self):
     try:
         logger.info('Start modify dbai db config!')
         conf = configparser.ConfigParser()
         conf.read(self.dbai_dbconfig_path, encoding='utf-8')
         conf.set('database_connection', 'host', self.ip)
         conf.set('database_connection', 'port', self.port)
         conf.set('database_connection', 'database_name', self.dbname)
         conf.set('database_connection', 'user_name', self.dbuser)
         conf.set('database_connection', 'password', self.dbpassword)
         conf.write(open(self.dbai_dbconfig_path, 'w+', encoding='utf-8'))
         logger.info('End modify dbai db config!')
     except Exception as e:
         logger.error('Modify dbai db  error!原因:{}'.format(e))
Exemple #29
0
 def delete_log(self, process_path):
     try:
         logger.info('start delete  process:{} log!'.format(process_path))
         for i in process_path:
             logpath = os.path.join(i, 'log')
             if os.path.exists(logpath):
                 shutil.rmtree(logpath)
             logpath2 = os.path.join(i, 'TSLogs')
             if os.path.exists(logpath2):
                 shutil.rmtree(logpath2)
         logger.info('end delete  process:{} log!'.format(process_path))
     except Exception as e:
         logger.error('delete process:{} log error!原因:{}'.format(
             process_path, e))
    def modify_all_dispatch_xml(self):
        #新新建一个xml
        logger.info('--重新创建一个新的dispath_config.xml文件--')
        if os.path.exists(self.temp_file):
            os.unlink(self.temp_file)
        self.create_dispatch_config_xml(self.temp_file)
        self.petty_filename(self.temp_file, self.dispath_config_path)
        os.unlink(self.temp_file)
        #然后更改location

        self.modify_dispatchxml_location()
        self.modify_dispatchxml_location_relation()
        self.modify_dispatchxml_section()
        self.modify_dispatchxml_object()