package com.kmall.admin.service.impl; import com.kmall.admin.dao.MallPaymentOrderDataDao; import com.kmall.admin.dto.AliPaymentOrderDto; import com.kmall.admin.dto.WxPaymentOrderDto; import com.kmall.admin.entity.MallPaymentOrderDataEntity; import com.kmall.admin.fromcomm.entity.SysUserEntity; import com.kmall.admin.service.MallPaymentOrderDataService; import com.kmall.admin.utils.ShiroUtils; import com.kmall.common.constant.Dict; import com.kmall.common.constant.JxlsXmlTemplateName; import com.kmall.common.utils.RRException; import com.kmall.common.utils.excel.ExcelExport; import com.kmall.common.utils.excel.ExcelUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.*; /** * 支付订单表Service实现类 * * @author emato * @email admin@qhdswl.com * @date 2021-04-22 14:54:43 */ @Service("mallPaymentOrderDataService") public class MallPaymentOrderDataServiceImpl implements MallPaymentOrderDataService { @Autowired private MallPaymentOrderDataDao mall2PaymentOrderDataDao; @Autowired private ExcelUtil excelUtil; @Override public MallPaymentOrderDataEntity queryObject(Integer payOrderId) { return mall2PaymentOrderDataDao.queryObject(payOrderId); } @Override public List queryList(Map map) { return mall2PaymentOrderDataDao.queryList(map); } @Override public int queryTotal(Map map) { return mall2PaymentOrderDataDao.queryTotal(map); } @Override public int save(MallPaymentOrderDataEntity mall2PaymentOrderData) { return mall2PaymentOrderDataDao.save(mall2PaymentOrderData); } @Override public int update(MallPaymentOrderDataEntity mall2PaymentOrderData) { return mall2PaymentOrderDataDao.update(mall2PaymentOrderData); } @Override public int delete(Integer payOrderId) { return mall2PaymentOrderDataDao.delete(payOrderId); } @Override public int deleteBatch(Integer[]payOrderIds) { return mall2PaymentOrderDataDao.deleteBatch(payOrderIds); } @Override public int saveUploadExcel(List list,String payFlag) { List insertList = new ArrayList<>(); SysUserEntity sysUserEntity = ShiroUtils.getUserEntity(); if (list!=null && list.size()>0) { for (MallPaymentOrderDataEntity paymentOrderDataEntity : list) { //判断wx要进行截取 if (Dict.payFlag.item_weixin.getItem().equals(payFlag)) { try { paymentOrderDataEntity.setTimeStr(paymentOrderDataEntity.getTimeStr().split("`")[1].toString()); paymentOrderDataEntity.setTransactionOrder(paymentOrderDataEntity.getTransactionOrder().split("`")[1].toString()); paymentOrderDataEntity.setOutTradeNo(paymentOrderDataEntity.getOutTradeNo().split("`")[1].toString()); paymentOrderDataEntity.setAmountOrder(paymentOrderDataEntity.getAmountOrder().split("`")[1].toString()); paymentOrderDataEntity.setMerchantName(paymentOrderDataEntity.getMerchantName().split("`")[1].toString()); paymentOrderDataEntity.setPayMoney(paymentOrderDataEntity.getPayMoney().split("`")[1].toString()); paymentOrderDataEntity.setRefundMoney(paymentOrderDataEntity.getRefundMoney().split("`")[1].toString()); paymentOrderDataEntity.setRefundId(paymentOrderDataEntity.getRefundId().split("`")[1].toString()); paymentOrderDataEntity.setCashCoupon(paymentOrderDataEntity.getCashCoupon().split("`")[1].toString()); paymentOrderDataEntity.setMerRefundNumber(paymentOrderDataEntity.getMerRefundNumber().split("`")[1].toString()); paymentOrderDataEntity.setRefundRechargpCoupon(paymentOrderDataEntity.getRefundRechargpCoupon().split("`")[1].toString()); paymentOrderDataEntity.setFeeCharge(paymentOrderDataEntity.getFeeCharge().split("`")[1].toString()); paymentOrderDataEntity.setRate(paymentOrderDataEntity.getRate().split("`")[1].toString()); paymentOrderDataEntity.setApplyRefundAmount(paymentOrderDataEntity.getApplyRefundAmount().split("`")[1].toString()); } catch (Exception e) { throw new RRException("导入的数据不是微信账单!"); } } String outTradeNo = paymentOrderDataEntity.getOutTradeNo(); String timeStr = paymentOrderDataEntity.getTimeStr(); Map map = new HashMap<>(); map.put("timeStr",timeStr); map.put("outTradeNo",outTradeNo); //根据时间和商户订单号来判断当前数据是否有重复录入 List timeAndTnoData = mall2PaymentOrderDataDao.queryListTimeAndTnoData(map); if (timeAndTnoData.size()>0) { throw new RRException("【"+outTradeNo+"】数据有重复,请检查导入数据的正确性!"); } paymentOrderDataEntity.setCreaterSn(sysUserEntity.getUsername()); paymentOrderDataEntity.setCreateTime(new Date()); paymentOrderDataEntity.setPayFlag(payFlag); insertList.add(paymentOrderDataEntity); } mall2PaymentOrderDataDao.saveBatch(insertList); }else { throw new RRException("导入数据信息为空,请看模版再重新导入!"); } return 1; } @Override public void saveUploadExcel(MultipartFile file, String payFlag) { List wxPaymentOrderDtoList = new ArrayList<>(); List aliPaymentOrderDtoList = new ArrayList<>(); try { if (file.isEmpty()) { throw new RRException("上传文件不能为空"); } if (Dict.payFlag.item_weixin.getItem().equals(payFlag)) { WxPaymentOrderDto wxPaymentOrderDto = new WxPaymentOrderDto(); Map beans = new HashMap(); beans.put("WxPaymentOrderDto", wxPaymentOrderDto); beans.put("WxPaymentOrderDtoList", wxPaymentOrderDtoList); excelUtil.readExcel(JxlsXmlTemplateName.WX_PAYMENT_ORDER_DTO_List, beans, file.getInputStream()); }else if (Dict.payFlag.item_alipay.getItem().equals(payFlag)){ AliPaymentOrderDto aliPaymentOrderDto = new AliPaymentOrderDto(); Map beans = new HashMap(); beans.put("AliPaymentOrderDto", aliPaymentOrderDto); beans.put("AliPaymentOrderDtoList", aliPaymentOrderDtoList); excelUtil.readExcel(JxlsXmlTemplateName.ALI_PAYMENT_ORDER_DTO_List, beans, file.getInputStream()); } }catch (Exception e) { e.printStackTrace(); throw new RRException("导入失败!"); } try { if (Dict.payFlag.item_weixin.getItem().equals(payFlag)) { saveWxData(wxPaymentOrderDtoList,payFlag); }else if (Dict.payFlag.item_alipay.getItem().equals(payFlag)){ saveAliData(aliPaymentOrderDtoList,payFlag); } } catch (Exception e) { e.printStackTrace(); throw new RRException(e.getMessage()); } } private void saveWxData(List list,String payFlag){ List insertList = new ArrayList<>(); SysUserEntity sysUserEntity = ShiroUtils.getUserEntity(); if (list!=null && list.size()>0) { for (WxPaymentOrderDto wxPaymentOrderDto : list) { try { wxPaymentOrderDto.setTimeStr(wxPaymentOrderDto.getTimeStr().split("`")[1].toString()); wxPaymentOrderDto.setTransactionOrder(wxPaymentOrderDto.getTransactionOrder().split("`")[1].toString()); wxPaymentOrderDto.setOutTradeNo(wxPaymentOrderDto.getOutTradeNo().split("`")[1].toString()); wxPaymentOrderDto.setAmountOrder(wxPaymentOrderDto.getAmountOrder().split("`")[1].toString()); wxPaymentOrderDto.setMerchantName(wxPaymentOrderDto.getMerchantName().split("`")[1].toString()); wxPaymentOrderDto.setPayMoney(wxPaymentOrderDto.getPayMoney().split("`")[1].toString()); wxPaymentOrderDto.setRefundMoney(wxPaymentOrderDto.getRefundMoney().split("`")[1].toString()); wxPaymentOrderDto.setRefundId(wxPaymentOrderDto.getRefundId().split("`")[1].toString()); wxPaymentOrderDto.setCashCoupon(wxPaymentOrderDto.getCashCoupon().split("`")[1].toString()); wxPaymentOrderDto.setMerRefundNumber(wxPaymentOrderDto.getMerRefundNumber().split("`")[1].toString()); wxPaymentOrderDto.setRefundRechargpCoupon(wxPaymentOrderDto.getRefundRechargpCoupon().split("`")[1].toString()); wxPaymentOrderDto.setFeeCharge(wxPaymentOrderDto.getFeeCharge().split("`")[1].toString()); wxPaymentOrderDto.setRate(wxPaymentOrderDto.getRate().split("`")[1].toString()); wxPaymentOrderDto.setApplyRefundAmount(wxPaymentOrderDto.getApplyRefundAmount().split("`")[1].toString()); } catch (Exception e) { throw new RRException("导入的数据不是微信账单!"); } String outTradeNo = wxPaymentOrderDto.getOutTradeNo(); String timeStr = wxPaymentOrderDto.getTimeStr(); Map map = new HashMap<>(); map.put("timeStr",timeStr); map.put("outTradeNo",outTradeNo); //根据时间和商户订单号来判断当前数据是否有重复录入 List timeAndTnoData = mall2PaymentOrderDataDao.queryListTimeAndTnoData(map); if (timeAndTnoData.size()>0) { throw new RRException("【"+outTradeNo+"】数据有重复,请检查导入数据的正确性!"); } MallPaymentOrderDataEntity mallPaymentOrderDataEntity = new MallPaymentOrderDataEntity(); BeanUtils.copyProperties(wxPaymentOrderDto,mallPaymentOrderDataEntity); mallPaymentOrderDataEntity.setCreaterSn(sysUserEntity.getUsername()); mallPaymentOrderDataEntity.setCreateTime(new Date()); mallPaymentOrderDataEntity.setPayFlag(payFlag); insertList.add(mallPaymentOrderDataEntity); } mall2PaymentOrderDataDao.saveBatch(insertList); }else { throw new RRException("导入数据信息为空,请看模版再重新导入!"); } } private void saveAliData(List list,String payFlag){ List insertList = new ArrayList<>(); SysUserEntity sysUserEntity = ShiroUtils.getUserEntity(); if (list!=null && list.size()>0) { for (AliPaymentOrderDto aliPaymentOrderDto : list) { String outTradeNo = aliPaymentOrderDto.getOutTradeNo(); String timeStr = aliPaymentOrderDto.getTimeStr(); Map map = new HashMap<>(); map.put("timeStr",timeStr); map.put("outTradeNo",outTradeNo); //根据时间和商户订单号来判断当前数据是否有重复录入 List timeAndTnoData = mall2PaymentOrderDataDao.queryListTimeAndTnoData(map); if (timeAndTnoData.size()>0) { throw new RRException("【"+outTradeNo+"】数据有重复,请检查导入数据的正确性!"); } MallPaymentOrderDataEntity mallPaymentOrderDataEntity = new MallPaymentOrderDataEntity(); BeanUtils.copyProperties(aliPaymentOrderDto,mallPaymentOrderDataEntity); mallPaymentOrderDataEntity.setCreaterSn(sysUserEntity.getUsername()); mallPaymentOrderDataEntity.setCreateTime(new Date()); mallPaymentOrderDataEntity.setPayFlag(payFlag); insertList.add(mallPaymentOrderDataEntity); } mall2PaymentOrderDataDao.saveBatch(insertList); }else { throw new RRException("导入数据信息为空,请看模版再重新导入!"); } } @Override public void exportDataFormatList(Map map, HttpServletResponse response) { try { List mallList = mall2PaymentOrderDataDao.queryListData(map); String payFlag = map.get("payFlag").toString(); String itemName = null; String[] header = null; LinkedHashMap headerMap = null; if (Dict.payFlag.item_weixin.getItem().equals(payFlag)) { //初始化 第一行数据信息 itemName = Dict.payFlag.item_weixin.getItemName(); header = new String[]{"Time Str","Transaction Order", "OutTrade No", "Pay Type", "Transaction Status", "Payment Type","Currency Type","Amount Order","Cash Coupon","Refund Id", "MerRefund Number", "Refund Money", "Refund RechargpCoupon", "Refund Type", "Refund Status", "Merchant Name","Attach", "Fee Charge", "Rate", "Pay Money", "ApplyRefund Amount","Rate Remark"}; //初始化 第二行数据信息 headerMap = initHeaderWxMap(); }else if (Dict.payFlag.item_alipay.getItem().equals(payFlag)){ //初始化 第一行数据信息 itemName = Dict.payFlag.item_alipay.getItemName(); header = new String[]{"Time Str","Transaction Order", "Serial Number", "OutTrade No", "Pay Type", "Pay Money","Refund Money","payment Type","Opposite Account","Other Name", "Bank Order ", "Merchant Name", "Remark", "BusinessBasic Order", "Business Order", "BusinessBilling Source","Business Description", "Payment Notes"}; //初始化 第二行数据信息 headerMap = initHeaderAliMap(); } // excel 表单名字 ExcelExport ee = new ExcelExport(itemName+"账单"); List> list = new LinkedList<>(); list.add(headerMap); for (MallPaymentOrderDataEntity orderDataEntity : mallList) { LinkedHashMap mapLinked = new LinkedHashMap<>(24); if (Dict.payFlag.item_weixin.getItem().equals(payFlag)) { //渲染表单数据 mapLinked = initHeaderWxMap(orderDataEntity); }else if (Dict.payFlag.item_alipay.getItem().equals(payFlag)){ //渲染表单数据 mapLinked = initHeaderAliMap(orderDataEntity); } list.add(mapLinked); } //渲染excel表单 ee.addSheetByMap(itemName+"账单", list, header); ee.export(response); } catch (Exception e) { e.printStackTrace(); throw new RRException(e.getMessage()); } } private LinkedHashMap initHeaderAliMap() { LinkedHashMap headerMap = new LinkedHashMap<>(); headerMap.put("timeStr","入账时间"); headerMap.put("transactionOrder","支付宝交易号"); headerMap.put("serialNumber","支付宝流水号"); headerMap.put("outTradeNo","商户订单号"); headerMap.put("payType","账务类型"); headerMap.put("payMoney","收入(+元)"); headerMap.put("refundMoney","支出(-元)"); headerMap.put("paymentType","支付渠道"); headerMap.put("oppositeAccount","对方账户"); headerMap.put("otherName","对方名称"); headerMap.put("bankOrder","银行订单号"); headerMap.put("merchantName","商品名称"); headerMap.put("remark","备注"); headerMap.put("businessBasicOrder","业务基础订单号"); headerMap.put("businessOrder","业务订单号"); headerMap.put("businessBillingSource","业务账单来源"); headerMap.put("businessDescription","业务描述"); headerMap.put("paymentNotes","付款备注"); return headerMap; } private LinkedHashMap initHeaderAliMap(MallPaymentOrderDataEntity orderDataEntity) { LinkedHashMap headerMap = new LinkedHashMap<>(); headerMap.put("timeStr",orderDataEntity.getTimeStr()); headerMap.put("transactionOrder",orderDataEntity.getTransactionOrder()); headerMap.put("serialNumber",orderDataEntity.getSerialNumber()); headerMap.put("outTradeNo",orderDataEntity.getOutTradeNo()); headerMap.put("payType",orderDataEntity.getPayType()); headerMap.put("payMoney",orderDataEntity.getPayMoney()); headerMap.put("refundMoney",orderDataEntity.getRefundMoney()); headerMap.put("paymentType",orderDataEntity.getPaymentType()); headerMap.put("oppositeAccount",orderDataEntity.getOppositeAccount()); headerMap.put("otherName",orderDataEntity.getOtherName()); headerMap.put("bankOrder",orderDataEntity.getBankOrder()); headerMap.put("merchantName",orderDataEntity.getMerchantName()); headerMap.put("remark",orderDataEntity.getRemark()); headerMap.put("businessBasicOrder", orderDataEntity.getBusinessBasicOrder()); headerMap.put("businessOrder",orderDataEntity.getBusinessOrder()); headerMap.put("businessBillingSource",orderDataEntity.getBusinessBillingSource()); headerMap.put("businessDescription",orderDataEntity.getBusinessDescription()); headerMap.put("paymentNotes",orderDataEntity.getPaymentNotes()); return headerMap; } private LinkedHashMap initHeaderWxMap() { LinkedHashMap headerMap = new LinkedHashMap<>(); headerMap.put("timeStr","交易时间"); headerMap.put("transactionOrder","微信订单号"); headerMap.put("outTradeNo","商户订单号"); headerMap.put("payType","交易类型"); headerMap.put("transactionStatus","交易状态"); headerMap.put("paymentType","付款银行"); headerMap.put("currencyType","货币种类"); headerMap.put("amountOrder","应结订单金额"); headerMap.put("cashCoupon","代金券金额"); headerMap.put("refundId","微信退款单号"); headerMap.put("merRefundNumber","商户退款单号"); headerMap.put("refundMoney","退款金额"); headerMap.put("refundRechargpCoupon","充值券退款金额"); headerMap.put("refundType","退款类型"); headerMap.put("refundStatus","退款状态"); headerMap.put("merchantName","商品名称"); headerMap.put("attach","商户数据包"); headerMap.put("feeCharge","手续费"); headerMap.put("rate","费率"); headerMap.put("payMoney","订单金额"); headerMap.put("applyRefundAmount","申请退款金额"); headerMap.put("rateRemark","费率备注"); return headerMap; } private LinkedHashMap initHeaderWxMap(MallPaymentOrderDataEntity orderDataEntity) { LinkedHashMap headerMap = new LinkedHashMap<>(); headerMap.put("timeStr",orderDataEntity.getTimeStr()); headerMap.put("transactionOrder",orderDataEntity.getTransactionOrder()); headerMap.put("outTradeNo",orderDataEntity.getOutTradeNo()); headerMap.put("payType",orderDataEntity.getPayType()); headerMap.put("transactionStatus",orderDataEntity.getTransactionStatus()); headerMap.put("paymentType",orderDataEntity.getPaymentType()); headerMap.put("currencyType",orderDataEntity.getCurrencyType()); headerMap.put("amountOrder",orderDataEntity.getAmountOrder()); headerMap.put("cashCoupon",orderDataEntity.getCashCoupon()); headerMap.put("refundId",orderDataEntity.getRefundId()); headerMap.put("merRefundNumber",orderDataEntity.getMerRefundNumber()); headerMap.put("refundMoney",orderDataEntity.getRefundMoney()); headerMap.put("refundRechargpCoupon",orderDataEntity.getRefundRechargpCoupon()); headerMap.put("refundType",orderDataEntity.getRefundType()); headerMap.put("refundStatus",orderDataEntity.getRefundStatus()); headerMap.put("merchantName",orderDataEntity.getMerchantName()); headerMap.put("attach",orderDataEntity.getAttach()); headerMap.put("feeCharge",orderDataEntity.getFeeCharge()); headerMap.put("rate",orderDataEntity.getRate()); headerMap.put("payMoney",orderDataEntity.getPayMoney()); headerMap.put("applyRefundAmount",orderDataEntity.getApplyRefundAmount()); headerMap.put("rateRemark",orderDataEntity.getRateRemark()); return headerMap; } }