FreeMarkerModel.java 4.3 KB
package com.sy.message.freeMarker;


import com.sy.message.model.*;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.io.*;
import java.util.*;

/**
 * @author
 * @time 2019-12-11 10:24
 */
@Component
public class FreeMarkerModel {

    private static FreeMarkerModel freeMarkerModel;

    @Autowired
    private  Configuration freemakerTemplate;

    @PostConstruct
    private void init(){
        freeMarkerModel = this;
        freeMarkerModel.freemakerTemplate = this.freemakerTemplate;
    }
    public static void createFile() {
        FreeMarkerModel freeMarkerModel = new FreeMarkerModel();
        Map map = new HashMap();

        DecHeadType headType = new DecHeadType();
        DecListItemType decListItemType = new DecListItemType();
        List<DecListItemType> decListItemTypes = new ArrayList<>();

        //货物
        DecListItemType.DecGoodsLimits decGoodsLimits = new DecListItemType.DecGoodsLimits();
        List<DecGoodsLimitType> decGoodsLimitTypes = new ArrayList<>();
        DecGoodsLimitType decGoodsLimitType = new DecGoodsLimitType();
        //许可证
        List<DecGoodsLimitVinType> decGoodsLimitVinTypes = new ArrayList<>();
        DecGoodsLimitVinType decGoodsLimitVinType = new DecGoodsLimitVinType();
        decGoodsLimitVinTypes.add(decGoodsLimitVinType);

        decGoodsLimitType.setDecGoodsLimitVin(decGoodsLimitVinTypes);

        decGoodsLimitTypes.add(decGoodsLimitType);
        decGoodsLimits.setDecGoodsLimit(decGoodsLimitTypes);

        decListItemType.setDecGoodsLimits(decGoodsLimits);
        decListItemTypes.add(decListItemType);

        List<DecContainerType> decContainerTypes = new ArrayList<>();
        List<DecRequestCertType> decRequestCertTypes = new ArrayList<>();
        List<DecLicenseType> decLicenseTypes = new ArrayList<>();
        List<DecCopLimitType> decCopLimitTypelist = new ArrayList<>();
        List<DecUserType> decUserTypes = new ArrayList<>();
        List<DecOtherPackType> decOtherPackTypes = new ArrayList<>();
        List<DecMarkLobType> decMarkLobTypes = new ArrayList<>();
        DecFreeTxtType decFreeTxtType = new DecFreeTxtType();
        DecSignType decSignType = new DecSignType();
        EdocRealationType edocRealationType = new EdocRealationType();
        DecRiskType decRiskType = new DecRiskType();
        map.put("decHeadType",headType);
        map.put("decList",decListItemTypes);
        map.put("decContainers",decContainerTypes);
        map.put("decRequestCerts",decRequestCertTypes);
        map.put("decLicenseDocus",decLicenseTypes);
        map.put("decCopLimits",decCopLimitTypelist);
        map.put("decUsers",decUserTypes);
        map.put("decOtherPacks",decOtherPackTypes);
        map.put("decMarkLobs",decMarkLobTypes);
        map.put("decFreeTxt",decFreeTxtType);
        map.put("decSign",decSignType);
        map.put("edocRealation",edocRealationType);
        map.put("decRisk",decRiskType);
        try {
            File file = new File("e:/user.xml");
            BufferedWriter o = new BufferedWriter(new FileWriter(file));
            o.write(freeMarkerModel.freeMarkerFile("outlineDeclaration.ftl","utf-8",map));
//            o.write(freeMarkerModel.freeMarkerFile("/com/sy/message/templates/user.ftl","utf-8",map));
            o.flush();
            o.close();
        }catch (IOException e){
            e.printStackTrace();
        }

    }

    public String freeMarkerFile(String fileName, String encode, Map data){
        Configuration cfg = new Configuration();
        cfg.setEncoding(Locale.getDefault(),encode);
        Template t = null;
        String result= "";
        try {
//            cfg.setDirectoryForTemplateLoading(new File("E:/java/workspace/custom-unified-declaration/src/main/java"));
            t = freeMarkerModel.freemakerTemplate.getTemplate(fileName);
            t.setEncoding(encode);
            StringWriter stringWriter = new StringWriter();
            t.process(data,stringWriter);
            result = stringWriter.toString();
        }catch (TemplateException e){
            e.printStackTrace();
        }catch (IOException  e){
            e.printStackTrace();
        }

        return result;
    }

}