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模板的填充就完成鸟
不懂的欢迎质询我这个水枪,我们一起进去,冲冲冲。