From 913cc0ba02c423c696e2971fd068549de3a31f99 Mon Sep 17 00:00:00 2001 From: winter Date: Wed, 7 Aug 2024 00:20:47 +0800 Subject: [PATCH] fix --- .../print/data/AbstractPrintDataParser.java | 31 +++++++++ .../print/data/PrintBillDataHandler.java | 63 ++++++++++++++++--- .../data/PrintFinanceReceiveDataHandler.java | 58 ++++++++++++----- .../impl/WxFinancePrintServiceImpl.java | 28 ++++++++- .../service/impl/WxFinanceServiceImpl.java | 6 +- 5 files changed, 157 insertions(+), 29 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/print/data/AbstractPrintDataParser.java diff --git a/mallinkService/src/main/java/com/iformall/print/data/AbstractPrintDataParser.java b/mallinkService/src/main/java/com/iformall/print/data/AbstractPrintDataParser.java new file mode 100644 index 000000000..eb1fe2228 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/print/data/AbstractPrintDataParser.java @@ -0,0 +1,31 @@ +package com.iformall.print.data; + +import java.util.Map; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +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; + +public abstract class AbstractPrintDataParser { + + public JSONObject parse(String templateContent,Object re,Map merchantMap,Map feesMap) { + //把所有可能的组件里面需要的内容都解析出来 + if (StringUtils.isBlank(templateContent)) { + return null; + } + JSONObject o = JSON.parseObject(templateContent); + JSONArray items = o.getJSONArray("tempItems"); + if (null != items) { + for (int i = 0 ; i < items.size() ; i ++) { + JSONObject ov = items.getJSONObject(i); + ov.put("value", getObjectValue(ov.getString("name"),re,merchantMap,feesMap)); + } + } + return o; + } + + public abstract Object getObjectValue(String name, Object o,Map merchantMap,Map feesMap); +} diff --git a/mallinkService/src/main/java/com/iformall/print/data/PrintBillDataHandler.java b/mallinkService/src/main/java/com/iformall/print/data/PrintBillDataHandler.java index b0af13722..8dd59cd97 100644 --- a/mallinkService/src/main/java/com/iformall/print/data/PrintBillDataHandler.java +++ b/mallinkService/src/main/java/com/iformall/print/data/PrintBillDataHandler.java @@ -1,17 +1,62 @@ package com.iformall.print.data; -import lombok.Data; -import java.io.Serializable; -import com.alibaba.fastjson.JSONObject; +import java.util.Map; + +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.utils.DateUtils; -@Data -public class PrintBillDataHandler implements Serializable { +@Service +public class PrintBillDataHandler extends AbstractPrintDataParser { - private static final long serialVersionUID = 1L; - public static JSONObject parse(String templateContent,WxAllBill re) { - return null; - } + @Override + public Object getObjectValue(String name, Object o,Map merchantMap,Map feesMap) { + WxAllBill receive = (WxAllBill) o; + if (name.equals("id")) { + return receive.getId(); + }else if (name.equals("createtime")) { + return DateUtils.date2String(receive.getCreatetime()); + }else if (name.equals("receivePay")) { + return receive.getReceivePay(); + }else if (name.equals("pay")) { + return receive.getPay(); + }else if (name.equals("setOff")) { + return receive.getSetOff(); + }else if (name.equals("starttime")) { + return DateUtils.date2String(receive.getStarttime()); + }else if (name.equals("endtime")) { + return DateUtils.date2String(receive.getEndtime()); + }else if (name.equals("owe")) { + return receive.getOwe(); + }else if (name.equals("statusName")) { + return receive.getStatusName(); + }else if (name.equals("merchantName")) { + if (null != merchantMap) { + WxMerchant m = merchantMap.get(receive.getMerchantId()); + if (null != m) { + return m.getName(); + } + } + return ""; + }else if (name.equals("energyFeesName")) { + if (null != feesMap) { + WxEnergyFees f = feesMap.get(receive.getEnergyFeesId()); + if (null != f) { + return f.getName(); + } + } + return ""; + }else if (name.equals("returnPay")) { + return receive.getReturnPay(); + }else if (name.equals("billRemark")) { + return receive.getBillRemark(); + } + return o; + } } 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 bcfc7f7a7..e98b540f5 100644 --- a/mallinkService/src/main/java/com/iformall/print/data/PrintFinanceReceiveDataHandler.java +++ b/mallinkService/src/main/java/com/iformall/print/data/PrintFinanceReceiveDataHandler.java @@ -1,11 +1,14 @@ package com.iformall.print.data; -import lombok.Data; -import java.io.Serializable; -import com.alibaba.fastjson.JSONObject; -import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; +import java.util.Map; + +import org.springframework.stereotype.Service; + +import com.iformall.domain.po.WxEnergyFees; import com.iformall.domain.po.WxFinanceReceive; +import com.iformall.domain.po.WxMerchant; import com.iformall.utils.DateUtils; + /** * 财务数据解析 * 跟 WxFinancePrintData 里面的字段对应 @@ -13,21 +16,42 @@ import com.iformall.utils.DateUtils; * @author Administrator * */ -@Data -public class PrintFinanceReceiveDataHandler implements Serializable { +@Service +public class PrintFinanceReceiveDataHandler extends AbstractPrintDataParser { - private static final long serialVersionUID = 1L; - - public static JSONObject parse(String templateContent,WxFinanceReceive re) { - //把所有可能的组件里面需要的内容都解析出来 - if (StringUtils.isBlank(templateContent)) { - return null; + @Override + public Object getObjectValue(String name, Object o,Map merchantMap,Map feesMap) { + WxFinanceReceive receive = (WxFinanceReceive) o; + if (name.equals("id")) { + return receive.getId(); + }else if (name.equals("createTime")) { + return DateUtils.date2String(receive.getCreateTime()); + }else if (name.equals("receiveMoney")) { + return receive.getReceiveMoney(); + }else if (name.equals("payMoney")) { + return receive.getPayMoney(); + }else if (name.equals("setOffMoney")) { + return receive.getSetOffMoney(); + }else if (name.equals("useMoney")) { + return receive.getUseMoney(); + }else if (name.equals("receiveTypeName")) { + return receive.getReceiveTypeName(); + }else if (name.equals("createByName")) { + return receive.getCreateByName(); + }else if (name.equals("moneyDetail")) { + return receive.getMoneyDetail(); + }else if (name.equals("remark")) { + return receive.getRemark(); + }else if (name.equals("merchantName")) { + if (null != merchantMap) { + WxMerchant m = merchantMap.get(receive.getMerchantId()); + if (null != m) { + return receive.getRemark(); + } + } + return ""; } - templateContent = templateContent.replaceAll("id", String.valueOf(re.getId())); - templateContent = templateContent.replaceAll("createTime", DateUtils.date2String(re.getCreateTime())); - templateContent = templateContent.replaceAll("feesId", DateUtils.date2String(re.getCreateTime())); - - return null; + return o; } } 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 2c38d949d..bdce60af1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFinancePrintServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFinancePrintServiceImpl.java @@ -12,9 +12,11 @@ import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.domain.po.WxAllBill; +import com.iformall.domain.po.WxEnergyFees; import com.iformall.domain.po.WxFinancePrintData; import com.iformall.domain.po.WxFinancePrintTemplate; import com.iformall.domain.po.WxFinanceReceive; +import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.PrintVo; import com.iformall.enums.EnumFinancePrintDataType; @@ -25,8 +27,10 @@ import com.iformall.mapper.WxFinancePrintTemplateMapper; import com.iformall.print.data.PrintBillDataHandler; import com.iformall.print.data.PrintFinanceReceiveDataHandler; import com.iformall.service.WxAllBillService; +import com.iformall.service.WxEnergyService; import com.iformall.service.WxFinancePrintService; import com.iformall.service.WxFinanceService; +import com.iformall.service.WxMerchantService; import java.util.ArrayList; import java.util.Date; @@ -49,10 +53,24 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { @Autowired WxFinanceService wxFinanceService; + @Lazy + @Autowired + WxEnergyService wxEnergyService; + @Lazy @Autowired WxAllBillService wxAllBillService; + @Autowired + PrintFinanceReceiveDataHandler printFinanceReceiveDataHandler; + + @Autowired + PrintBillDataHandler printBillDataHandler; + + @Lazy + @Autowired + WxMerchantService wxMerchantService; + @Override public List printDataList(WxFinancePrintData record) { return wxFinancePrintDataMapper.findList(record); @@ -145,6 +163,12 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { return null; } EnumFinancePrintDataType printDatatype = EnumFinancePrintDataType.getEnum(template.getType()); + WxMerchant mq = new WxMerchant(); + mq.setTenantId(tenantId); + Map merchantMap = wxMerchantService.findMerchantMap(mq); + WxEnergyFees feq = new WxEnergyFees(); + feq.setTenantId(tenantId); + Map feesMap = wxEnergyService.getFeesMap(feq); //付款单 if (printDatatype.getCode().intValue() == EnumFinancePrintDataType.FINANCE_RECEIVE.getCode()) { WxFinanceReceive receiveq = new WxFinanceReceive(); @@ -159,7 +183,7 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { WxFinanceReceive re = receiveList.get(i); PrintVo vo = new PrintVo(); vo.setDataId(templateId); - vo.setTemplate(PrintFinanceReceiveDataHandler.parse(template.getContent(), re)); + vo.setTemplate(printFinanceReceiveDataHandler.parse(template.getContent(), re,merchantMap,feesMap)); voList.add(vo); } return voList; @@ -176,7 +200,7 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { WxAllBill re = billAllList.get(i); PrintVo vo = new PrintVo(); vo.setDataId(templateId); - vo.setTemplate(PrintBillDataHandler.parse(template.getContent(), re)); + vo.setTemplate(printBillDataHandler.parse(template.getContent(), re,merchantMap,feesMap)); voList.add(vo); } return voList; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java index 91dc33b6c..23b6c6a8c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java @@ -529,6 +529,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { final IdWorker idWorker = IdWorker.get(); Long receiveId = idWorker.nextId(); List receivePayWayList = new ArrayList(); + StringBuffer moneyDetail = new StringBuffer(); if (null != record.getPayWays()) { for (int i = 0 ; i < record.getPayWays().size() ; i ++) { WxBillPayWay payWay = record.getPayWays().get(i); @@ -549,6 +550,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { rpw.setUpdateTime(new Date()); rpw.setIsDel(EnumYesOrNo.NO.getCode()); receivePayWayList.add(rpw); + moneyDetail.append(payWay.getName()).append(":").append(payWay.getMoney()).append("元"); } } } @@ -560,7 +562,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { //创建主收款单 WxFinanceReceive addreceive = generateReceive(receiveId,user, EnumFinanceCashierType.RECEIVE,EnumFinanceReceiveType.RECEIVE, receiveTotal.toPlainString(),null, record.getMerchantId(), null, record.getRemark()); if (receiveTotal.compareTo(new BigDecimal(0)) > 0) { - addreceive.setMoneyDetail(JSON.toJSONString(record.getPayWays())); + addreceive.setMoneyDetail(moneyDetail.toString()); wxFinanceReceivePaywayMapper.insertPayWays(record.getTenantId(),receivePayWayList); } WxMerchant merchant = new WxMerchant(); @@ -733,6 +735,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { final IdWorker idWorker = IdWorker.get(); Long receiveId = idWorker.nextId(); List receivePayWayList = new ArrayList(); + StringBuffer moneyDetail = new StringBuffer(); if (null != record.getPayWays()) { for (int i = 0 ; i < record.getPayWays().size() ; i ++) { WxBillPayWay payWay = record.getPayWays().get(i); @@ -752,6 +755,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { rpw.setUpdateTime(new Date()); rpw.setIsDel(EnumYesOrNo.NO.getCode()); receivePayWayList.add(rpw); + moneyDetail.append(payWay.getName()).append(":").append(payWay.getMoney()).append("元"); } } List bills = record.getBills();