コード例 #1
0
def strat(renewal_data_dt, endData=""):
    log.error("start")
    srssion = get_session('2')
    sessBase = srssion
    req_session = pickle.loads(codecs.decode(sessBase.encode(), "base64"))
    req_session.mount('https://', MyAdapter())
    licenseNo = renewal_data_dt.get('plateNumber', '')
    searchVin = renewal_data_dt.get('vinNo', '')
    insuranceType = renewal_data_dt['insuranceType']
    insure_id = renewal_data_dt['insureCarId']
    group_id = insuranceType['insuranceTypeGroupId']
    newPrimue(licenseNo, searchVin, req_session, insuranceType, insure_id,
              group_id, endData)
コード例 #2
0
ファイル: login.py プロジェクト: mazhenpy/insurance_python
def check_session():
    srssion = get_session('2')
    if srssion is not None:
        sessBase = srssion
        req_session = pickle.loads(codecs.decode(sessBase.encode(), "base64"))
        req_session.mount('https://', MyAdapter())
        try:
            if_renewal_url = "http://10.134.136.112:8000/prpall/business/selectRenewalPolicyNo.do"
            req_session.post(if_renewal_url, verify=False).json()
            return True
        except Exception, e:
            log.error(e)
            return False
コード例 #3
0
ファイル: session.py プロジェクト: mazhenpy/insurance_python
def getSession():
    sessiondt = get_session(["1", "4", "5", "12", "13"])
    pingansession = sessiondt[0]
    sessio4 = sessiondt[1]
    sessio5 = sessiondt[2]
    ancheng_session = sessiondt[3]
    hn_session = sessiondt[4]

    # 测试session是否有效
    if sessio4 is not None:
        CUST_DATA = 'plateNo=' + '' + '&frmNo=' + 'LBELMBKC2EY568468'
        getcodeinfo_url = 'http://carply.cic.cn/pcis/policy/universal/quickapp/actionservice.ai'
        getcodeinfo_data = 'ADAPTER_TYPE=JSON_TYPE&SERVICE_TYPE=ACTION_SERVIC&CODE_TYPE=CODE_TYPE&BEAN_HANDLE=baseAction&ACTION_HANDLE=perform&SERVICE_NAME=vhlPlatformCommonAction&SERVICE_MOTHOD=getJsCheckInfo&DW_DATA=%255B%255D&HELPCONTROLMETHOD=common&SCENE=UNDEFINED&BIZ_SYNCH_CONTINUE=false&CUST_DATA=' + CUST_DATA
        headers = se.headers
        headers['Content-Type'] = 'application/x-www-form-urlencoded'
        try:
            getcodeinforesp = sessio4.post(url=getcodeinfo_url,
                                           data=getcodeinfo_data,
                                           headers=headers)
        except Exception as e:
            print(e)
            sessio4 = logincic()
        print('curru_url = %s' % getcodeinforesp.url)
    else:
        sessio4 = logincic()

    if sessio5 is None:
        sessio5 = login()

    if pingansession is None:
        loginpingan = Login()
        pingansession = loginpingan.login()

    if ancheng_session is None:
        ancheng_session = login_ancheng()

    if hn_session is None:
        hn = Hn_Login()
        hn_session = hn.hn_login()
    return {
        '4': sessio4,
        '5': sessio5,
        "1": pingansession,
        "12": ancheng_session,
        "13": hn_session
    }
コード例 #4
0
                r.set_vin(body_org['car']['vinNo'], "13",
                          json.dumps(body_org, ensure_ascii=False))
            return all
    except Exception as e:
        import traceback
        log.error(e)
        log.error(traceback.format_exc())
        return "未知异常"


if __name__ == "__main__":
    from common.sessionUtil import get_session
    from request_huanong.hn_carInfo import get_carInof
    from request_huanong.hn_getCarModel import get_car_model1

    session = get_session("13")
    rsp = get_carInof(session, "LVSHCFAE7AF522519")
    print json.dumps(rsp, ensure_ascii=False)
    vehicleJingyou = get_car_model1(session, rsp)
    print json.dumps(vehicleJingyou, ensure_ascii=False)
    alldata = {}
    alldata['car'] = rsp
    alldata['vehicleJingyou'] = vehicleJingyou['vehicleJingyou']
    vehicleJingyou.pop('vehicleJingyou')
    alldata['other'] = vehicleJingyou
    alldata['carInfo'] = {}
    alldata['carInfo']['endDate'] = "2017-05-12"
    alldata['carInfo']['insuredAddress'] = ""
    alldata['carInfo']['mobile'] = ""
    alldata['carInfo']['identifyNumber'] = ""
    from body_temp import insuranceType
コード例 #5
0
ファイル: getData.py プロジェクト: mazhenpy/insurance_python
import requests

from common.sessionUtil import get_session
from request_epicc.img.damatuWeb import DamatuApi
import base64
import urllib
from bs4 import BeautifulSoup
import pickle
import codecs
import time
import json
import datetime
from req_body.calAclBody import getCalActualBody
from req_body import caclBody

srssion = get_session('2')
sessBase = srssion
req_session = pickle.loads(codecs.decode(sessBase.encode(), "base64"))


def ifRenewal(licenseNo):
    mydata = "prpCrenewalVo.policyNo=&prpCrenewalVo.othFlag=&prpCrenewalVo.engineNo=&prpCrenewalVo.frameNo=&prpCrenewalVo.vinNo=&prpCrenewalVo.licenseNo=" + urllib.quote(
        licenseNo.encode('gb2312')
    ) + "&prpCrenewalVo.licenseColorCode=&prpCrenewalVo.licenseType=02"
    res = req_session.post(
        "http://10.134.136.112:8000/prpall/business/selectRenewal.do?pageSize=10&pageNo=1",
        data=mydata).json()
    carData = res['data']
    if len(carData) == 0:
        print "非续保用户"
    else:
