对物流相关业务使用 rpa 技术 poc 阶段工作总结

具体工作分为两个流程:

1, 快递查询

具体步骤

登录系统 -> 界面跳转 -> 根据指定过滤条件从系统内筛选数据 -> 导出到 excel 表格 -> 对表格进行处理(添加新列,转换日期格式)-> 根据表格数据到对应快递网站查询物流状态 -> 抓取网站信息 -> 回填入 execel 表格 -> 过滤出满足客户需求的表格数据插入到另一张表 -> 发送邮件

本阶段难点:

1,将 excel 文件另存到指定目录下(该问题已解决,方法有待优化):
对物流相关业务使用 rpa 技术 poc 阶段工作总结![在这里插入图片描述](https://img-blog.csdnimg.cn/20190815110421253.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY0OTcx,size_16,color_FFFFFF,t_701对物流相关业务使用 rpa 技术 poc 阶段工作总结2, 时间格式转换(已解决)

def time_style_change(stroridate):
    #将fedex的签收时间转化的函数 转化后的格式 'YYYY-MM-DD hh-mm'
    listdate = stroridate.split(' ')
    strdate = listdate[1]
    strtime = listdate[3]
    listdate = strdate.split('/')
    print(listdate)
    strdate = listdate[2] + '-'+ listdate[0] + '-' +listdate[1]
    print(strdate)
    print(strtime)
    strdate = strdate + ' '+ strtime + ':00'
    return strdate

2,快递发货

具体步骤

登录系统 -> 界面跳转 -> 网页抓取所需要的数据 -> 筛选数据是否满足条件 (国内件)-> 根据数据递归创建目录 -> 下载附件 -> 制作信封 -> 登录指定快递网站 -> 填写收货人与货物信息 -> 生成运单号 -> 根据模板生成 execl 表格 -> 回填系统 -> 生成 outlook 邮件文件并保存到本地

本阶段难点:

1,判断是否为国内件

def isinternal(dict_temp):
    '''
    判断是否时国内件
    '''
    if dict_temp['国家'] == '中国' or dict_temp['国家'] == 'China':
        return True
    print(dict_temp['收货人'],'收货人')
    for ch in dict_temp['收货人']:
        if u'\u4e00' <= ch <= u'\u9fff':
            return True
    return False

2,创建指定目录下编号最大的文件夹

def getdirname(dirpath,invoice_num):
    '''
    返回并创建最新的文件夹
    '''
    list_dirname = os.listdir(dirpath)
    print(list_dirname)
    list_dirname = sorted(list_dirname,reverse=True)
    print(list_dirname)
    print(list_dirname[0])
    list_num = re.findall(r"\d+",list_dirname[0])
    max_num = int(list_num[0])
    print(max_num)
    max_num += 1
    today = time.strftime("%Y%m%d",time.localtime(time.time()))
    max_num = str(max_num).rjust(3,'0')
    dirname = str(max_num) + ' shipment ' + today
    final_dirpath = os.path.join(dirpath,dirname)
    print(final_dirpath)
    return [final_dirpath,str(max_num)]

3, 自写滑动验证码,这里验证码滑块的偏移量是写死的,有时滑动验证的偏移量固定在某个范围内就可以搞定,不一定非要使用 ocr,这里测试成功率为 70%,优势就是免费,快,占用空间小,次数无限

对物流相关业务使用 rpa 技术 poc 阶段工作总结
123

import os
import re
import time
from ctypes import *
from ctypes.wintypes import *
from shutil import copyfile
import pandas as pd
import xlwt
import xlrd
from xlutils.copy import copy

def imouse_drag(x1, y1, x2, y2,button='left',speed=10):        
# (x1,y1),(x2,y2)分别表示:鼠标移动的初末坐标点   
    try:
        dll = windll.LoadLibrary("../Com.Isearch.Func.AutoIt/AutoItX3.dll")         
# 对象为:本地的一个动态链接库文件
        return dll.AU3_MouseClickDrag(button,x1,y1,x2,y2,speed)                     
# 使用鼠标点击拖动方法
    except Exception as e:
        raise e

4,指定范围内单元格添加边框

def execl__add_border(src,dst,len_data):
    data = xlrd.open_workbook(src,formatting_info=True) #formatting_info复制单元格格式
    w = copy(data)
    borders = xlwt.Borders()
    borders.left = xlwt.Borders.THIN
    borders.right = xlwt.Borders.THIN
    borders.top = xlwt.Borders.THIN
    borders.bottom = xlwt.Borders.THIN
    borders.left_colour = 0x40
    borders.right_colour = 0x40
    borders.top_colour = 0x40
    borders.bottom_colour = 0x40
    style = xlwt.XFStyle()
    style.borders = borders
    sheet1 = data.sheet_by_index(0)
    for i in range(len_data):
        x = i + 9
        for j in range(14):
            sheet_data = sheet1.cell(x, j).value
            print(sheet_data)
            w.get_sheet(0).write(x,j, sheet_data,style)
            j+=1
        i+=1
    w.save(dst)

5,outlook 邮件正文添加超链接,使用快捷键搞定
对物流相关业务使用 rpa 技术 poc 阶段工作总结
对物流相关业务使用 rpa 技术 poc 阶段工作总结
对物流相关业务使用 rpa 技术 poc 阶段工作总结
123
6. 拷贝指定 execl 表格数据与格式插入到邮件正文
对物流相关业务使用 rpa 技术 poc 阶段工作总结
对物流相关业务使用 rpa 技术 poc 阶段工作总结

对物流相关业务使用 rpa 技术 poc 阶段工作总结

总结

本次开发总体而言比较成功,项目提前完工,效果客户也比较满意,但项目中也存在许多问题,具体如下:
1, 因为是边确认需求边开发(流程二非常复杂,不可能一下说清楚还都记住细节),前期写的很多代码后期都没用,前期考虑的很多问题后期都发现不需要解决
2,流程二比较复杂而且工期较紧,所以功能模块的拆分不够细化,后期投入生产需要代码重构
3,poc 阶段遇到一个 css 拾取的问题,鼠标不能准确点击到超链接,至今仍未解决,生产过程中可能要直接获取 href 来解决该问题。