<?xml version="1.0" encoding="UTF-8"?>
<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>
        <s:server-script import="app/app_login_check.js"><![CDATA[
            importPackage(Packages.leaf.plugin.util);
            importPackage(java.io);
            
            function fileToBase64(file_path) {
                var base64Str;
                try {
                    var fis = new FileInputStream(file_path);
                    var out = new ByteArrayOutputStream();
                    var buffer = new java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024 * 64);
                    var len = -1;
                    while ((len = fis.read(buffer)) != -1) {
                        out.write(buffer, 0, len);
                    }
                    var base64 = new Packages.leaf.plugin.util.Base64(0, null, true);
                    base64Str = base64.encodeBase64String(out.toByteArray());
                    fis.close();
                    out.close();
                    return base64Str;
                } catch (e) {
                    if (fis != null) {
                        fis.close();
                    }
                    if (out != null) {
                        out.close();
                    }
                    return "ERROR" + String(e);
                }
            }
            
            function lov_query() {
                var lov_list_details;
                try {
                    var lov_list_bm = $bm('app.lov.app_prj_cdd_atm');
                    var lov_list_map = lov_list_bm.queryAsMap({
                        check_id: $ctx.parameter.check_id
                    });
                    lov_list_details = lov_list_map.getChildren();
                    $ctx.parameter.return_status = 'S';
                    $ctx.parameter.return_message = '执行成功';
                } catch (e) {
                    $ctx.parameter.return_status = 'E';
                    $ctx.parameter.return_message = String(e);
                }
            
                var result = {
                    result: $ctx.parameter.return_status,
                    message: $ctx.parameter.return_message,
                    cdd_atm_list: []
                };
                var cdd_atm_list = result.cdd_atm_list;
                if (lov_list_details) {
                    for (var i = 0;i < lov_list_details.length;i++) {
                        var lov_list_detail = lov_list_details[i];
                        var dataBase64String = fileToBase64(lov_list_detail.file_path);
                        if (dataBase64String.indexOf('ERROR') != -1) {
                            cdd_atm_list = null;
                            result.result = 'E';
                            result.message = dataBase64String;
                            break;
                        }
                        cdd_atm_list.push({
                            "file_name": lov_list_detail.file_name,
                            "file_size": lov_list_detail.file_size,
                            "attachment_id": lov_list_detail.attachment_id,
                            "dataBase64String": String(dataBase64String)
                        });
                    }
                }
            
                $ctx.parameter.json = JSON.stringify(result);
            }
            
            if ($ctx.parameter.return_status != 'E' && $ctx.parameter.return_status != 'TIMEOUT') {
                lov_query();
            }
        ]]></s:server-script>
    </a:init-procedure>
    <a:service-output output="/parameter/@json"/>
</a:service>