コード例 #6
0
def check(licenseNo, licenseType="02"):
    log.info(u"开始查询续保")
    srssion = get_session('2')
    sessBase = srssion
    req_session = pickle.loads(codecs.decode(sessBase.encode(), "base64"))
    req_session.mount('https://', MyAdapter())
    if_renewal_url = "http://10.134.136.112:8000/prpall/business/selectRenewalPolicyNo.do?licenseNo=" + urllib.quote(
        licenseNo.encode(
            'gb2312')) + "&licenseFlag=1&licenseType=" + licenseType
    if_renewal_res = req_session.post(if_renewal_url, verify=False).json()
    if int(if_renewal_res['data'][0]['renewalFlag']) == 0:
        log.error(licenseNo + "不可续保")
        return 0
    else:
        mydata = "prpCrenewalVo.policyNo=&prpCrenewalVo.othFlag=&prpCrenewalVo.engineNo=&prpCrenewalVo.frameNo=&prpCrenewalVo.vinNo=&prpCrenewalVo.licenseNo=" + urllib.quote(
            licenseNo.encode('gb2312')
        ) + "&prpCrenewalVo.licenseColorCode=&prpCrenewalVo.licenseType=" + licenseType
        data = req_session.post(
            "http://10.134.136.112:8000/prpall/business/selectRenewal.do?pageSize=10&pageNo=1",
            data=mydata)
        carData = data.json()['data']
        for car in carData:
            car['endDate'] = car['endDate']['time']
        carData.sort(key=lambda obj: obj.get('endDate'))
        bizNo = carData[len(carData) - 1]['policyNo']
        res = req_session.post(
            "http://10.134.136.112:8000/prpall/business/editCheckRenewal.do?bizNo="
            + bizNo)
        proposalNo = res.json()['data'][0]['proposalNo']
        startDate = datetime.date.today() + datetime.timedelta(1)
        endDateSY1 = (str(startDate.year + 1) + '-' + str(startDate.month) +
                      '-' + str(startDate.day))
        endDateSY = datetime.datetime.strptime(
            endDateSY1, "%Y-%m-%d").date() + datetime.timedelta(-1)
        today = datetime.date.today()
        editType = "COPY_PROPOSAL"
        if proposalNo is None:
            editType = "RENEWAL"
            proposalNo = bizNo
        url = "http://10.134.136.112:8000/prpall/business/editCitemCar.do?editType=" + editType + "&bizType=PROPOSAL&bizNo=" + proposalNo + "&riskCode=DAA&applyNo=&startDate=" + str(
            startDate
        ) + "&endDate=" + str(
            endDateSY
        ) + "&startHour=0&endHour=24&endorType=&taskID_Ppms=&prpallLinkPpmsFlag=&operateDate=" + str(
            today) + "&motorFastTrack=&operatorProjectCode=&reload=&rnd934="
        carRes = req_session.get(url)
        soup = BeautifulSoup(carRes.content, "html.parser")
        carDic = {}
        carDic['COMPANY_ID'] = '2'
        carDic['FLAG'] = '1'
        carDic['CCardDetail'] = ""
        carDic['brandName'] = soup.find(
            id="prpCitemCar.brandName").get('value').encode('latin1').decode(
                'gbk')  # 车辆型号
        carDic['enrollDate'] = soup.find(id="prpCitemCar.enrollDate").get(
            'value')  # 注册时间
        carDic['engineNo'] = soup.find(id="prpCitemCar.engineNo").get(
            'value')  # 发动机号
        carDic['vinNo'] = soup.find(id="prpCitemCar.vinNo").get('value')  # 车架号
        carDic['licenseNo'] = soup.find(
            id='prpCitemCar.licenseNo').get('value').encode('latin1').decode(
                'gbk')  # 车牌号
        carDic['endDate'] = time.strftime(
            "%Y-%m-%d",
            time.localtime(int(carData[len(carData) - 1]['endDate']) / 1000))
        carDic['purchasePrice'] = soup.find(
            id='prpCitemCar.purchasePrice').get('value')
        carDic['exhaustScale'] = soup.find(
            id='prpCitemCar.exhaustScale').get('value')
        carDic['prpCitemCar_brandName'] = soup.find(
            id='prpCitemCar.brandName').get('value').encode('latin1').decode(
                'gbk')
        carDic['carLotEquQuality'] = soup.find(
            id='prpCitemCar.carLotEquQuality').get('value')
        carDic['CModelCde'] = carDic['modelCode'] = soup.find(
            id='prpCitemCar.modelCode').get('value')
        carDic['NSeatNum'] = carDic['seatCount'] = soup.find(
            id='prpCitemCar.seatCount').get('value')
        personUrl = "http://10.134.136.112:8000/prpall/business/editCinsured.do?editType=" + editType + "&bizType=PROPOSAL&bizNo=" + proposalNo + "&riskCode=DAA&applyNo=&startDate=" + str(
            startDate
        ) + "&endDate=" + str(
            endDateSY
        ) + "&startHour=0&endHour=24&endorType=&taskID_Ppms=&prpallLinkPpmsFlag=&operateDate=" + str(
            today) + "&motorFastTrack=&operatorProjectCode=&reload=&rnd323="
        personRes = req_session.get(personUrl)
        personSoup = BeautifulSoup(personRes.content, "html.parser")
        carDic['identifyNumber'] = personSoup.find(
            id="prpCinsureds[0].identifyNumber").get('value')  # 身份证号
        carDic['insuredName'] = personSoup.find(
            id="prpCinsureds[0].insuredName").get('value').encode(
                'latin1').decode('gbk')  # 车主姓名
        carDic['insuredAddress'] = personSoup.find(
            id="prpCinsureds[0].insuredAddress").get('value').encode(
                'latin1').decode('gbk')  # 车主住址
        carDic['mobile'] = personSoup.find(id="prpCinsureds[0].mobile").get(
            'value')  # 车主电话
        # inser_user_renewal(carDic)

        renew_order = data.json()['data']
        DAA = []
        DZA = []
        for order in renew_order:
            if order['riskCode'] == "DZA":
                DZA.append(order)
            else:
                DAA.append(order)

        DAA.sort(key=lambda obj: obj.get('endDate').get('time'))
        DZA.sort(key=lambda obj: obj.get('endDate').get('time'))

        bizNo_dic = {}
        sy_endDate = ""
        sy_startDate = ""
        jq_endDate = ""
        jq_startDate = ""
        if len(DAA):
            bizNo_dic['DAA'] = DAA[len(DAA) - 1]['policyNo']
            sy_endDate = time.strftime(
                "%Y-%m-%d",
                time.localtime(int(DAA[0]['endDate']['time'] / 1000)))
            sy_startDate = getlatedate(-365, sy_endDate)
        if len(DZA):
            bizNo_dic['DZA'] = DZA[len(DZA) - 1]['policyNo']
            jq_endDate = time.strftime(
                "%Y-%m-%d",
                time.localtime(int(DZA[0]['endDate']['time'] / 1000)))
            jq_startDate = getlatedate(-365, jq_endDate)

        kind_info = ""
        for key in bizNo_dic:
            res = req_session.post(
                "http://10.134.136.112:8000/prpall/business/editCheckRenewal.do?bizNo="
                + bizNo_dic[key])
            proposalNo = res.json()['data'][0]['proposalNo']
            if proposalNo is None:
                proposalNo = bizNo_dic[key]

            if key == "DAA":
                order_url = "http://10.134.136.112:8000/prpall/business/editCitemKind.do?editType=" + editType + "&bizType=PROPOSAL&bizNo=" + proposalNo + "&riskCode=DAA&applyNo=&startDate=" + str(
                    startDate
                ) + "&endDate=" + str(
                    endDateSY
                ) + "&startHour=0&endHour=24&endorType=&taskID_Ppms=&prpallLinkPpmsFlag=&operateDate=" + str(
                    today
                ) + "&motorFastTrack=&operatorProjectCode=&reload=&rnd934="
                kind_info = DAA_parsing(
                    req_session.get(order_url).text, kind_info)
            else:
                order_url = "http://10.134.136.112:8000/prpall/business/editCitemKindCI.do?editType=" + editType + "&bizType=PROPOSAL&bizNo=" + proposalNo + "&riskCode=DAA&applyNo=&startDate=" + str(
                    startDate
                ) + "&endDate=" + str(
                    endDateSY
                ) + "&startHour=0&endHour=24&endorType=&taskID_Ppms=&prpallLinkPpmsFlag=&operateDate=" + str(
                    today
                ) + "&motorFastTrack=&operatorProjectCode=&reload=&rnd934="
                kind_info = DZA_parsing(
                    req_session.get(order_url).text, kind_info)
        kind_info['licenseNo'] = carDic['licenseNo']
        kind_info['vinNo'] = carDic['vinNo']
        kind_info['endDate'] = carDic['endDate']
        kind_info['insuredName'] = carDic['insuredName']
        kind_info['identifyNumber'] = carDic['identifyNumber']
        kind_info['NNewPurchaseValue'] = carDic['purchasePrice']
        kind_info['insuredAddress'] = carDic['insuredAddress']
        kind_info['enrollDate'] = carDic['enrollDate']
        kind_info['brandName'] = carDic['brandName']
        kind_info['CModelCde'] = carDic['CModelCde']
        kind_info['engineNo'] = carDic['engineNo']
        kind_info['insuranceTime'] = {
            'syEnd': sy_endDate,
            'syStart': sy_startDate,
            'jqStart': jq_startDate,
            'jqEnd': jq_endDate
        }
        inser_user_renewal(kind_info)
        log.error(licenseNo + "可以续保,续保信息入库成功")

        return carDic
