135 lines
4.8 KiB
Python
135 lines
4.8 KiB
Python
# coding=utf-8
|
||
# 编译日期:2026-08-13 09:38:51
|
||
# 版权所有: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 _resolve_input_data(self, params):
|
||
"""优先 input_arg(JSON 字符串或文件路径),其次 -c 传入的 params 字典。"""
|
||
from rpa_yisaiqi.contract_create_node import ContractCreateError, load_input_data
|
||
raw = (self.input_arg or "").strip()
|
||
if raw:
|
||
return load_input_data(raw)
|
||
if isinstance(params, dict) and params:
|
||
nested = params.get("inputJson") or params.get("inputArg") or params.get("input")
|
||
if nested:
|
||
return load_input_data(str(nested))
|
||
return dict(params)
|
||
raise ContractCreateError("缺少业务入参:请通过 -i/--input 传入 JSON 字符串或文件路径,或通过 -c/--params 传入参数")
|
||
|
||
@staticmethod
|
||
def _first(*values):
|
||
for value in values:
|
||
if value is not None and str(value).strip():
|
||
return str(value).strip()
|
||
return ""
|
||
|
||
def Main(self, **params):
|
||
self.__logger.dlogs(job_no=self.job_no,logmsg='Flow:Main,StepNodeTag:20260813000000,Title:合同建单,Note:读取入参并执行 CONTRACT_CREATE')
|
||
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 run_contract_create
|
||
|
||
data = self._resolve_input_data(params)
|
||
state_center_url = self._first(
|
||
data.get("stateCenterUrl"),
|
||
data.get("stateCenterURL"),
|
||
os.getenv("STATE_CENTER_URL"),
|
||
params.get("stateCenterUrl"),
|
||
"http://127.0.0.1:8000",
|
||
)
|
||
agent_token = self._first(
|
||
data.get("agentToken"),
|
||
os.getenv("AGENT_TOKEN"),
|
||
params.get("agentToken"),
|
||
"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 <robot> -p <proc> -j <job>')
|
||
for opt, arg in opts:
|
||
if opt == '-h':
|
||
print ('robot.py -r <robot> -p <proc> -j <job>')
|
||
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,[]))
|