From 094d211b3cc76f3da00672ad27d99afb9b204c99 Mon Sep 17 00:00:00 2001 From: winter Date: Fri, 9 Aug 2024 18:38:32 +0800 Subject: [PATCH] fix --- mallinkService/pom.xml | 5 ++ .../iformall/print/PrintComponentHandler.java | 8 ++- .../data/PrintCustomedTableDataHandler.java | 64 +++++++++++++++++++ .../data/PrintFinanceReceiveDataHandler.java | 7 +- .../entity/component/html/PrintHtml.java | 2 + .../impl/WxFinancePrintServiceImpl.java | 43 +++++++++++-- 6 files changed, 118 insertions(+), 11 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/print/data/PrintCustomedTableDataHandler.java diff --git a/mallinkService/pom.xml b/mallinkService/pom.xml index d78dee99c..9e2afb1e4 100644 --- a/mallinkService/pom.xml +++ b/mallinkService/pom.xml @@ -40,6 +40,11 @@ alipay-easysdk 2.2.0 + + org.jsoup + jsoup + 1.13.1 + \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/print/PrintComponentHandler.java b/mallinkService/src/main/java/com/iformall/print/PrintComponentHandler.java index 46c450887..decbb0ed3 100644 --- a/mallinkService/src/main/java/com/iformall/print/PrintComponentHandler.java +++ b/mallinkService/src/main/java/com/iformall/print/PrintComponentHandler.java @@ -78,9 +78,15 @@ public class PrintComponentHandler implements Serializable { PrintHtml html = new PrintHtml(); html.setTitle(data.getName()); html.setIsEdit(data.getIsEdit()); - html.setName("html"); html.setValue(dataJson.getString("html")); return html; + }else if ("braid-html-table".equals(data.getPrintDataType())) { + PrintHtml html = new PrintHtml(); + html.setTitle(data.getName()); + html.setIsEdit(data.getIsEdit()); + html.setValue(dataJson.getString("html")); + html.setIsFmCustomizedTable(EnumYesOrNo.YES.getCode()); + return html; } return null; } diff --git a/mallinkService/src/main/java/com/iformall/print/data/PrintCustomedTableDataHandler.java b/mallinkService/src/main/java/com/iformall/print/data/PrintCustomedTableDataHandler.java new file mode 100644 index 000000000..8385dc4d1 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/print/data/PrintCustomedTableDataHandler.java @@ -0,0 +1,64 @@ +package com.iformall.print.data; + +import java.util.List; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.nodes.Node; +import org.springframework.stereotype.Service; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; + +@Service +public class PrintCustomedTableDataHandler{ + + + public String getTableContent(String componentContent,JSONArray datas){ + if (null == datas || datas.size() <= 0) { + return componentContent; + } + Document doc = Jsoup.parse(componentContent); + Element titleTr = doc.getElementById("titletr"); + List titleTds = titleTr.childNodes(); + String trclass = titleTr.attr("class"); + String trstyle = titleTr.attr("style"); + StringBuffer sb = new StringBuffer(); + for (int i = 0 ; i < datas.size(); i ++) { + JSONObject o = datas.getJSONObject(i); + sb.append(""); + for (int j = 0 ; j < titleTds.size() ; j ++) { + Node td = titleTds.get(i); + String tdclass = titleTr.attr("class"); + String tdstyle = titleTr.attr("style"); + String tdcolspan = titleTr.attr("colspan"); + sb.append(""); + //取什么属性 + String fieldName = td.attr("fieldName"); + sb.append(o.get(fieldName)); + sb.append(""); + } + sb.append(""); + } + return null; + } + +} diff --git a/mallinkService/src/main/java/com/iformall/print/data/PrintFinanceReceiveDataHandler.java b/mallinkService/src/main/java/com/iformall/print/data/PrintFinanceReceiveDataHandler.java index 8bb542c57..4ccf4e1e4 100644 --- a/mallinkService/src/main/java/com/iformall/print/data/PrintFinanceReceiveDataHandler.java +++ b/mallinkService/src/main/java/com/iformall/print/data/PrintFinanceReceiveDataHandler.java @@ -23,7 +23,7 @@ import com.iformall.utils.DateUtils; @Service public class PrintFinanceReceiveDataHandler { - public Object getObjectValue(String name, Object o,Map merchantMap,Map feesMap,Map shopNumber,List billList) { + public Object getObjectValue(String name, Object o,Map merchantMap,Map feesMap,Map shopNumber) { WxFinanceReceive receive = (WxFinanceReceive) o; if (name.equals("id")) { return receive.getId(); @@ -58,11 +58,6 @@ public class PrintFinanceReceiveDataHandler { return shopNumber.get(receive.getMerchantId()); } return ""; - }else if (name.equals("billList")) { - if (null == billList) { - return new ArrayList(); - } - return billList; } return null; } diff --git a/mallinkService/src/main/java/com/iformall/print/entity/component/html/PrintHtml.java b/mallinkService/src/main/java/com/iformall/print/entity/component/html/PrintHtml.java index 9e78a09ec..17378ad0c 100644 --- a/mallinkService/src/main/java/com/iformall/print/entity/component/html/PrintHtml.java +++ b/mallinkService/src/main/java/com/iformall/print/entity/component/html/PrintHtml.java @@ -10,4 +10,6 @@ public class PrintHtml extends PrintComponent { private String type="braid-html"; //打印项默认内容 private String defaultValue; + //是否是定制化的表格 + public Integer isFmCustomizedTable = 0; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxFinancePrintServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxFinancePrintServiceImpl.java index 84c702022..1419ac556 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFinancePrintServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFinancePrintServiceImpl.java @@ -20,7 +20,6 @@ import com.iformall.domain.po.WxFinanceReceive; import com.iformall.domain.po.WxFinanceReceiveBill; import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.base.BaseEntity; -import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.PrintMerchantSettleVo; import com.iformall.domain.vo.PrintVo; import com.iformall.enums.EnumFinancePrintDataType; @@ -30,6 +29,7 @@ import com.iformall.mapper.WxFinancePrintDataMapper; import com.iformall.mapper.WxFinancePrintTemplateMapper; import com.iformall.print.PrintComponentHandler; import com.iformall.print.data.PrintBillDataHandler; +import com.iformall.print.data.PrintCustomedTableDataHandler; import com.iformall.print.data.PrintFinanceReceiveDataHandler; import com.iformall.print.data.PrintMerchantSettleDataHandler; import com.iformall.service.WxAllBillService; @@ -77,6 +77,9 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { @Autowired PrintMerchantSettleDataHandler printMerchantSettleDataHandler; + @Autowired + PrintCustomedTableDataHandler printCustomedTableDataHandler; + @Lazy @Autowired WxMerchantService wxMerchantService; @@ -229,7 +232,17 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { if (null != items) { for (int j = 0 ; j < items.size() ; j ++) { JSONObject ov = items.getJSONObject(j); - ov.put("value", printFinanceReceiveDataHandler.getObjectValue(ov.getString("name"),re,merchantMap,feesMap,shopNumber,billList)); + //是否是定制化的表格 + Integer isCustomedTable = ov.getInteger("isFmCustomizedTable"); + if (null != isCustomedTable && EnumYesOrNo.YES.getCode().intValue() == isCustomedTable.intValue()) { + //表格解析 + String componentContent = ov.getString("value"); + if (null != billList) { + printCustomedTableDataHandler.getTableContent(componentContent, JSON.parseArray(JSON.toJSONString(billList))); + } + }else { + ov.put("value", printFinanceReceiveDataHandler.getObjectValue(ov.getString("name"),re,merchantMap,feesMap,shopNumber)); + } } } vo.setTemplate(o); @@ -252,7 +265,18 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { if (null != items) { for (int j = 0 ; j < items.size() ; j ++) { JSONObject ov = items.getJSONObject(j); - ov.put("value", printBillDataHandler.getObjectValue(ov.getString("name"),re,merchantMap,feesMap)); + //是否是定制化的表格 + Integer isCustomedTable = ov.getInteger("isFmCustomizedTable"); + if (null != isCustomedTable && EnumYesOrNo.YES.getCode().intValue() == isCustomedTable.intValue()) { + //表格解析 + String componentContent = ov.getString("value"); + //if (null != billList) { + // printCustomedTableDataHandler.getTableContent(componentContent, JSON.parseArray(JSON.toJSONString(billList))); + //} + }else { + ov.put("value", printBillDataHandler.getObjectValue(ov.getString("name"),re,merchantMap,feesMap)); + } + } } vo.setTemplate(o); @@ -275,7 +299,18 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { if (null != items) { for (int j = 0 ; j < items.size() ; j ++) { JSONObject ov = items.getJSONObject(j); - ov.put("value", printMerchantSettleDataHandler.getObjectValue(ov.getString("name"),sv,merchantMap,feesMap)); + //是否是定制化的表格 + Integer isCustomedTable = ov.getInteger("isFmCustomizedTable"); + if (null != isCustomedTable && EnumYesOrNo.YES.getCode().intValue() == isCustomedTable.intValue()) { + //表格解析 + String componentContent = ov.getString("value"); + //if (null != billList) { + // printCustomedTableDataHandler.getTableContent(componentContent, JSON.parseArray(JSON.toJSONString(billList))); + //} + }else { + ov.put("value", printMerchantSettleDataHandler.getObjectValue(ov.getString("name"),sv,merchantMap,feesMap)); + } + } } vo.setTemplate(o);