コード例 #7
0
def xubao(licenseNo):
    try:
        startDate = datetime.date.today() + datetime.timedelta(1)
        # endDate = (str(startDate.year+1)+'-'+str(startDate.month)+'-'+str(startDate.day))
        endDateSY1 = (str(startDate.year + 1) + '-' + str(startDate.month) +
                      '-' + str(startDate.day))
        endDateSY = datetime.datetime.strptime(
            endDateSY1, "%Y-%m-%d").date() + datetime.timedelta(-1)
        today = datetime.date.today()
        srssion = get_session('2')
        sessBase = srssion
        req_session = pickle.loads(codecs.decode(sessBase.encode(), "base64"))
        mydata = "prpCrenewalVo.policyNo=&prpCrenewalVo.othFlag=&prpCrenewalVo.engineNo=&prpCrenewalVo.frameNo=&prpCrenewalVo.vinNo=&prpCrenewalVo.licenseNo=" + urllib.quote(
            licenseNo.encode('gb2312')
        ) + "&prpCrenewalVo.licenseColorCode=&prpCrenewalVo.licenseType=02"
        data = req_session.post(
            "http://10.134.136.112:8000/prpall/business/selectRenewal.do?pageSize=10&pageNo=1",
            data=mydata)
        carData = data.json()['data']
        if len(carData) == 0:
            return 0
        for car in carData:
            car['endDate'] = car['endDate']['time']
        carData.sort(key=lambda obj: obj.get('endDate'))
        bizNo = carData[len(carData) - 1]['policyNo']
        res = req_session.post(
            "http://10.134.136.112:8000/prpall/business/editCheckRenewal.do?bizNo="
            + bizNo)
        proposalNo = res.json()['data'][0]['proposalNo']
        editType = "COPY_PROPOSAL"
        if proposalNo is None:
            editType = "RENEWAL"
            proposalNo = bizNo
        url = "http://10.134.136.112:8000/prpall/business/editCitemCar.do?editType=" + editType + "&bizType=PROPOSAL&bizNo=" + proposalNo + "&riskCode=DAA&applyNo=&startDate=" + str(
            startDate
        ) + "&endDate=" + str(
            endDateSY
        ) + "&startHour=0&endHour=24&endorType=&taskID_Ppms=&prpallLinkPpmsFlag=&operateDate=" + str(
            today) + "&motorFastTrack=&operatorProjectCode=&reload=&rnd934="
        carRes = req_session.get(url)
        soup = BeautifulSoup(carRes.content, "html.parser")
        carDic = {}
        carDic['brandName'] = soup.find(
            id="prpCitemCar.brandName").get('value').encode('latin1').decode(
                'gbk')  #车辆型号
        carDic['enrollDate'] = soup.find(id="prpCitemCar.enrollDate").get(
            'value')  #注册时间
        carDic['engineNo'] = soup.find(id="prpCitemCar.engineNo").get(
            'value')  #发动机号
        carDic['vinNo'] = soup.find(id="prpCitemCar.vinNo").get('value')  # 车架号
        carDic['licenseNo'] = soup.find(
            id='prpCitemCar.licenseNo').get('value').encode('latin1').decode(
                'gbk')  #车牌号
        carDic['endDate'] = time.strftime(
            "%Y-%m-%d",
            time.localtime(int(carData[len(carData) - 1]['endDate']) / 1000))
        personUrl = "http://10.134.136.112:8000/prpall/business/editCinsured.do?editType=" + editType + "&bizType=PROPOSAL&bizNo=" + proposalNo + "&riskCode=DAA&applyNo=&startDate=" + str(
            startDate
        ) + "&endDate=" + str(
            endDateSY
        ) + "&startHour=0&endHour=24&endorType=&taskID_Ppms=&prpallLinkPpmsFlag=&operateDate=" + str(
            today) + "&motorFastTrack=&operatorProjectCode=&reload=&rnd323="
        personRes = req_session.get(personUrl)
        personSoup = BeautifulSoup(personRes.content, "html.parser")
        carDic['identifyNumber'] = personSoup.find(
            id="prpCinsureds[0].identifyNumber").get('value')  #身份证号
        carDic['insuredName'] = personSoup.find(
            id="prpCinsureds[0].insuredName").get('value').encode(
                'latin1').decode('gbk')  #车主姓名
        carDic['insuredAddress'] = personSoup.find(
            id="prpCinsureds[0].insuredAddress").get('value').encode(
                'latin1').decode('gbk')  #车主住址
        carDic['mobile'] = personSoup.find(id="prpCinsureds[0].mobile").get(
            'value')  #车主电话
        carDic['COMPANY_ID'] = '2'
        carDic['CCardDetail'] = ""
        carDic['NSeatNum'] = ""
        carDic['FLAG'] = "1"
        carDic['CModelCde'] = ""
        return carDic
    except Exception, e:
        return 0
