账单-金币统计-统计-使用objTypeList代替currency,复用索引
This commit is contained in:
@@ -64,8 +64,13 @@ public interface BillRecordMapper extends BaseMapper<BillRecord> {
|
||||
@Param("endTime") Date endTime,
|
||||
@Param("zoneIdHour") long zoneIdHour);
|
||||
|
||||
List<DiamondBillRecordStatVo> statDiamondBillRecord(@Param("partitionIds") List<Integer> partitionIds,
|
||||
/*List<DiamondBillRecordStatVo> statDiamondBillRecord(@Param("partitionIds") List<Integer> partitionIds,
|
||||
@Param("startTime") Date startTime,
|
||||
@Param("endTime") Date endTime);
|
||||
@Param("endTime") Date endTime);*/
|
||||
|
||||
List<DiamondBillRecordStatVo> statDiamondBillRecord(@Param("partitionId") Integer partitionId,
|
||||
@Param("objTypeList") List<Integer> objTypeList,
|
||||
@Param("startTime") Date startTime,
|
||||
@Param("endTime") Date endTime);
|
||||
|
||||
}
|
@@ -119,7 +119,7 @@
|
||||
group by `date`
|
||||
</select>
|
||||
|
||||
<select id="statDiamondBillRecord" resultType="com.accompany.sharding.vo.DiamondBillRecordStatVo">
|
||||
<!--<select id="statDiamondBillRecord" resultType="com.accompany.sharding.vo.DiamondBillRecordStatVo">
|
||||
select br.partition_id,
|
||||
br.obj_type,
|
||||
sum(br.amount) `total_diamond`
|
||||
@@ -128,6 +128,17 @@
|
||||
and br.create_time >= #{startTime} and br.create_time <= #{endTime}
|
||||
and br.currency = 1
|
||||
group by br.partition_id, br.obj_type
|
||||
</select>-->
|
||||
|
||||
<select id="statDiamondBillRecord" resultType="com.accompany.sharding.vo.DiamondBillRecordStatVo">
|
||||
select br.partition_id,
|
||||
br.obj_type,
|
||||
sum(br.amount) `total_diamond`
|
||||
from bill_record br
|
||||
where br.partition_id = #{partitionId}
|
||||
and br.obj_type in <foreach item="id" index="index" collection="objTypeList" open="(" close=")" separator=",">#{id}</foreach>
|
||||
and br.create_time >= #{startTime} and br.create_time <= #{endTime}
|
||||
group by br.partition_id, br.obj_type
|
||||
</select>
|
||||
|
||||
</mapper>
|
@@ -6,6 +6,7 @@ import com.accompany.business.mybatismapper.DiamondStatMapper;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.accompany.core.enumeration.BillDomainTypeEnum;
|
||||
import com.accompany.core.enumeration.BillObjTypeEnum;
|
||||
import com.accompany.core.enumeration.CurrencyEnum;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
import com.accompany.sharding.mapper.BillRecordMapper;
|
||||
import com.accompany.sharding.vo.DiamondBillRecordStatVo;
|
||||
@@ -48,8 +49,10 @@ public class DiamondStatService {
|
||||
ZonedDateTime endOfDay = hourAgo.withHour(23).withMinute(59).withSecond(59).withNano(999999999);
|
||||
Date systemEndTime = DateTimeUtil.converLocalDateTimeToDate(endOfDay.withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime());
|
||||
|
||||
List<Integer> diamondObjTypeList = Arrays.stream(BillObjTypeEnum.values()).filter(billObjTypeEnum -> CurrencyEnum.DIAMOND.equals(billObjTypeEnum.getCurrency()))
|
||||
.mapToInt(BillObjTypeEnum::getValue).sorted().boxed().toList();
|
||||
List<DiamondBillRecordStatVo> diamondBillRecordStatVoList = partitionIds.stream().flatMap(partitionId ->
|
||||
billRecordMapper.statDiamondBillRecord(List.of(partitionId), systemStartTime, systemEndTime).stream())
|
||||
billRecordMapper.statDiamondBillRecord(partitionId, diamondObjTypeList, systemStartTime, systemEndTime).stream())
|
||||
.toList();
|
||||
Map<Integer, List<DiamondBillRecordStatVo>> diamondBillRecordStatVoMap = !CollectionUtils.isEmpty(diamondBillRecordStatVoList)?
|
||||
diamondBillRecordStatVoList.stream().collect(Collectors.groupingBy(DiamondBillRecordStatVo::getPartitionId)):
|
||||
|
Reference in New Issue
Block a user