在ftl格式模板中填充相应内容

1.接收json字符串进行处理 下面举例说明:

获取json的值,截取所需值对应的集合,取到值把值给到对应的实体类中,为后面引用做准备:

 

        String json = "{\n"
                + "\"cdsj\": \"2019-11-13 15:23:45\",\n"
                + "\"code\": \"20191113152345372\",\n"
                + "\"lists\": ["
                + "{\n"
                + "\"bdcdyh\": \"370811016020GB00035F00010004\",\n"
                + "\"bdcqzh\": \"鲁(2016)济宁市不动产证明第0000675号\",\n"
                + "\"cdsj\": \"2019-11-13 15:23:45\",\n"
                + "\"syqx\": \"2019-11-13 15:23:45\",\n"
                + "\"cfxxList\": [{\n"
                + "\"cfjg\": \"鲁(2016)济宁市不动产证明第0000675号\",\n"
                + "\"cfwh\": \"0\",\n"
                + "\"cfqxq\":\"1\",\n"
                + "\"cfqxz\": \"张玉累\"}],\n"
                + "\"cqly\": null,\n"
                + "\"cqyg\": \"2\",\n"
                + "\"djbzt\": \"0\",\n"
                + "\"djkid\": \"1100000416941\",\n"
                + "\"djlx\": \"15\",\n"
                + "\"djsj\": \"2016-11-10 09:20:11\",\n"
                + "\"djxl\": \"150120\",\n"
                + "\"dyaqList\": [{\n"
                + "\"bdbzqse\": 10000,\n"
                + "\"bdcdjzmh\": \"鲁(2016)济宁市不动产证明第0000676号\",\n"
                + "\"djbzt\": \"0\",\n"
                + "\"djsj\": \"2016-11-10 09:20:11\",\n"
                + "\"dyfs\": 1,\n"
                + "\"dyqr\": \"中国工商银行股份有限公司济宁分行\",\n"
                + "\"dyr\": \"张玉累、张丽\",\n"
                + "\"dyzl\": \"ydy\",\n"
                + "\"fj\": \"单独房产预告抵押\",\n"
                + "\"qlqx\": null,\n"
                + "\"zwlxqxq\": \"2016-10-24 00:00:00\",\n"
                + "\"zwlxqxz\": \"2041-10-24 00:00:00\",\n"
                + "\"zxsj\": \"2041-10-24 00:00:00\"\n"
                + "}],\n"
                + "\"fj\": \"单独房产预告抵押\",\n"
                + "\"fwid\": \"1100000416941\",\n"
                + "\"fwjg\": null,\n"
                + "\"fwxz\": \"0\",\n"
                + "\"fwyt\": \"10\",\n"
                + "\"gyqk\": \"1100000416941\",\n"
                + "\"jgsj\": null,\n"
                + "\"jyjg\": 0,\n"
                + "\"mj\": 99.43,\n"
                + "\"qllx\": \"1100000416941\",\n"
                + "\"qlr\": \"张玉累、张丽\",\n"
                + "\"qlrxxlist\": [],\n"
                + "\"qlrzjbh\": \"372924198406122414、372924198703152425\",\n"
                + "\"zxyyyy\": \"didididi\",\n"
                + "\"qlxz\": \"372924198406122414、372924198703152425\",\n"
                + "\"sfcf\": \"否\",\n"
                + "\"sfdy\": \"是\",\n"
                + "\"sfyd\": \"是\",\n"
                + "\"sfyg\": \"是\",\n"
                + "\"sfyy\": \"否\",\n"
                + "\"shbw\": null,\n"
                + "\"sjc\": \"20\",\n"
                + "\"slid\": \"201610240050        \",\n"
                + "\"yydjlist\": [{\n"
                + "\"bdcqzh\": \"鲁(2016)济宁市不动产证明第0000675号\",\n"
                + "\"djsj\": \"2016-11-10 09:20:11\",\n"
                + "\"zxyydjsj\": \"2016-11-10 09:20:11\",\n"
                + "\"zxyyyy\": \"didididi\",\n"
                + "\"bz\": \"0\",\n"
                + "\"qlbl\": null,\n"
                + "\"qlr\": \"张玉累\",\n"
                + "\"qlrzjhm\": \"372924198406122414\",\n"
                + "\"sxh\": 1,\n"
                + "\"zjzl\": 1\n"
                + "}, {\n"
                + "\"bdcqzh\": \"鲁(2016)济宁市不动产证明第0000675号\",\n"
                + "\"djsj\": \"2016-11-10 09:20:11\",\n"
                + "\"zxyydjsj\": \"2016-11-10 09:20:11\",\n"
                + "\"zxyyyy\": \"didididi\",\n"
                + "\"bz\": \"2\",\n"
                + "\"qlbl\": null,\n"
                + "\"qlr\": \"中国工商银行股份有限公司济宁分行\",\n"
                + "\"qlrzjhm\": \"91370800865922610C\",\n"
                + "\"sxh\": 4,\n"
                + "\"zjzl\": 7\n"
                + "}],\n"
                + "\"zcs\": 25,\n"
                + "\"zl\": \"玖玺小区8号住宅楼01单元二十层01-2005号\",\n"
                + "\"zrzid\": null,\n"
                + "\"zrzmc\": null\n"
                + "}"
                + "]\n"
                + "}";