コード例 #8
0
def standard_main(renewal_data_dt, endDate=""):
    try:
        r = redisUtil.CRedis()

        log.error("start")
        srssion = get_session('2')
        sessBase = srssion
        req_session = pickle.loads(codecs.decode(sessBase.encode(), "base64"))
        req_session.mount('https://', MyAdapter())
        insuranceTypeList = ""
        insure_id = renewal_data_dt['insureCarId']
        client = renewal_data_dt.get('client', None)
        if isinstance(renewal_data_dt['insuranceType'], dict):
            insuranceType = renewal_data_dt['insuranceType']
            group_id = insuranceType['insuranceTypeGroupId']

        elif isinstance(renewal_data_dt['insuranceType'], list):
            insuranceTypeList = renewal_data_dt['insuranceType']
            insuranceType = insuranceTypeList[0]
            group_id = insuranceType['insuranceTypeGroupId']

        redis_dt = r.get_vin(renewal_data_dt['vinNo'], "2")
        if redis_dt is not None:
            try:
                log.info(u'人保可以从redis中获取信息')
                dt = eval(redis_dt)
                get_checkcode_url = "http://10.134.136.112:8000/prpall/business/" \
                                    "queryVehiclePMCheck.do?comCode=32012105&frameNo=" \
                                    + dt['vinNo'] + "&licenseNo="
                req_session.post(url=get_checkcode_url, verify=False).json()

                if insuranceTypeList == "":
                    price_res = caclPremium(dt, insuranceType, req_session)
                    if price_res['data'][0].get('errMessage') is not None:
                        log.error(price_res['data'][0].get('errMessage'))
                    log.error(u"开始解析保费信息")
                    PremiumInfo = readJson(
                        price_res['data'][0]['biInsuredemandVoList'][0]
                        ['prpCitemKinds'],
                        price_res['data'][0].get('ciInsureVOList', None))
                    if PremiumInfo:
                        log.info(PremiumInfo)
                        # data=[开始时间,结束时间,座位数,组合id,车辆id,公司id]
                        data_list = [
                            dt['ciStartDate'], dt['ciEndDate'],
                            dt['seatCount'], group_id, insure_id, '2'
                        ]
                        soupDb(PremiumInfo, data_list)
                        log.info(u'人保入库成功')
                        return None
                    else:
                        log.error(u"未知错误")
                        return price_res['data'][0].get('errMessage', '未知错误')
                else:
                    for insuranceType in insuranceTypeList:
                        try:

                            insure_id = renewal_data_dt['insureCarId']
                            group_id = insuranceType['insuranceTypeGroupId']
                            price_res = caclPremium(dt, insuranceType,
                                                    req_session)
                            if price_res['data'][0].get(
                                    'errMessage') is not None:
                                log.error(
                                    price_res['data'][0].get('errMessage'))
                            log.error(u"开始解析保费信息")

                            PremiumInfo = readJson(
                                price_res['data'][0]['biInsuredemandVoList'][0]
                                ['prpCitemKinds'], price_res['data'][0].get(
                                    'ciInsureVOList', None))
                            if PremiumInfo:
                                log.info(PremiumInfo)
                                # data=[开始时间,结束时间,座位数,组合id,车辆id,公司id]
                                data_list = [
                                    dt['ciStartDate'], dt['ciEndDate'],
                                    dt['seatCount'], group_id, insure_id, '2'
                                ]
                                soupDb(PremiumInfo, data_list)
                                log.info(u'人保入库成功')
                                send_mq(
                                    client, dt['licenseNo'], "", "1", "2",
                                    renewal_data_dt['sessionId'],
                                    renewal_data_dt['isPhone'],
                                    insuranceType.get("insuranceTypeGroupId",
                                                      "9999"),
                                    insuranceType.get("insuranceTypeGroup",
                                                      "0"))
                                # return None
                            else:
                                log.error(u"未知错误")
                                log.info(u"开始发送消息")
                                send_mq(
                                    client, dt['licenseNo'],
                                    price_res['data'][0].get(
                                        'errMessage', '未知错误'), "2", "2",
                                    renewal_data_dt['sessionId'],
                                    renewal_data_dt['isPhone'],
                                    insuranceType.get("insuranceTypeGroupId",
                                                      "9999"),
                                    insuranceType.get("insuranceTypeGroup",
                                                      "0"))
                        except Exception, e:
                            log.error(traceback.format_exc())
                            send_mq(
                                client, dt['licenseNo'], "未知错误", "2", "2",
                                renewal_data_dt['sessionId'],
                                renewal_data_dt['isPhone'],
                                insuranceType.get("insuranceTypeGroupId",
                                                  "9999"),
                                insuranceType.get("insuranceTypeGroup", "0"))
                    return None
            except:
                log.error(traceback.format_exc())
                if client is not None:
                    log.info(u"开始发送消息")
                    send_mq(client, dt['licenseNo'], "未知错误", "2", "2",
                            renewal_data_dt['sessionId'],
                            renewal_data_dt['isPhone'],
                            insuranceType.get("insuranceTypeGroupId", "9999"),
                            insuranceType.get("insuranceTypeGroup", "0"))
                return "未知错误"

        dt = dt_init()
        licenseType = renewal_data_dt.get('licenseType', "02")
        if licenseType == '01':
            dt['licenseType'] = licenseType
            dt['LicenseTypeDes'] = "大型汽车号牌"
            dt['licenseColorCode'] = "04"
            dt['LicenseColorCodeDes'] = "黄"
            dt['carKindCode'] = "B01"
            dt['CarKindCodeDes'] = "货车"
            dt['useNatureCode'] = "120"
            dt['clauseType'] = "F43"
            dt['tonCount'] = '10000'
        elif licenseType == "02":
            dt['licenseType'] = licenseType
            dt['LicenseTypeDes'] = "小型汽车号牌"
            dt['licenseColorCode'] = "01"
            dt['LicenseColorCodeDes'] = "蓝"
            dt['carKindCode'] = "A01"
            dt['CarKindCodeDes'] = "客车"
            dt['useNatureCode'] = "211"
            dt['clauseType'] = "F42"
            dt['tonCount'] = "0"

        sy_jq_date = jq_sy_time(renewal_data_dt)
        syStart = sy_jq_date.get('syStart', timeUtil.getlatedate(1))
        jqStart = sy_jq_date.get('jqStart', timeUtil.getlatedate(1))
        dt['ciStartDate'] = syStart
        endDate = datetime.datetime.strptime(syStart, "%Y-%m-%d").date()
        dt['ciEndDate'] = str(
            datetime.datetime.strptime((str(endDate.year + 1) + '-' +
                                        str(endDate.month) + '-' +
                                        str(endDate.day)), "%Y-%m-%d").date() +
            datetime.timedelta(-1))
        dt['syStart'] = syStart
        dt['syEnd'] = str(
            datetime.datetime.strptime((str(endDate.year + 1) + '-' +
                                        str(endDate.month) + '-' +
                                        str(endDate.day)), "%Y-%m-%d").date() +
            datetime.timedelta(-1))
        dt['jqStart'] = jqStart
        jqEndDate = datetime.datetime.strptime(jqStart, "%Y-%m-%d").date()
        dt['jqEnd'] = str(
            datetime.datetime.strptime(
                (str(jqEndDate.year + 1) + '-' + str(jqEndDate.month) + '-' +
                 str(jqEndDate.day)), "%Y-%m-%d").date() +
            datetime.timedelta(-1))

        # if endDate == "":
        #     tomorrow = datetime.date.today() + datetime.timedelta(1)
        #     today = datetime.date.today()
        #     dt['ciStartDate'] = str(tomorrow)
        #     dt['ciEndDate'] = str(
        #         datetime.datetime.strptime((str(today.year + 1) + '-' + str(today.month) + '-' + str(today.day)),
        #                                    "%Y-%m-%d").date())
        # else:
        #     endDate = datetime.datetime.strptime(endDate, "%Y-%m-%d").date()
        #     dt['ciStartDate'] = str(endDate)
        #     endDate = datetime.datetime.strptime(
        #         (str(endDate.year + 1) + '-' + str(endDate.month) + '-' + str(endDate.day)),
        #         "%Y-%m-%d").date() + datetime.timedelta(-1)
        #     dt['ciEndDate'] = str(endDate)
        dt['vinNo'] = renewal_data_dt.get('vinNo', '')
        dt['licenseNo'] = renewal_data_dt.get('plateNumber', '')
        get_checkcode_url = "http://10.134.136.112:8000/prpall/business/queryVehiclePMCheck.do?comCode=32012105&frameNo=" + \
                            dt['vinNo'] + "&licenseNo="
        get_checkcode_res = req_session.post(url=get_checkcode_url,
                                             verify=False).json()
        checkcode_res = jsonpath(get_checkcode_res, "$.data")
        dt['checkNo'] = checkcode_res[0][0]['checkNo']
        dt['checkCode'] = checkcode_res[0][0]['checkCode']
        # dt['checkAnswer'] = request_cicc.util.pic2Str(base64.b64decode(dt['checkCode']))
        dt['checkAnswer'] = dama("3", dt['checkCode'])
        post_checkcode_url = "http://10.134.136.112:8000/prpall/business/queryVehiclePMConfirm.do?comCode=32012105&checkNo=" + \
                             dt['checkNo'] + "&checkCode=" + dt['checkAnswer']
        post_checkcode_res = req_session.post(url=post_checkcode_url,
                                              verify=False).json()
        post_checkcode_res = jsonpath(post_checkcode_res, "$.data")
        log.info(u'开始打码')
        count = 0
        log.info(post_checkcode_res[0][0].get('errMessage', ''))
        while post_checkcode_res[0][0].get('errMessage', '') is not None:
            if '未匹配到交管车辆信息' in post_checkcode_res[0][0].get('errMessage', ''):
                log.error("未匹配到交管车辆信息")
                # 返回错误信息
                if client is not None:
                    log.info(u"开始发送消息")
                    send_mq(client, dt['licenseNo'],
                            post_checkcode_res[0][0].get('errMessage', ''),
                            "2", "2", renewal_data_dt['sessionId'],
                            renewal_data_dt['isPhone'],
                            insuranceType.get("insuranceTypeGroupId", "9999"),
                            insuranceType.get("insuranceTypeGroup", "0"))
                return post_checkcode_res[0][0].get('errMessage', '')
            if '录入的校验码有误' in post_checkcode_res[0][0].get('errMessage', ''):
                dama("99", dt['checkCode'])
                log.error(u"验证码有误,错误的验证码为,%s" % dt['checkAnswer'])
                get_checkcode_url = "http://10.134.136.112:8000/prpall/business/queryVehiclePMCheck.do?comCode=32012105&frameNo=" + \
                                    dt['vinNo'] + "&licenseNo="
                get_checkcode_res = req_session.post(url=get_checkcode_url,
                                                     verify=False).json()
                checkcode_res = jsonpath(get_checkcode_res, "$.data")
                dt['checkNo'] = checkcode_res[0][0]['checkNo']
                dt['checkCode'] = checkcode_res[0][0]['checkCode']
                # dt['checkAnswer'] = request_cicc.util.pic2Str(base64.b64decode(dt['checkCode']))
                dt['checkAnswer'] = dama("3", dt['checkCode'])
                post_checkcode_url = "http://10.134.136.112:8000/prpall/business/queryVehiclePMConfirm.do?comCode=32012105&checkNo=" + \
                                     dt['checkNo'] + "&checkCode=" + dt['checkAnswer']
                post_checkcode_res = req_session.post(url=post_checkcode_url,
                                                      verify=False).json()
                post_checkcode_res = jsonpath(post_checkcode_res, "$.data")
            if count > 4:
                # 验证码重发超限
                if client is not None:
                    log.info(u"开始发送消息")
                    send_mq(client, dt['licenseNo'], "查询失败,稍后重试", "2", "2",
                            renewal_data_dt['sessionId'],
                            renewal_data_dt['isPhone'],
                            insuranceType.get("insuranceTypeGroupId", "9999"),
                            insuranceType.get("insuranceTypeGroup", "0"))
                return "查询失败,稍后重试"
            count = count + 1

        if post_checkcode_res[0][0].get('errMessage', '') is None:
            log.info(u'打码成功')
            dt['modelCode'] = post_checkcode_res[0][0]['modelCode']
            car_info_url = "http://10.134.136.112:8000/prpall/vehicle/vehicleQuery.do?brandName=" + dt[
                'modelCode'] + "&modelCode="
            car_info_res = req_session.post(url=car_info_url,
                                            verify=False).json()
            car_info_list = jsonpath(car_info_res, "$.data")
            if car_info_list:
                if len(car_info_list[0]) == 0:
                    log.info(u"正在重新尝试获取车辆型号")
                    dt['modelCode'] = dt['modelCode'][:-1] + dt['modelCode'][
                        -1].lower()
                    log.info(dt['modelCode'])
                    car_info_url = "http://10.134.136.112:8000/prpall/vehicle/vehicleQuery.do?brandName=" + dt[
                        'modelCode'] + "&modelCode="
                    car_info_res = req_session.post(url=car_info_url,
                                                    verify=False).json()
                    car_info_list = jsonpath(car_info_res, "$.data")

                    # cic_car_info = get_car_model(dt['vinNo'])
                    # if cic_car_info is not None:
                    #     dt['gCIndustryModelName'] = cic_car_info['gCIndustryModelName']
                    #     car_info_url = "http://10.134.136.112:8000/prpall/vehicle/vehicleQuery.do?brandName=" + dt['gCIndustryModelName'] + "&modelCode="
                    #     car_info_res = req_session.post(url=car_info_url, verify=False).json()
                    #     car_info_list = jsonpath(car_info_res, "$.data")

                if len(car_info_list[0]) > 0:
                    log.info(u'获取车型成功,正在选取最低价车型')
                    car_info_list = car_info_list[0]
                    car_info_list.sort(key=lambda obj: obj.get('priceT'))
                    car_info = car_info_list[0]

                    if post_checkcode_res[0][0].get('enrollDate',
                                                    None) is not None:
                        dt['enrollDate'] = str(
                            time.strftime(
                                "%Y-%m-%d",
                                time.localtime(
                                    int(post_checkcode_res[0][0]['enrollDate']
                                        ['time']) / 1000)))
                    dt['licenseNo'] = post_checkcode_res[0][0]['id'][
                        'licenseNo']
                    dt['pmCarOwner'] = post_checkcode_res[0][0]['carOwner']
                    if licenseType == '01':
                        dt['exhaustScale'] = post_checkcode_res[0][0][
                            'displacement']
                        dt['carLotEquQuality'] = float(
                            car_info['vehicleQuality']) * 1000
                        if post_checkcode_res[0][0].get('tonCount',
                                                        '0') == '0':
                            dt['tonCount'] = post_checkcode_res[0][0].get(
                                'tonCount', '0')
                        else:
                            dt['tonCount'] = post_checkcode_res[0][0].get(
                                'haulage', '0')
                    else:
                        dt['exhaustScale'] = car_info['vehicleExhaust']
                    dt['engineNo'] = post_checkcode_res[0][0]['engineNo']
                    dt['brandName'] = car_info['vehicleName']
                    dt['purchasePriceOld'] = str(car_info['priceTr'])
                    log.info(u'新车购置价格是:%s' % dt['purchasePriceOld'])
                    dt['frameNo'] = dt['vinNo']
                    dt['modelCode'] = car_info['vehicleId']
                    dt['seatCount'] = car_info['vehicleSeat']
                    useYears = calc_user_years(dt['syStart'], dt['enrollDate'])
                    dt['prpCitemCar_useYears'] = useYears
                    acl_price = caclAcl(dt, req_session)
                    dt['aclPrice'] = acl_price
                    price_res = caclPremium(dt, insuranceType, req_session)

                    log.info(price_res['data'][0].get('errMessage'))
                    while price_res['data'][0].get('errMessage') is not None:

                        if '重复投保' in price_res['data'][0].get('errMessage'):
                            str1 = "\d{4}-\d{2}-\d{2}"
                            datelist = re.findall(
                                str1, price_res['data'][0]['errMessage'], re.S)
                            if len(datelist) == 2:
                                endDate = compare_date(datelist[0],
                                                       datelist[1])
                                dayGap = compare_time40(str(endDate))
                                if dayGap >= 40:
                                    log.error(u"重复投保,上期保单超过40天")
                                    if client is not None:
                                        log.info(u"开始发送消息")
                                        send_mq(
                                            client, dt['licenseNo'],
                                            price_res['data'][0]['errMessage'],
                                            "2", "2",
                                            renewal_data_dt['sessionId'],
                                            renewal_data_dt['isPhone'],
                                            insuranceType.get(
                                                "insuranceTypeGroupId",
                                                "9999"),
                                            insuranceType.get(
                                                "insuranceTypeGroup", "0"))
                                    return price_res['data'][0]['errMessage']
                                else:
                                    dt['syStart'] = dt['jqStart'] = str(
                                        endDate)
                                    endDate = datetime.datetime.strptime(
                                        (str(endDate.year + 1) + '-' +
                                         str(endDate.month) + '-' +
                                         str(endDate.day)), "%Y-%m-%d").date(
                                         ) + datetime.timedelta(-1)
                                    dt['syEnd'] = dt['jqEnd'] = str(endDate)
                                    useYears = calc_user_years(
                                        dt['syStart'], dt['enrollDate'])
                                    dt['prpCitemCar_useYears'] = useYears
                                    acl_price = caclAcl(dt, req_session)
                                    dt['aclPrice'] = acl_price
                                    price_res = caclPremium(
                                        dt, insuranceType, req_session)
                            else:
                                log.error(u"重复投保")
                                if client is not None:
                                    log.info(u"开始发送消息")
                                    send_mq(
                                        client, dt['licenseNo'],
                                        price_res['data'][0]['errMessage'],
                                        "2", "2", renewal_data_dt['sessionId'],
                                        renewal_data_dt['isPhone'],
                                        insuranceType.get(
                                            "insuranceTypeGroupId", "9999"),
                                        insuranceType.get(
                                            "insuranceTypeGroup", "0"))
                                return price_res['data'][0]['errMessage']

                    log.info(price_res['data'][0]['biInsuredemandVoList']
                             [0].get('ciInsureDemandRepets'))
                    if len(price_res['data'][0]['biInsuredemandVoList'][0].get(
                            'ciInsureDemandRepets')) > 0:
                        endDate = datetime.datetime.strptime(
                            time.strftime(
                                "%Y-%m-%d",
                                time.localtime(
                                    int(price_res['data'][0]
                                        ['biInsuredemandVoList'][0].get(
                                            'ciInsureDemandRepets')[0]
                                        ['endDate']['time'] / 1000))),
                            "%Y-%m-%d").date()
                        print endDate, type(endDate)
                        dayGap = compare_time40(str(endDate))
                        if dayGap >= 40:
                            log.error(u"重复投保,上期保单超过40天")
                            if client is not None:
                                log.info(u"开始发送消息")
                                send_mq(
                                    client, dt['licenseNo'],
                                    price_res['data'][0]['errMessage'], "2",
                                    "2", renewal_data_dt['sessionId'],
                                    renewal_data_dt['isPhone'],
                                    insuranceType.get("insuranceTypeGroupId",
                                                      "9999"),
                                    insuranceType.get("insuranceTypeGroup",
                                                      "0"))
                            return price_res['data'][0]['errMessage']
                        else:
                            dt['syStart'] = dt['jqStart'] = str(endDate)
                            endDate = datetime.datetime.strptime(
                                (str(endDate.year + 1) + '-' +
                                 str(endDate.month) + '-' + str(endDate.day)),
                                "%Y-%m-%d").date() + datetime.timedelta(-1)
                            dt['syEnd'] = dt['jqEnd'] = str(endDate)
                            useYears = calc_user_years(dt['syStart'],
                                                       dt['enrollDate'])

                            dt['prpCitemCar_useYears'] = useYears
                            acl_price = caclAcl(dt, req_session)
                            dt['aclPrice'] = acl_price
                            price_res = caclPremium(dt, insuranceType,
                                                    req_session)
                    log.error(u"开始解析保费信息")
                    PremiumInfo = readJson(
                        price_res['data'][0]['biInsuredemandVoList'][0]
                        ['prpCitemKinds'],
                        price_res['data'][0].get('ciInsureVOList', None))
                    if PremiumInfo:
                        log.info(PremiumInfo)
                        # data=[开始时间,结束时间,座位数,组合id,车辆id,公司id]
                        data_list = [
                            dt['ciStartDate'], dt['ciEndDate'],
                            dt['seatCount'], group_id, insure_id, '2'
                        ]
                        soupDb(PremiumInfo, data_list)
                        dt['ciEndDate'] = str(dt['ciEndDate'])
                        r.set_vin(dt['vinNo'], "2",
                                  json.dumps(dt, ensure_ascii=False))
                        log.info(u'人保入库成功')
                        if insuranceTypeList != "":
                            insuranceTypeList = insuranceTypeList[1:]
                            for insuranceType in insuranceTypeList:
                                try:
                                    insure_id = renewal_data_dt['insureCarId']
                                    group_id = insuranceType[
                                        'insuranceTypeGroupId']
                                    price_res = caclPremium(
                                        dt, insuranceType, req_session)
                                    if price_res['data'][0].get(
                                            'errMessage') is not None:
                                        log.error(price_res['data'][0].get(
                                            'errMessage'))
                                    log.error(u"开始解析保费信息")
                                    PremiumInfo = readJson(
                                        price_res['data'][0]
                                        ['biInsuredemandVoList'][0]
                                        ['prpCitemKinds'],
                                        price_res['data'][0].get(
                                            'ciInsureVOList', None))
                                    if PremiumInfo:
                                        log.info(PremiumInfo)
                                        # data=[开始时间,结束时间,座位数,组合id,车辆id,公司id]
                                        data_list = [
                                            dt['ciStartDate'], dt['ciEndDate'],
                                            dt['seatCount'], group_id,
                                            insure_id, '2'
                                        ]
                                        soupDb(PremiumInfo, data_list)
                                        log.info(u'人保入库成功')
                                        log.info(u"开始发送消息")
                                        send_mq(
                                            client, dt['licenseNo'], "", "1",
                                            "2", renewal_data_dt['sessionId'],
                                            renewal_data_dt['isPhone'],
                                            insuranceType.get(
                                                "insuranceTypeGroupId",
                                                "9999"),
                                            insuranceType.get(
                                                "insuranceTypeGroup", "0"))
                                        # return None
                                    else:
                                        log.error(u"未知错误")
                                        log.info(u"开始发送消息")
                                        send_mq(
                                            client, dt['licenseNo'],
                                            price_res['data'][0].get(
                                                'errMessage', '未知错误'), "2",
                                            "2", renewal_data_dt['sessionId'],
                                            renewal_data_dt['isPhone'],
                                            insuranceType.get(
                                                "insuranceTypeGroupId",
                                                "9999"),
                                            insuranceType.get(
                                                "insuranceTypeGroup", "0"))
                                except Exception, e:
                                    log.error(traceback.format_exc())
                                    log.info(u"开始发送消息")
                                    send_mq(
                                        client, dt['licenseNo'], "未知错误", "2",
                                        "2", renewal_data_dt['sessionId'],
                                        renewal_data_dt['isPhone'],
                                        insuranceType.get(
                                            "insuranceTypeGroupId", "9999"),
                                        insuranceType.get(
                                            "insuranceTypeGroup", "0"))
                        return None
                    else:
                        return "未知错误"
                else:
                    log.error(u'无法获取车型')
                    if client is not None:
                        send_mq(
                            client, dt['licenseNo'], '无法获取车型', "2", "2",
                            renewal_data_dt['sessionId'],
                            renewal_data_dt['isPhone'],
                            insuranceType.get("insuranceTypeGroupId", "9999"),
                            insuranceType.get("insuranceTypeGroup", "0"))
                    return ('无法获取车型')
    except Exception, e:
        log.error(traceback.format_exc())
        if client is not None:
            send_mq(client, dt['licenseNo'], '未知错误', "2", "2",
                    renewal_data_dt['sessionId'], renewal_data_dt['isPhone'],
                    insuranceType.get("insuranceTypeGroupId", "9999"),
                    insuranceType.get("insuranceTypeGroup", "0"))
        return "未知错误"