# coding=utf-8 # 编译日期:2026-08-13 14:30:00 # 版权所有:www.i-search.com.cn import ubpa.init_input as iinput from ubpa.base_util import StdOutHook, ExceptionHandler import time import pdb from ubpa.ilog import ILog import getopt from sys import argv import sys import os import datetime as is_datetime import pandas from ubpa.base_img import * import ubpa.iplatform as iplatform class AutoRpa: def __init__(self,**kwargs): self.__logger = ILog(__file__) self.path = set_img_res_path(__file__) self.robot_no = '' self.proc_no = '' self.job_no = '' self.input_arg = '' if('robot_no' in kwargs.keys()): self.robot_no = kwargs['robot_no'] if('proc_no' in kwargs.keys()): self.proc_no = kwargs['proc_no'] if('job_no' in kwargs.keys()): self.job_no = kwargs['job_no'] ILog.JOB_NO, ILog.OLD_STDOUT = self.job_no, sys.stdout sys.stdout = StdOutHook(self.job_no, sys.stdout) ExceptionHandler.JOB_NO, ExceptionHandler.OLD_STDERR = self.job_no, sys.stderr sys.excepthook = ExceptionHandler.handle_exception if('input_arg' in kwargs.keys()): self.input_arg = kwargs['input_arg'] if(len(self.input_arg) <= 0): self.input_arg = iinput.load_init(__file__) if self.input_arg is None: sys.exit(0) def Main(self): import sys, os, json from pathlib import Path _CODES_DIR = Path(r'd:\RPA\AutoRpa\codes') if str(_CODES_DIR) not in sys.path: sys.path.insert(0, str(_CODES_DIR)) from rpa_yisaiqi.contract_create_node import ( ContractCreateError, load_input_data, run_contract_create, ) def _first(*values): for value in values: if value is not None and str(value).strip(): return str(value).strip() return "" raw = (self.input_arg or "").strip() if not raw: raise ContractCreateError("缺少业务入参:请通过 -i/--input 传入 JSON 字符串或文件路径") data = load_input_data(raw) state_center_url = _first( data.get("stateCenterUrl"), data.get("stateCenterURL"), os.getenv("STATE_CENTER_URL"), "http://127.0.0.1:8000", ) agent_token = _first( data.get("agentToken"), os.getenv("AGENT_TOKEN"), "dev-agent-token", ) print("=" * 60) print("合同建单 CONTRACT_CREATE - 开始") print("jobId=%s sourceType=%s submitMode=%s" % ( data.get("jobId"), data.get("sourceType"), data.get("submitMode"))) print("=" * 60) result = run_contract_create( data, state_center_url=state_center_url, agent_token=agent_token, ) print(json.dumps(result, ensure_ascii=False)) return result if __name__ == '__main__': ILog.begin_init() robot_no = '' proc_no = '' job_no = '' input_arg = '' params = {} fn = "Main" flow_params={'Main':[]} try: argv = sys.argv[1:] opts, args = getopt.getopt(argv,"hr:p:j:i:c:",["robot = ","proc = ","job = ","input = ","params = "]) except getopt.GetoptError: print ('robot.py -r -p -j ') for opt, arg in opts: if opt == '-h': print ('robot.py -r -p -j ') elif opt in ("-r", "--robot"): robot_no = arg elif opt in ("-p", "--proc"): proc_no = arg elif opt in ("-j", "--job"): job_no = arg elif opt in ("-i", "--input"): input_arg = arg elif opt in ("-c", "--params"): cParam: dict = iinput.parseConnectorParam(arg) params = cParam.pop("Params", params) fn = cParam.pop("FlowName", fn) pro = AutoRpa(robot_no=robot_no,proc_no=proc_no,job_no=job_no,input_arg=input_arg) iplatform.Return(MainResult=getattr(pro, fn)(**params), job_no=job_no, fn=fn, flow_return_params=flow_params.get(fn,[]))