| @@ -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; | 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.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; | 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.WxFinanceReceive; | ||||
| import com.iformall.domain.po.WxMerchant; | |||||
| import com.iformall.utils.DateUtils; | import com.iformall.utils.DateUtils; | ||||
| /** | /** | ||||
| * 财务数据解析 | * 财务数据解析 | ||||
| * 跟 WxFinancePrintData 里面的字段对应 | * 跟 WxFinancePrintData 里面的字段对应 | ||||
| @@ -13,21 +16,42 @@ import com.iformall.utils.DateUtils; | |||||
| * @author Administrator | * @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.ErrorCode; | ||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.domain.po.WxAllBill; | import com.iformall.domain.po.WxAllBill; | ||||
| import com.iformall.domain.po.WxEnergyFees; | |||||
| import com.iformall.domain.po.WxFinancePrintData; | import com.iformall.domain.po.WxFinancePrintData; | ||||
| import com.iformall.domain.po.WxFinancePrintTemplate; | import com.iformall.domain.po.WxFinancePrintTemplate; | ||||
| import com.iformall.domain.po.WxFinanceReceive; | import com.iformall.domain.po.WxFinanceReceive; | ||||
| import com.iformall.domain.po.WxMerchant; | |||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.domain.vo.PrintVo; | import com.iformall.domain.vo.PrintVo; | ||||
| import com.iformall.enums.EnumFinancePrintDataType; | 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.PrintBillDataHandler; | ||||
| import com.iformall.print.data.PrintFinanceReceiveDataHandler; | import com.iformall.print.data.PrintFinanceReceiveDataHandler; | ||||
| import com.iformall.service.WxAllBillService; | import com.iformall.service.WxAllBillService; | ||||
| import com.iformall.service.WxEnergyService; | |||||
| import com.iformall.service.WxFinancePrintService; | import com.iformall.service.WxFinancePrintService; | ||||
| import com.iformall.service.WxFinanceService; | import com.iformall.service.WxFinanceService; | ||||
| import com.iformall.service.WxMerchantService; | |||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||
| import java.util.Date; | import java.util.Date; | ||||
| @@ -49,10 +53,24 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { | |||||
| @Autowired | @Autowired | ||||
| WxFinanceService wxFinanceService; | WxFinanceService wxFinanceService; | ||||
| @Lazy | |||||
| @Autowired | |||||
| WxEnergyService wxEnergyService; | |||||
| @Lazy | @Lazy | ||||
| @Autowired | @Autowired | ||||
| WxAllBillService wxAllBillService; | WxAllBillService wxAllBillService; | ||||
| @Autowired | |||||
| PrintFinanceReceiveDataHandler printFinanceReceiveDataHandler; | |||||
| @Autowired | |||||
| PrintBillDataHandler printBillDataHandler; | |||||
| @Lazy | |||||
| @Autowired | |||||
| WxMerchantService wxMerchantService; | |||||
| @Override | @Override | ||||
| public List<WxFinancePrintData> printDataList(WxFinancePrintData record) { | public List<WxFinancePrintData> printDataList(WxFinancePrintData record) { | ||||
| return wxFinancePrintDataMapper.findList(record); | return wxFinancePrintDataMapper.findList(record); | ||||
| @@ -145,6 +163,12 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { | |||||
| return null; | return null; | ||||
| } | } | ||||
| EnumFinancePrintDataType printDatatype = EnumFinancePrintDataType.getEnum(template.getType()); | 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()) { | if (printDatatype.getCode().intValue() == EnumFinancePrintDataType.FINANCE_RECEIVE.getCode()) { | ||||
| WxFinanceReceive receiveq = new WxFinanceReceive(); | WxFinanceReceive receiveq = new WxFinanceReceive(); | ||||
| @@ -159,7 +183,7 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { | |||||
| WxFinanceReceive re = receiveList.get(i); | WxFinanceReceive re = receiveList.get(i); | ||||
| PrintVo vo = new PrintVo(); | PrintVo vo = new PrintVo(); | ||||
| vo.setDataId(templateId); | vo.setDataId(templateId); | ||||
| vo.setTemplate(PrintFinanceReceiveDataHandler.parse(template.getContent(), re)); | |||||
| vo.setTemplate(printFinanceReceiveDataHandler.parse(template.getContent(), re,merchantMap,feesMap)); | |||||
| voList.add(vo); | voList.add(vo); | ||||
| } | } | ||||
| return voList; | return voList; | ||||
| @@ -176,7 +200,7 @@ public class WxFinancePrintServiceImpl implements WxFinancePrintService { | |||||
| WxAllBill re = billAllList.get(i); | WxAllBill re = billAllList.get(i); | ||||
| PrintVo vo = new PrintVo(); | PrintVo vo = new PrintVo(); | ||||
| vo.setDataId(templateId); | vo.setDataId(templateId); | ||||
| vo.setTemplate(PrintBillDataHandler.parse(template.getContent(), re)); | |||||
| vo.setTemplate(printBillDataHandler.parse(template.getContent(), re,merchantMap,feesMap)); | |||||
| voList.add(vo); | voList.add(vo); | ||||
| } | } | ||||
| return voList; | return voList; | ||||
| @@ -529,6 +529,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { | |||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| Long receiveId = idWorker.nextId(); | Long receiveId = idWorker.nextId(); | ||||
| List<WxFinanceReceivePayway> receivePayWayList = new ArrayList<WxFinanceReceivePayway>(); | List<WxFinanceReceivePayway> receivePayWayList = new ArrayList<WxFinanceReceivePayway>(); | ||||
| StringBuffer moneyDetail = new StringBuffer(); | |||||
| if (null != record.getPayWays()) { | if (null != record.getPayWays()) { | ||||
| for (int i = 0 ; i < record.getPayWays().size() ; i ++) { | for (int i = 0 ; i < record.getPayWays().size() ; i ++) { | ||||
| WxBillPayWay payWay = record.getPayWays().get(i); | WxBillPayWay payWay = record.getPayWays().get(i); | ||||
| @@ -549,6 +550,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { | |||||
| rpw.setUpdateTime(new Date()); | rpw.setUpdateTime(new Date()); | ||||
| rpw.setIsDel(EnumYesOrNo.NO.getCode()); | rpw.setIsDel(EnumYesOrNo.NO.getCode()); | ||||
| receivePayWayList.add(rpw); | 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()); | WxFinanceReceive addreceive = generateReceive(receiveId,user, EnumFinanceCashierType.RECEIVE,EnumFinanceReceiveType.RECEIVE, receiveTotal.toPlainString(),null, record.getMerchantId(), null, record.getRemark()); | ||||
| if (receiveTotal.compareTo(new BigDecimal(0)) > 0) { | if (receiveTotal.compareTo(new BigDecimal(0)) > 0) { | ||||
| addreceive.setMoneyDetail(JSON.toJSONString(record.getPayWays())); | |||||
| addreceive.setMoneyDetail(moneyDetail.toString()); | |||||
| wxFinanceReceivePaywayMapper.insertPayWays(record.getTenantId(),receivePayWayList); | wxFinanceReceivePaywayMapper.insertPayWays(record.getTenantId(),receivePayWayList); | ||||
| } | } | ||||
| WxMerchant merchant = new WxMerchant(); | WxMerchant merchant = new WxMerchant(); | ||||
| @@ -733,6 +735,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { | |||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| Long receiveId = idWorker.nextId(); | Long receiveId = idWorker.nextId(); | ||||
| List<WxFinanceReceivePayway> receivePayWayList = new ArrayList<WxFinanceReceivePayway>(); | List<WxFinanceReceivePayway> receivePayWayList = new ArrayList<WxFinanceReceivePayway>(); | ||||
| StringBuffer moneyDetail = new StringBuffer(); | |||||
| if (null != record.getPayWays()) { | if (null != record.getPayWays()) { | ||||
| for (int i = 0 ; i < record.getPayWays().size() ; i ++) { | for (int i = 0 ; i < record.getPayWays().size() ; i ++) { | ||||
| WxBillPayWay payWay = record.getPayWays().get(i); | WxBillPayWay payWay = record.getPayWays().get(i); | ||||
| @@ -752,6 +755,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { | |||||
| rpw.setUpdateTime(new Date()); | rpw.setUpdateTime(new Date()); | ||||
| rpw.setIsDel(EnumYesOrNo.NO.getCode()); | rpw.setIsDel(EnumYesOrNo.NO.getCode()); | ||||
| receivePayWayList.add(rpw); | receivePayWayList.add(rpw); | ||||
| moneyDetail.append(payWay.getName()).append(":").append(payWay.getMoney()).append("元"); | |||||
| } | } | ||||
| } | } | ||||
| List<WxAllBill> bills = record.getBills(); | List<WxAllBill> bills = record.getBills(); | ||||