<?xml version="1.0" encoding="UTF-8"?>
<!--
    $Author: Spencer 3893  
    $Date: 2016-9-19 上午10:24:11  
    $Revision: 1.0  
    $Purpose: 青岛中瑞GPS
-->
<a:service xmlns:ns1="leaf.application.action" xmlns:p="uncertain.proc" xmlns:a="http://www.leaf-framework.org/application" xmlns:s="leaf.plugin.script" trace="true">
    <a:init-procedure>
        <a:model-update model="gps.con_contract_gps_data_check"/>
        <s:server-script import="gps/zr_gps.js"><![CDATA[
            importPackage(Packages.java.util);
            importPackage(Packages.rd.zr.gps.addorderwithvpsInfos);
            importPackage(Packages.rd.zr.gps.getalleqpositionsbyappcode);
            importPackage(Packages.rd.zr.gps.getbaseorderInfobyappcode);
            
            var appkey = gps_config.appkey;
            
            function post_get_name(name) {
                var name_arr = {
                    "APPCODE": "Appcode",
                    "PRODUCTID": "ProductId",
                    "PRODUCTTYPE": "productType",
                    "DISTRICTCODE": "DistrictCode",
                    "INSTALLADD": "InstallAdd",
                    "INSTALLTIME": "InstallTime",
                    "SHOPNAME": "ShopName",
                    "LINKMAN": "LinkMan",
                    "LINKPHONE": "LinkPhone",
                    "USERNAME": "UserName",
                    "USERPHONE": "UserPhone",
                    "CARTYPE": "CarType",
                    "PLATENUMBER": "PlateNumber",
                    "VIN": "VIN",
                    "COLOR": "Color",
                    "CARPRICE": "CarPrice",
                    "LOANAMOUNT": "LoanAmount",
                    "CREDITPERIOD": "CreditPeriod",
                    "NUM": "Num",
                    "REMARK": "Remark"
                };
                if (name_arr[name]) {
                    return name_arr[name];
                } else {
                    return name;
                }
            }
            
            function save_gps_resp(savetype, zr_id, zr_appcode, zr_locationtime, address, zr_orderstatus, zr_url) {
                if (savetype == 'ZR_DOWNLOAD_GPS') {
                    if (zr_id != '' && zr_id != null) {
                        null;
                    } else {
                        raise_app_error("新增工单失败:" + zr_id);
                    }
                } else if (savetype == 'ZR_DOWNLOAD_GPS') {
                    var download_url_info = zr_url;
                    if (download_url_info.indexOf('http') == -1) {
                        raise_app_error("下载保单失败:" + download_url_info);
                    }
                    if (download_url_info) {
                        $ctx.parameter.ln_url = String(download_url_info);
                    }
                }
                
                var saveBm = $bm('gps.con_contract_update_zr_gps_response');
                saveBm.update({
                    contract_id: $ctx.parameter.contract_id,
                    zr_id: zr_id,
                    zr_appcode: zr_appcode,
                    address: address,
                    zr_locationtime:zr_locationtime,
                    zr_orderstatus: zr_orderstatus,
                    zr_url: zr_url,
                    savetype: savetype
                });
            }
            
            function new_gps() {
                var infoBm = $bm('gps.con_contract_zr_add_gps_info');
                var infoResult = infoBm.queryAsMap({
                    contract_id: $ctx.parameter.contract_id
                });
                var infoChilds = infoResult.getChildren();
                if (infoChilds.length) {
                    var infoChild = infoChilds[0];
                    var newGpsUrl = gps_config.newGpsUrl;
                    var infoMap = new HashMap();
                    var zr_appcode;
                    for (var name in infoChild) {
                        if (post_get_name(name)) {
                            if (infoChild[name] || infoChild[name] === 0) {
                                infoMap.put(post_get_name(name), infoChild[name]);
                                if (name == 'APPCODE') {
                                    zr_appcode = infoChild[name];
                                }
                            } else {
                                if(name == 'LINKMAN'){
                                    infoMap.put(post_get_name(name), "测试");
                                }else if(name == 'LINKPHONE'){
                                    infoMap.put(post_get_name(name), "13111234567");
                            }else{
                                infoMap.put(post_get_name(name), null);}
                            }
                        }
                    }
                    try {
                        println("newGpsUrl>>>" + newGpsUrl);
                        println("infoMap>>>" + infoMap);
                        var nav = new AddOrderWithVpsInfos(newGpsUrl, infoMap, "UTF-8", appkey);
                        var newresp = nav.run();
                        println("result>>>" + newresp);
                        save_gps_resp('ZR_NEW_GPS', String(newresp), zr_appcode, null, null, null, null);
                    } catch (e) {
                        raise_app_error("新增工单失败:" + e);
                    }
                } else {
                    raise_app_error("未获取到对应的合同工单信息");
                }
            }
            
            
            function find_con_gps() {
                var findGpsUrl = gps_config.findGpsUrl;
                var zr_appcode = $ctx.parameter.zr_appcode;
                var infoMap = new HashMap();
                infoMap.put(post_get_name("APPCODE"), "GH201609220000013");
                //infoMap.put(post_get_name("APPCODE"), $ctx.parameter.zr_appcode);
                try {
                    var fv = new GetBaseOrderInfoByAppCode(findGpsUrl, infoMap, "UTF-8", appkey);
                    var arr = fv.run();
                    var OrderStatus = arr[0];
                    var error_message = null;
                    println("OrderStatus>>>" + OrderStatus); //“新增”“等待派单”“等待加装”“加装完成”
                    if (OrderStatus != '加装完成') {
                        return false;
                        // error_message = "该工单尚未激活";
                        // raise_app_error(message);
                    }
                    return true;
                } catch (e) {
                    var message = null;
                    if (error_message) {
                        message = error_message;
                    } else {
                        message = "查找工单失败:" + e;
                    }
                    raise_app_error(message);
                }
            }
            
            function find_con_posi_gps() {
                var findGpsPosiUrl = gps_config.findGpsPosiUrl;
                var zr_appcode = $ctx.parameter.zr_appcode;
                var infoMap = new HashMap();
                //infoMap.put(post_get_name("APPCODE"), "测试定位001");
                infoMap.put(post_get_name("APPCODE"), "0000585");
                //infoMap.put(post_get_name("APPCODE"), $ctx.parameter.zr_appcode);
                try {
                    var fv = new GetAllEqPositionsByAppCode(findGpsPosiUrl, infoMap, "UTF-8", appkey);
                    var arr = fv.run();
                    var equipment = arr[0];
                    var locationAdd = arr[1];
                    var locationTime = arr[2];
                    var vin = arr[3];
                    var imei = arr[4];
                    var appcode = arr[5];
                    var flag = arr[6];
                    var lat = arr[7];
                    var lng = arr[8];
                    var battery = arr[9];
                    var sbcstatus = arr[10];
                    var typestr = arr[11];
                    var LocateMode = arr[12];
                    var message = arr[13];
             println("locationTime>>>" + locationTime);
                    var error_message = null;
                    save_gps_resp('ZR_FIND_GPS', null, zr_appcode, locationTime, locationAdd, null, null);
                } catch (e) {
                    var message = null;
                    if (error_message) {
                        message = error_message;
                    } else {
                        message = "查找工单失败:" + e;
                    }
                    raise_app_error(message);
                }
            }
            
            function down_con_gps() {
                var infoBm = $bm('gps.con_contract_ln_add_gps_info');
                var infoResult = infoBm.queryAsMap({
                contract_id: $ctx.parameter.contract_id
                });
                var infoChilds = infoResult.getChildren();
                if (infoChilds.length) {
                    var infoChild = infoChilds[0];
                    var downloadGpsUrl = gps_config.downloadGpsUrl;
                    var infoStrArray = [];
            
                    try {
                        var dv = new DownLoadSaleInfo(downloadGpsUrl, saleNo, Account, Password, infoStrArray, "gb2312", ReqfilePath, RespfilePath);
                        var download_url_info = dv.run();
                        save_gps_resp('ZR_DOWNLOAD_GPS', download_url_info);
                    } catch (e) {
                        raise_app_error("初始化新增工单失败:" + e);
                    }
                } else {
                    raise_app_error("未获取到对应的合同工单信息");
                }
            }
            
            var gps_type = $ctx.parameter.gps_type;
            if (gps_type == 'ZR_NEW_GPS') {
                new_gps();
            } else if (gps_type == 'ZR_FIND_GPS') {
                // var flag = find_con_gps();
                // if (flag) {
                    find_con_posi_gps();
                // } else {
                    // raise_app_error("该GPS设备尚未激活!");
                // }
            } else if (gps_type == 'ZR_DOWNLOAD_GPS') {
                //down_con_gps();
            }
        ]]></s:server-script>
    </a:init-procedure>
    <a:service-output output="/parameter"/>
</a:service>