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)
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
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 }
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
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:
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
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
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 "未知错误"