| @@ -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<Long,WxMerchant> merchantMap,Map<Long,WxEnergyFees> 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<Long,WxMerchant> merchantMap,Map<Long,WxEnergyFees> feesMap); | |||
| } | |||
| @@ -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<Long,WxMerchant> merchantMap,Map<Long,WxEnergyFees> 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; | |||
| } | |||
| } | |||
| @@ -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<Long,WxMerchant> merchantMap,Map<Long,WxEnergyFees> 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; | |||
| } | |||
| } | |||
| @@ -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<WxFinancePrintData> 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<Long,WxMerchant> merchantMap = wxMerchantService.findMerchantMap(mq); | |||
| WxEnergyFees feq = new WxEnergyFees(); | |||
| feq.setTenantId(tenantId); | |||
| Map<Long, WxEnergyFees> 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; | |||
| @@ -529,6 +529,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| Long receiveId = idWorker.nextId(); | |||
| List<WxFinanceReceivePayway> receivePayWayList = new ArrayList<WxFinanceReceivePayway>(); | |||
| 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<WxFinanceReceivePayway> receivePayWayList = new ArrayList<WxFinanceReceivePayway>(); | |||
| 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<WxAllBill> bills = record.getBills(); | |||