|
@@ -1,16 +1,20 @@
|
|
|
package org.dromara.backstage.consumption.service.impl;
|
|
package org.dromara.backstage.consumption.service.impl;
|
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
+import io.seata.common.util.CollectionUtils;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.dromara.backstage.consumption.domain.XfConsumeDetail;
|
|
import org.dromara.backstage.consumption.domain.XfConsumeDetail;
|
|
|
import org.dromara.backstage.consumption.domain.bo.XfConsumeDetailBo;
|
|
import org.dromara.backstage.consumption.domain.bo.XfConsumeDetailBo;
|
|
|
import org.dromara.backstage.consumption.domain.vo.XfConsumeAnalyzeVo;
|
|
import org.dromara.backstage.consumption.domain.vo.XfConsumeAnalyzeVo;
|
|
|
|
|
+import org.dromara.backstage.consumption.domain.vo.XfConsumeDetailCKBKVo;
|
|
|
import org.dromara.backstage.consumption.domain.vo.XfConsumeDetailVo;
|
|
import org.dromara.backstage.consumption.domain.vo.XfConsumeDetailVo;
|
|
|
import org.dromara.backstage.consumption.mapper.XfConsumeDetailMapper;
|
|
import org.dromara.backstage.consumption.mapper.XfConsumeDetailMapper;
|
|
|
import org.dromara.backstage.consumption.service.IXfConsumeDetailService;
|
|
import org.dromara.backstage.consumption.service.IXfConsumeDetailService;
|
|
|
|
|
+import org.dromara.common.core.enums.ConsumeRecordTypeEnum;
|
|
|
import org.dromara.common.core.utils.DateUtils;
|
|
import org.dromara.common.core.utils.DateUtils;
|
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
@@ -20,9 +24,8 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import java.time.YearMonth;
|
|
import java.time.YearMonth;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
|
-import java.util.Collection;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
-import java.util.Map;
|
|
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 消费明细Service业务层处理
|
|
* 消费明细Service业务层处理
|
|
@@ -68,6 +71,51 @@ public class XfConsumeDetailServiceImpl implements IXfConsumeDetailService {
|
|
|
return TableDataInfo.build(result);
|
|
return TableDataInfo.build(result);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @param bo
|
|
|
|
|
+ * @param pageQuery
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public TableDataInfo<XfConsumeDetailCKBKVo> queryPageCKBKList(XfConsumeDetailBo bo, PageQuery pageQuery) {
|
|
|
|
|
+ LambdaQueryWrapper<XfConsumeDetail> lqw = buildQueryWrapper(bo);
|
|
|
|
|
+ Map<String, Object> params = bo.getParams();
|
|
|
|
|
+ Object beginDate = params.get("beginConsumeDate");
|
|
|
|
|
+ Object endDate = params.get("endConsumeDate");
|
|
|
|
|
+ if(beginDate != null && endDate != null){
|
|
|
|
|
+ lqw.between(XfConsumeDetail::getConsumeDate, beginDate + " 00:00:00", endDate + " 23:59:59");
|
|
|
|
|
+ }
|
|
|
|
|
+ //lqw.orderByDesc(XfConsumeDetail::getConsumeDate);
|
|
|
|
|
+ lqw.in(XfConsumeDetail::getStatusFlag,
|
|
|
|
|
+ Arrays.asList(ConsumeRecordTypeEnum.XFJXF_1.code(), ConsumeRecordTypeEnum.XFJXF_4.code(), ConsumeRecordTypeEnum.BKXF.code()));
|
|
|
|
|
+ Page<XfConsumeDetailVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
|
|
|
+ List<XfConsumeDetailCKBKVo> records = BeanUtil.copyToList(result.getRecords(), XfConsumeDetailCKBKVo.class);
|
|
|
|
|
+ Page<XfConsumeDetailCKBKVo> rs = new Page<>(result.getCurrent(), result.getSize(), result.getTotal());
|
|
|
|
|
+ rs.setRecords(records);
|
|
|
|
|
+
|
|
|
|
|
+ //查询各消费记录的 错扣补款记录
|
|
|
|
|
+ if(CollectionUtils.isNotEmpty(records)){
|
|
|
|
|
+ List<String> consumeIds = records.stream().map(XfConsumeDetailCKBKVo::getConsumeId).toList();
|
|
|
|
|
+ LambdaQueryWrapper<XfConsumeDetail> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ wrapper.in(XfConsumeDetail::getDetailId, consumeIds);
|
|
|
|
|
+ wrapper.eq(XfConsumeDetail::getStatusFlag, ConsumeRecordTypeEnum.CKBK.code());
|
|
|
|
|
+ List<XfConsumeDetailVo> vos = baseMapper.selectVoList(wrapper);
|
|
|
|
|
+ if(CollectionUtils.isNotEmpty(vos)){
|
|
|
|
|
+ Map<String, List<XfConsumeDetailVo>> map = vos.stream().collect(Collectors.groupingBy(XfConsumeDetailVo::getDetailId));
|
|
|
|
|
+ records.forEach(item -> {
|
|
|
|
|
+ List<XfConsumeDetailVo> list = map.get(item.getConsumeId());
|
|
|
|
|
+ if(CollectionUtils.isNotEmpty(list)){
|
|
|
|
|
+ item.setDetails(list);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ item.setDetails(new ArrayList<>());
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return TableDataInfo.build(rs);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 查询符合条件的消费明细列表
|
|
* 查询符合条件的消费明细列表
|
|
|
*
|
|
*
|