//      接收json的值,并且截取需要值所存在的集合;
//        String json = WebServiceUtils.getBDCdjxx(stageController.getName_init(), stageController.getIdcard_init());
        Logger.log("接口返回结果:" + json);
        Logger.log("qs1");
        JSONObject jsonObject = JSONObject.parseObject(json.replaceAll("\\\\", ""));
        Logger.log("qs2");
        JSONArray data = jsonObject.getJSONArray("lists");
        Logger.log("qs3");
        System.out.println(jsonObject.getString("lists"));
        Logger.log("--查出房屋套数-------" + data.size());       
        try {
            Logger.log("qs4");
            String fwxx = jsonObject.getString("lists");
            Logger.log("qs5");
            
            //当所截取集合中没有数据时,返回1展示暂无权属信息
            if ("[]".equals(fwxx)) {
                num = 1;
                stageController.setMessage("暂无权属信息");
            } else {
                
            //获取json中的值
                JSONArray fwxxlist = JSONObject.parseArray(fwxx);
                //获取当前编号
                String bh = selectNum();
                stageController.setBh(bh);
                int total = 0;
                Logger.log("权属信息条数=================" + fwxxlist.size());
                //将获取到的值存储到FwqsInfo中
                for (int i = 0; i < fwxxlist.size(); i++) {
                    String s = fwxxlist.getString(i);
                    JSONObject fwxxList = JSONObject.parseObject(s);
                    Logger.log(i + "---------------" + fwxxList);
                    FwqsInfo fwqsInfo = new FwqsInfo();
                    fwqsInfo.setZl(fwxxList.getString("zl"));
                    fwqsInfo.setYt(fwxxList.getString("fwyt"));
                    fwqsInfo.setFj(fwxxList.getString("fj"));
                    fwqsInfo.setMj(fwxxList.getString("mj"));
                    fwqsInfo.setSyqx(fwxxList.getString("syqx"));
                    fwqsInfo.setQlxz(fwxxList.getString("qlxz"));
                    fwqsInfo.setQllx(fwxxList.getString("qllx"));
                    fwqsInfo.setGyqk(fwxxList.getString("gyqk"));
                    fwqsInfo.setDjsj(fwxxList.getString("djsj"));
                    fwqsInfo.setCqyg(fwxxList.getString("cqyg"));
                    fwqsInfo.setLzrzjbh(fwxxList.getString("qlrzjbh"));
                    fwqsInfo.setBdcdyh(fwxxList.getString("bdcdyh"));
                    fwqsInfo.setBdcqzh(fwxxList.getString("bdcqzh"));
                    fwqsInfo.setQlr(fwxxList.getString("qlr"));
                    Logger.log("1" + fwqsInfo);
                    
                    //获取cfxxList集合中的值,先存储到CfxxList中,随后存储到FwqsInfo
                    JSONArray cfxx = JSONObject.parseArray(fwxxList.getString("cfxxList"));
                    Logger.log("cfxxList" + cfxx);
                    List<CfxxList> cfxxList1 = new ArrayList();
                    if (!("[]".equals(fwxxList.getString("cfxxList")))) {
                        for (int a = 0; a < cfxx.size(); a++) {
                            CfxxList cfxxList = new CfxxList();
                            String cfxx1 = cfxx.getString(a);
                            JSONObject cfxx2 = JSONObject.parseObject(cfxx1);
                            String id = a+1 + "";
                            cfxxList.setId(id);
                            cfxxList.setCFJG(cfxx2.getString("cfjg"));
                            cfxxList.setCFWH(cfxx2.getString("cfwh"));
                            cfxxList.setCFQXQ(cfxx2.getString("cfqxq"));
                            cfxxList.setCFQXZ(cfxx2.getString("cfqxz"));
                            cfxxList1.add(cfxxList);
                        }
                        fwqsInfo.setCfxxList(cfxxList1);
                        Logger.log("cfxxList" + cfxx);
                    } else {
                    }

                    //同上
                    JSONArray dyqxx = JSONObject.parseArray(fwxxList.getString("dyaqList"));
                    List<DyqxxList> dyxxList = new ArrayList();
                    Logger.log("dyqxx" + dyqxx);
                    if ("[]".equals(fwxxList.getString("dyaqList"))) {
                    } else {
                        for (int a = 0; a < dyqxx.size(); a++) {
                            DyqxxList dyqxxList = new DyqxxList();
                            String dyqxx1 = dyqxx.getString(a);
                            JSONObject dyqxx2 = JSONObject.parseObject(dyqxx1);
                            String id = a+1 + "";
                            dyqxxList.setId(id);
                            dyqxxList.setDYFS(dyqxx2.getString("dyfs"));
                            dyqxxList.setDYQR(dyqxx2.getString("dyr"));
                            dyqxxList.setZQSE(dyqxx2.getString("bdbzqse") + "万元");
                            dyqxxList.setBDCDJZMH(dyqxx2.getString("bdcdjzmh"));
                            dyqxxList.setZWLXQXQ(dyqxx2.getString("zwlxqxq"));
                            dyqxxList.setZWLXQXZ(dyqxx2.getString("zwlxqxz"));
                            dyxxList.add(dyqxxList);
                        }
                        fwqsInfo.setDyqxxList(dyxxList);
                        Logger.log("dyqxx" + dyqxx);
                    }

                    //同上
                    JSONArray qlrxx = JSONObject.parseArray(fwxxList.getString("yydjlist"));
                    List<YyxxList> yyrxxList = new ArrayList();
                    Logger.log("qlrxx" + qlrxx);
                    if ("[]".equals(fwxxList.getString("yydjlist"))) {
                    } else {
                        for (int a = 0; a < qlrxx.size(); a++) {
                            YyxxList yyxxList = new YyxxList();
                            String qlrqxx1 = qlrxx.getString(a);
                            JSONObject qlrqxx2 = JSONObject.parseObject(qlrqxx1);
                            String id = a+1 + "";
                            yyxxList.setId(id);
                            yyxxList.setQLR(qlrqxx2.getString("qlr"));
                            yyxxList.setZXYYYY(qlrqxx2.getString("zxyyyy"));
                            yyxxList.setDJSJ(qlrqxx2.getString("djsj"));
                            yyxxList.setZXSJ(qlrqxx2.getString("zxyydjsj"));
                            yyrxxList.add(yyxxList);
                        }
                        fwqsInfo.setYyxxList(yyrxxList);
                        Logger.log("qlrxx" + yyrxxList);
                    }
                    Logger.log("fwqsInfo=========" + fwqsInfo.toString());
                    String path = ResourceUtils.getProperties(System.getProperty("user.dir") + "/config.properties", "system.qsdoc");
                    try {
                        BarcodeDemo.rqPdf(bh, "D:\\code\\ewm.png");
                        testExportSimpleWordQs(fwqsInfo, "D:\\toword", "qsmb.ftl", path, bh, "D:\\code\\ewm.png");

                        Logger.log("Word已生成");
                        WordUtils.word2pdf(qsdoc, qspdf);
                        Logger.log("转PDF成功!");
                    } catch (Exception e) {
                        e.printStackTrace();
                        Logger.log("生成word异常:", e);
                        break;
                    }
                    Thread.sleep(1000);
                    WordToPhoto.pdf2png("D:\\cxdoc", "qs", "png", total);
                    total = total + pdfCount(qspdf);;
                    Logger.log("权属图片生成成功!");
                    fwqsLists.add(fwqsInfo);
                }

2.编写模板 

做好ftl模板,模板中与json相对应的字段,最好取名一样 ,免得到时候不好区分。如下:

在使用list包住自己想要循环的数据时,要注意  以w:tr开始  以w:tr结束,不然程序会报模板错误 

 注:使用Notdpad++打开模板

 

注意:在ftl模板中添加list之后,无法在使用word或者wps打开 ,除非去掉list,

3.填充代码 

可以看到,上面有带c.或者f.的,这些是有多条数据时候,可以循环的,是由集合直接填入模板中的,而不是之前像上面一样get出来的 看下面代码:

    public static void testExportSimpleWordWf(String FTLUrl, String FTLName, String destFile, ListInfo listInfo, String bh, String imgFile) throws Exception {
        Map<String, Object> dataMap = new HashMap<>();
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        if (null != imgFile) {
            dataMap.put("imgStr", getImageStr(imgFile));
        }
        dataMap.put("BH", bh);
        dataMap.put("TIME", dateFormat.format(date));
        dataMap.put("NAME", stageController.getName_init());
        dataMap.put("ZJH", stageController.getIdcard_init());
        Configuration configuration = new Configuration();
        configuration.setDefaultEncoding("utf-8");

        configuration.setDirectoryForTemplateLoading(new File(
                FTLUrl));
        File outFile = new File(destFile);
        Template t = configuration.getTemplate(FTLName, "utf-8");
        Writer out = new BufferedWriter(new OutputStreamWriter(
                new FileOutputStream(outFile), "utf-8"), 10240);
        t.process(dataMap, out);
        out.close();
    }

    public static void testExportSimpleWordQs(FwqsInfo obj, String FTLUrl, String FTLName, String destFile, String bh, String imgFile) throws Exception {
        //创建一个HashMap 用于填充
        Map<String, Object> dataMap = new HashMap<>();
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        //填充图片
        if (null != imgFile) {
            dataMap.put("imgStr", getImageStr(imgFile));
        }
        //填充模板中对应的各个值
        dataMap.put("BH", bh);
//        dataMap.put("QLR", stageController.getName_init());
        dataMap.put("QLR", obj.getQlr());
        dataMap.put("TIME", dateFormat.format(date));
        dataMap.put("ZL", obj.getZl());
        dataMap.put("YT", obj.getYt());
        dataMap.put("MJ", obj.getMj());
        dataMap.put("SYQX", obj.getSyqx());
        dataMap.put("QLR", obj.getQlr());
        dataMap.put("QZH", obj.getBdcqzh());
        dataMap.put("QLXZ", obj.getQlxz());
        dataMap.put("QLLX", obj.getQllx());
        dataMap.put("GYQK", obj.getGyqk());
        dataMap.put("DJSJ", obj.getDjsj());
        dataMap.put("ZXSJ", obj.getZxsj());
        dataMap.put("FJ", obj.getFj());
        dataMap.put("LZRZJBH", obj.getLzrzjbh());
        dataMap.put("BDCQZH", obj.getBdcqzh());
        dataMap.put("CQYG", obj.getCqyg());
        dataMap.put("BDCDYH", obj.getBdcdyh());
        Logger.log("obj"+obj.getQlr());
        
        //判断各个集合中是否为空值,如果为空值则显示- 不为空则填充
        if ("[]".equals(obj.getYyxxList())) {
            dataMap.put("cfList", "-");
        }else{
            dataMap.put("cfList", obj.getCfxxList());
        }
        
        if ("[]".equals(obj.getDyqxxList())) {
            dataMap.put("dyList", "-");
        }else{
            dataMap.put("dyList", obj.getDyqxxList());
        }
        System.out.println(obj.getYyxxList());
         if ("[]".equals(obj.getCfxxList())) {
            dataMap.put("yyList", "-");
        }else{
            dataMap.put("yyList", obj.getYyxxList());
        }

        Configuration configuration = new Configuration();
        configuration.setDefaultEncoding("utf-8");

        configuration.setDirectoryForTemplateLoading(new File(
                FTLUrl));
        File outFile = new File(destFile);
        Template t = configuration.getTemplate(FTLName, "utf-8");
        Writer out = new BufferedWriter(new OutputStreamWriter(
                new FileOutputStream(outFile), "utf-8"), 10240);
        t.process(dataMap, out);
        out.close();
    }

 这样一个ftl模板的填充就完成鸟

不懂的欢迎质询我这个水枪,我们一起进去,冲冲冲。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值