diff --git a/mallinkService/src/main/java/com/iformall/print/data/PrintCustomedTableDataHandler.java b/mallinkService/src/main/java/com/iformall/print/data/PrintCustomedTableDataHandler.java index ea2e1cdab..d35303b48 100644 --- a/mallinkService/src/main/java/com/iformall/print/data/PrintCustomedTableDataHandler.java +++ b/mallinkService/src/main/java/com/iformall/print/data/PrintCustomedTableDataHandler.java @@ -2,41 +2,42 @@ package com.iformall.print.data; import java.util.Iterator; import java.util.List; -import java.util.Map; 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.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; -import com.iformall.domain.po.WxEnergyFees; -import com.iformall.domain.po.WxMerchant; @Service public class PrintCustomedTableDataHandler{ - public String getTableContent(PrintDataParser parser,String componentContent,JSONArray datas,JSONObject entity,Map merchantMap,Map feesMap,Map shopNumber) { - if (null != entity) { + public String getTableContent(String componentContent,PrintDataParser objectParser,Object object,PrintDataParser listParser,List listdata,Object... params) { + if (null != object) { + JSONObject entity = JSON.parseObject(JSON.toJSONString(object)); for (Iterator it = entity.keySet().iterator(); it.hasNext();) { String fieldName = it.next(); //Object o = entity.get(fieldName); - Object o = parser.getObjectValue(fieldName, entity, merchantMap, feesMap, shopNumber); - if (null == o) { - componentContent = componentContent.replaceAll("\\{"+fieldName+"\\}", ""); + if (StringUtils.isBlank(fieldName)) { }else { - componentContent = componentContent.replaceAll("\\{"+fieldName+"\\}", String.valueOf(o)); + Object o = objectParser.getObjectValue(fieldName, object,params); + if (null == o) { + componentContent = componentContent.replaceAll("\\{"+fieldName+"\\}", ""); + }else { + componentContent = componentContent.replaceAll("\\{"+fieldName+"\\}", String.valueOf(o)); + } } - } } - componentContent = getTableListContent(parser,componentContent,datas,merchantMap,feesMap,shopNumber); + + componentContent = getTableListContent(listParser,componentContent,listdata,params); return componentContent; } - private String getTableListContent(PrintDataParser parser,String componentContent,JSONArray datas,Map merchantMap,Map feesMap,Map shopNumber) { - if (null == datas || datas.size() <= 0) { + private String getTableListContent(PrintDataParser parser,String componentContent,List listdata,Object... params) { + if (null == listdata || listdata.size() <= 0) { return componentContent; } Document doc = Jsoup.parse(componentContent); @@ -45,8 +46,9 @@ public class PrintCustomedTableDataHandler{ 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); + for (int i = 0 ; i < listdata.size(); i ++) { + Object object = listdata.get(i); + JSONObject o = JSON.parseObject(JSON.toJSONString(object)); Element tr = titleTr.parent().appendElement("tr"); sb.append(" merchantMap,Map feesMap,Map shopNumber); + public Object getObjectValue(String name, Object o,Object... params); } diff --git a/mallinkService/src/main/java/com/iformall/print/data/impl/PrintBillDataHandler.java b/mallinkService/src/main/java/com/iformall/print/data/impl/PrintBillDataHandler.java index 18ba0c6f5..4ba405ebb 100644 --- a/mallinkService/src/main/java/com/iformall/print/data/impl/PrintBillDataHandler.java +++ b/mallinkService/src/main/java/com/iformall/print/data/impl/PrintBillDataHandler.java @@ -6,7 +6,6 @@ import org.springframework.stereotype.Service; import com.iformall.domain.po.WxAllBill; import com.iformall.domain.po.WxEnergyFees; -import com.iformall.domain.po.WxFinanceReceive; import com.iformall.domain.po.WxMerchant; import com.iformall.print.data.PrintDataParser; import com.iformall.utils.DateUtils; @@ -16,7 +15,10 @@ public class PrintBillDataHandler implements PrintDataParser{ @Override - public Object getObjectValue(String name, Object o,Map merchantMap,Map feesMap,Map shopNumber) { + public Object getObjectValue(String name, Object o,Object... params) { + Map merchantMap = (Map) params[0]; + Map feesMap = (Map) params[1]; + Map shopNumber = (Map) params[2]; WxAllBill receive = (WxAllBill) o; if (name.equals("id")) { return receive.getId(); diff --git a/mallinkService/src/main/java/com/iformall/print/data/impl/PrintFinanceReceiveDataHandler.java b/mallinkService/src/main/java/com/iformall/print/data/impl/PrintFinanceReceiveDataHandler.java index a094f43be..ef3a5d936 100644 --- a/mallinkService/src/main/java/com/iformall/print/data/impl/PrintFinanceReceiveDataHandler.java +++ b/mallinkService/src/main/java/com/iformall/print/data/impl/PrintFinanceReceiveDataHandler.java @@ -25,8 +25,10 @@ import com.iformall.utils.DateUtils; public class PrintFinanceReceiveDataHandler implements PrintDataParser{ @Override - public Object getObjectValue(String name, Object o, Map merchantMap, - Map feesMap,Map shopNumber) { + public Object getObjectValue(String name, Object o, Object... params) { + Map merchantMap = (Map) params[0]; + Map feesMap = (Map) params[1]; + Map shopNumber = (Map) params[2]; WxFinanceReceive receive = (WxFinanceReceive) o; if (name.equals("id")) { return receive.getId(); diff --git a/mallinkService/src/main/java/com/iformall/print/data/impl/PrintMerchantSettleDataHandler.java b/mallinkService/src/main/java/com/iformall/print/data/impl/PrintMerchantSettleDataHandler.java index 30709771f..6c75a3dee 100644 --- a/mallinkService/src/main/java/com/iformall/print/data/impl/PrintMerchantSettleDataHandler.java +++ b/mallinkService/src/main/java/com/iformall/print/data/impl/PrintMerchantSettleDataHandler.java @@ -8,6 +8,7 @@ import com.iformall.domain.po.WxAllBill; import com.iformall.domain.po.WxEnergyFees; import com.iformall.domain.po.WxFinanceReceive; import com.iformall.domain.po.WxMerchant; +import com.iformall.domain.vo.WxMerchantBillVo; import com.iformall.print.data.PrintDataParser; import com.iformall.utils.DateUtils; @@ -15,7 +16,11 @@ import com.iformall.utils.DateUtils; public class PrintMerchantSettleDataHandler implements PrintDataParser{ @Override - public Object getObjectValue(String name, Object o,Map merchantMap,Map feesMap,Map shopNumber) { + public Object getObjectValue(String name, Object o,Object... params) { + Map merchantMap = (Map) params[0]; + Map feesMap = (Map) params[1]; + Map shopNumber = (Map) params[2]; + WxMerchantBillVo receive = (WxMerchantBillVo) o; //根据科目来查询对应的信息 // if (name.equals("id")) { // return receive.getId(); 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 f617c551a..f602a248c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFinancePrintServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFinancePrintServiceImpl.java @@ -30,6 +30,7 @@ import com.iformall.mapper.WxFinancePrintDataMapper; import com.iformall.mapper.WxFinancePrintTemplateMapper; import com.iformall.print.PrintComponentHandler; import com.iformall.print.data.PrintCustomedTableDataHandler; +import com.iformall.print.data.PrintDataParser; import com.iformall.print.data.impl.PrintBillDataHandler; import com.iformall.print.data.impl.PrintFinanceReceiveDataHandler; import com.iformall.print.data.impl.PrintMerchantSettleDataHandler; @@ -191,6 +192,38 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { return isSetDefaultValue; } + private void handleComponentData(JSONArray items,PrintDataParser objectParser,Object object,PrintDataParser listParser,List listdata,Object... params) { + if (null != items) { + for (int j = 0 ; j < items.size() ; j ++) { + JSONObject ov = items.getJSONObject(j); + //是否是定制化的表格 + Integer isCustomedTable = ov.getInteger("isFmCustomizedTable"); + + boolean isSetDefaultValue = isSetDefaultValue(ov); + if (null != isCustomedTable && EnumYesOrNo.YES.getCode().intValue() == isCustomedTable.intValue()) { + //表格解析 + String componentContent = ov.getString("value"); + if (null != listdata) { + ov.put("defaultValue",printCustomedTableDataHandler.getTableContent(componentContent, objectParser,object,listParser,listdata,params)); + ov.put("value", ""); + } + }else { + String fieldName = ov.getString("name"); + if (StringUtils.isBlank(fieldName)) { + + }else { + if (isSetDefaultValue) { + ov.put("defaultValue", objectParser.getObjectValue(fieldName,object,params)); + ov.put("value", ""); + }else { + ov.put("value", objectParser.getObjectValue(fieldName,object,params)); + } + } + } + } + } + } + @Override public List parseTemplateData(String tenantId, Long templateId, List dataIds,Object entity) { WxFinancePrintTemplate template = this.getTemplateById(templateId); @@ -239,31 +272,7 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { billq.setIds(billIdList); billList = wxAllBillService.list(billq); } - if (null != items) { - for (int j = 0 ; j < items.size() ; j ++) { - JSONObject ov = items.getJSONObject(j); - //是否是定制化的表格 - Integer isCustomedTable = ov.getInteger("isFmCustomizedTable"); - - boolean isSetDefaultValue = isSetDefaultValue(ov); - if (null != isCustomedTable && EnumYesOrNo.YES.getCode().intValue() == isCustomedTable.intValue()) { - //表格解析 - String componentContent = ov.getString("value"); - if (null != billList) { - ov.put("defaultValue",printCustomedTableDataHandler.getTableContent(printFinanceReceiveDataHandler,componentContent, JSON.parseArray(JSON.toJSONString(billList)), - JSON.parseObject(JSON.toJSONString(re)),merchantMap,feesMap,shopNumber)); - ov.put("value", ""); - } - }else { - if (isSetDefaultValue) { - ov.put("defaultValue", printFinanceReceiveDataHandler.getObjectValue(ov.getString("name"),re,merchantMap,feesMap,shopNumber)); - ov.put("value", ""); - }else { - ov.put("value", printFinanceReceiveDataHandler.getObjectValue(ov.getString("name"),re,merchantMap,feesMap,shopNumber)); - } - } - } - } + handleComponentData(items, printFinanceReceiveDataHandler,re,printBillDataHandler, billList,merchantMap,feesMap,feesMap); vo.setTemplate(o); voList.add(vo); } @@ -358,7 +367,8 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { String componentContent = ov.getString("value"); if (null != sumlist && sumlist.size() > 0 ) { - ov.put("defaultValue",printCustomedTableDataHandler.getTableContent(printMerchantSettleDataHandler,componentContent, JSON.parseArray(JSON.toJSONString(sumlist)),JSON.parseObject(JSON.toJSONString(bq)),merchantMap,feesMap,shopNumber)); + ov.put("defaultValue",printCustomedTableDataHandler.getTableContent(componentContent, printMerchantSettleDataHandler,bq, + printMerchantSettleDataHandler,sumlist,merchantMap,feesMap,shopNumber)); ov.put("value", ""); } }else {