<?xml version="1.0" encoding="UTF-8"?>
<a:service xmlns:p="uncertain.proc" xmlns:a="http://www.leaf-framework.org/application" xmlns:s="leaf.plugin.script" trace="true">
    <a:init-procedure>
        <s:server-script import="token_record.js;att_upload.js"><![CDATA[

            try {
                var logger = $logger('server-script');
                logger.info('------');
                var req_date = $ctx.parameter.getChildren();

                var sys_url_bm = $bm('cont.CON4000.get_sys_url');
                var parameter_code = 'TOKEN_POSTURL';
                var SysposturlQuery = sys_url_bm.queryAsMap({
                    parameter_code: parameter_code
                });
                var posturl = SysposturlQuery.getChildren()[0].parameter_value;
                var parameter_code = 'TOKEN_APPID';
                var SysappidQuery = sys_url_bm.queryAsMap({
                    parameter_code: parameter_code
                });
                var token_appid = SysappidQuery.getChildren()[0].parameter_value;
                var parameter_code = 'TOKEN_APPSECRET';
                var SysappsecretQuery = sys_url_bm.queryAsMap({
                    parameter_code: parameter_code
                });

                 var parameter_code = 'ATT_UPLOAD_POSTURL';
                 var attUrlQuery = sys_url_bm.queryAsMap({
                      parameter_code: parameter_code
                   });
                 var attUrl = attUrlQuery.getChildren()[0].parameter_value;

                 var parameter_code = 'TOKEN_TYPE';
                 var tokenTypeyQuery = sys_url_bm.queryAsMap({
                      parameter_code: parameter_code
                   });

                var token_type = tokenTypeyQuery.getChildren()[0].parameter_value;
                var token_appsecret = SysappsecretQuery.getChildren()[0].parameter_value;
                var token_savelogs_bm = $bm('efile.EFILE1000.efile_get_token');
                //token是否在有效期内,在有效期内直接获取表中的token
                var check_token_valid_bm = $bm('efile.EFILE1000.check_token_valid');
                var checkTokenQuery = check_token_valid_bm.queryAsMap();
                var is_valid = checkTokenQuery.getChildren()[0].is_valid;
             //   var primaryField='CF-4252CE7A665C4562BF8E8AC3AD79BF1D';
                var documentTypeCode = $ctx.parameter.documentTypeCode;
                var file_path = $ctx.parameter.file_path;
                var primaryField = $ctx.parameter.primaryField;
                var file=new File(file_path);
                var map = {
	        		"documentTypeCode" : documentTypeCode,
	        		"primaryField": primaryField,
	        		"documentSource":"CF",
	        		"companyCode":"HL"
	        	}

                var att_recordBm=$bm('efile.EFILE1040.att_upload_return');
                if (is_valid == 'true') {
                     var SystokenQuery = token_savelogs_bm.queryAsMap();
                     var access_token = SystokenQuery.getChildren()[0].access_token;
                     var data=httpPostAttUpload(attUrl,map,file,access_token,token_type);
                     var json = JSON.parse(data);
                     var result=JSON.stringify(json.result);
                     result=JSON.parse(result)
                     att_recordBm.insert({
                          'primary_field': primaryField,
                          'status': json.statusCode,
                          'message': json.message,
                          'attachmentoid': result.attachmentOID,
                          'hly_fileurl': result.fileURL

                     })
                     logger.info(data);
                 } else {
                    println("=======有效期外======");
                    var data = httpPostGetToken(posturl, token_appid, token_appsecret);
                    var json = JSON.parse(data);
                    var access_token = json.access_token;
                    var status = json.status;
                    if (access_token) {
                        var data_att=httpPostAttUpload(attUrl,map,file,access_token,token_type);
                        var json = JSON.parse(data_att);
                        var result=JSON.stringify(json.result);
                        result=JSON.parse(result)

                        att_recordBm.insert({
                          'primary_field': primaryField,
                          'status': json.statusCode,
                          'message': json.message,
                          'attachmentoid': result.attachmentOID,
                          'hly_fileurl': result.fileURL

                     })
                        logger.info(data_att);
                        token_savelogs_bm.insert({
                            'json': data,
                            'status': 'success'
                        })

                        token_savelogs_bm.update({
                            'system_source': 'hlcm',
                            'expires_in': json.expires_in,
                            'access_token': access_token
                        })

                    }

                    if (status) {
                        var token_savelogs_bm = $bm('efile.EFILE1000.token_savelogs');
                        token_savelogs_bm.insert({
                            'json': json,
                            'status': 'fail'
                        });
                    }

                }
            } catch (e) {
                println('e:' + e);
            }
        ]]></s:server-script>
    </a:init-procedure>
</a:service>