package com.zteits.business.biz.impl; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import com.clouds.common.cache.sys.SysCodeValueCacheUtil; import com.clouds.common.constants.CodeValKindEnum; import com.clouds.common.utils.AmountUtils; import com.clouds.common.utils.DateUtil; import com.github.pagehelper.PageInfo; import com.xiaoleilu.hutool.util.CollectionUtil; import com.zteits.business.dao.TdCBusinessAcctDao; import com.zteits.business.domain.TdCBusinessAcct; import com.zteits.clouds.api.apibase.bean.BizResult; import com.zteits.clouds.api.apibase.bean.PageBean; import com.zteits.clouds.api.dto.business.dto.BusinessAccountDetailCountDTO; import com.zteits.clouds.api.dto.business.dto.BusinessAccountDetailSummaryDTO; import com.zteits.clouds.api.dto.business.dto.BusinessAccountInOutDetailForPageDTO; import com.zteits.clouds.api.dto.business.dto.TdCBusinessAcctDTO; import com.zteits.clouds.api.dto.business.param.BusinessAccountInOutDetailRequest; import com.zteits.clouds.api.dto.business.param.TdCBusinessAcctRequest; import com.zteits.clouds.api.dto.clouds.param.BatchDeleteByPrimaryKeyRequest; import com.zteits.clouds.api.service.business.TdCBusinessAcctService; import com.zteits.sys.pagepaper.PageBeanUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; import java.util.Map; @Component public class TdCBusinessAcctServiceImpl implements TdCBusinessAcctService { @Autowired private TdCBusinessAcctDao tdCBusinessAcctDao; @Override public BizResult> queryTdCBusinessAcct(TdCBusinessAcctRequest request) { List tdCBusinessAcctDTOS = new ArrayList<>(); List tdCBusinessAccts = tdCBusinessAcctDao.queryTdCBusinessAcct(request); if (CollectionUtils.isEmpty(tdCBusinessAccts)) { return new BizResult<>(tdCBusinessAcctDTOS); } for (TdCBusinessAcct source : tdCBusinessAccts) { TdCBusinessAcctDTO dto = new TdCBusinessAcctDTO(); BeanUtils.copyProperties(source, dto); tdCBusinessAcctDTOS.add(dto); } return new BizResult<>(tdCBusinessAcctDTOS); } @Override public BizResult> queryTdCBusinessAcctForPage(TdCBusinessAcctRequest request) { PageBean pageBean = new PageBean<>(); PageInfo pageInfo = tdCBusinessAcctDao.queryTdCBusinessAcctForPage(request); if (pageInfo != null && pageInfo.getList() != null && pageInfo.getList().size() > 0) { PageBeanUtil.copyProperties(pageInfo, pageBean, TdCBusinessAcctDTO.class); } return new BizResult<>(pageBean); } @Override public BizResult batchDeleteTdCBusinessAcctByPrimaryKey(BatchDeleteByPrimaryKeyRequest request) { int delenum = tdCBusinessAcctDao.batchDeleteTdCBusinessAcctByPrimaryKey(request.getIds(), request.getOpId(), request.getsOpName()); return new BizResult<>(delenum > 0); } @Override public BizResult saveTdCBusinessAcct(TdCBusinessAcctRequest request) { TdCBusinessAcct tdCBusinessAcct = new TdCBusinessAcct(); BeanUtils.copyProperties(request, tdCBusinessAcct); int saveNum = tdCBusinessAcctDao.saveTdCBusinessAcct(tdCBusinessAcct); return new BizResult<>(saveNum > 0); } @Override public BizResult updateByPrimaryKeySelective(TdCBusinessAcctRequest request) { TdCBusinessAcct tdCBusinessAcct = new TdCBusinessAcct(); BeanUtils.copyProperties(request, tdCBusinessAcct); int upNum = tdCBusinessAcctDao.updateByPrimaryKeySelective(tdCBusinessAcct); return new BizResult<>(upNum > 0); } /** * 分页查询商户账户余额充值与支出明细 */ @Override public BizResult> queryAccountInOutDetailsForPage(BusinessAccountInOutDetailRequest requestQ) { PageInfo pageInfo = tdCBusinessAcctDao.queryAccountInOutDetailsForPage(requestQ); PageBean pageBean = new PageBean<>(); PageBeanUtil.copyProperties(pageInfo, pageBean, BusinessAccountInOutDetailForPageDTO.class); if (CollectionUtil.isNotEmpty(pageBean.getDataList())) { Map rechargeKindMap = SysCodeValueCacheUtil.queryCodeValueAndNames(CodeValKindEnum.BUS_ACCOUNT_RECHARGE_KIND); Map payTypeMap = SysCodeValueCacheUtil.queryCodeValueAndNames(CodeValKindEnum.BUS_ACCOUNT_PAY_TYPE); for (BusinessAccountInOutDetailForPageDTO dto : pageBean.getDataList()) { if ("1".equals(dto.getKind())) { dto.setKindName("充值"); // 充值 String typeName = rechargeKindMap.get(dto.getType()); dto.setTypeName(typeName + "充值"); // 0:待审核 2:通过 3 :驳回 String payState = dto.getPayState(); dto.setPayStateDesc("0".equals(payState) ? "待审核" : "2".equals(payState) ? "充值成功" : "驳回"); dto.setChangeFeeDetail("+" + AmountUtils.changeF2Y(dto.getChangeFee() + "")); dto.setOpTime(DateUtil.getDateString(dto.getCreateDate(), DateUtil.DATETIME_FORMAT) + ""); } else { // 2支出 dto.setKindName("支出"); // 充值 String typeName = payTypeMap.get(dto.getType()); dto.setTypeName(typeName); dto.setPayStateDesc("支付成功"); dto.setChangeFeeDetail("-" + AmountUtils.changeF2Y(dto.getChangeFee() + "")); dto.setOpTime(DateUtil.getDateString(dto.getCreateDate(), DateUtil.DATETIME_FORMAT) + ""); } } } return new BizResult<>(pageBean); } /** * 余额明细总览 * */ @Override public BizResult detailSummary(BusinessAccountInOutDetailRequest requestQ) { BusinessAccountDetailSummaryDTO summaryDTO = new BusinessAccountDetailSummaryDTO(); if (StringUtils.isBlank(requestQ.getKind())) { // 查询全部的时候,分开查询两次 requestQ.setKind("1"); summaryDTO.setRechargeSummary(getDetailSummaryStr(requestQ)); requestQ.setKind("2"); summaryDTO.setPaySummary(getDetailSummaryStr(requestQ)); } else { String resStr = getDetailSummaryStr(requestQ); // 1 充值, 2 支出 if ("1".equals(requestQ.getKind())) { summaryDTO.setRechargeSummary(resStr); } else { summaryDTO.setPaySummary(resStr); } } return new BizResult<>(summaryDTO); } private String getDetailSummaryStr(BusinessAccountInOutDetailRequest requestQ) { List detailCountDTOList = tdCBusinessAcctDao.detailSummary(requestQ); if ("1".equals(requestQ.getKind())) { long totalFee = 0L; long totalCount = 0L; for (BusinessAccountDetailCountDTO dto : detailCountDTOList) { totalCount += dto.getChangeCount(); totalFee += dto.getTotalFee(); } // 共18笔充值,充值总金额100.00元 return "共" + totalCount + "笔充值,充值总金额" + AmountUtils.changeF2Y(totalFee) + "元"; } else { long totalFee = 0L; long totalCount = 0L; long parkPayFee = 0L; long couponBuyFee = 0L; for (BusinessAccountDetailCountDTO dto : detailCountDTOList) { totalCount += dto.getChangeCount(); totalFee += dto.getTotalFee(); if ("1".equals(dto.getType())) { // 购买卡券 couponBuyFee = dto.getTotalFee(); } else { parkPayFee = dto.getTotalFee(); } } // 共18笔支出,支出总金额100.00元,停车费50.00元,卡券50.00元 String summaryStr = "共" + totalCount + "笔支出,支出总金额" + AmountUtils.changeF2Y(totalFee) + "元,"; String parkFeeStr = "停车费" + AmountUtils.changeF2Y(parkPayFee) + "元,"; String couponBuyFeeStr = "卡券" + AmountUtils.changeF2Y(couponBuyFee) + "元,"; if(parkPayFee > 0){ summaryStr += parkFeeStr; } if(couponBuyFee > 0){ summaryStr += couponBuyFeeStr; } return summaryStr.substring(0, summaryStr.length() -1); } } }