diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/mapper/BillRecordMapper.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/mapper/BillRecordMapper.java index 7b89762a1..6db10dd3a 100644 --- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/mapper/BillRecordMapper.java +++ b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/mapper/BillRecordMapper.java @@ -64,8 +64,13 @@ public interface BillRecordMapper extends BaseMapper { @Param("endTime") Date endTime, @Param("zoneIdHour") long zoneIdHour); - List statDiamondBillRecord(@Param("partitionIds") List partitionIds, + /*List statDiamondBillRecord(@Param("partitionIds") List partitionIds, @Param("startTime") Date startTime, - @Param("endTime") Date endTime); + @Param("endTime") Date endTime);*/ + + List statDiamondBillRecord(@Param("partitionId") Integer partitionId, + @Param("objTypeList") List objTypeList, + @Param("startTime") Date startTime, + @Param("endTime") Date endTime); } \ No newline at end of file diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/resources/sharding/sqlmappers/BillRecordMapper.xml b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/resources/sharding/sqlmappers/BillRecordMapper.xml index d281247f7..6e62448dd 100644 --- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/resources/sharding/sqlmappers/BillRecordMapper.xml +++ b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/resources/sharding/sqlmappers/BillRecordMapper.xml @@ -119,7 +119,7 @@ group by `date` - + 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 #{id} + and br.create_time >= #{startTime} and br.create_time <= #{endTime} + group by br.partition_id, br.obj_type \ No newline at end of file diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/DiamondStatService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/DiamondStatService.java index 362f2d964..50f963068 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/DiamondStatService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/DiamondStatService.java @@ -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 diamondObjTypeList = Arrays.stream(BillObjTypeEnum.values()).filter(billObjTypeEnum -> CurrencyEnum.DIAMOND.equals(billObjTypeEnum.getCurrency())) + .mapToInt(BillObjTypeEnum::getValue).sorted().boxed().toList(); List diamondBillRecordStatVoList = partitionIds.stream().flatMap(partitionId -> - billRecordMapper.statDiamondBillRecord(List.of(partitionId), systemStartTime, systemEndTime).stream()) + billRecordMapper.statDiamondBillRecord(partitionId, diamondObjTypeList, systemStartTime, systemEndTime).stream()) .toList(); Map> diamondBillRecordStatVoMap = !CollectionUtils.isEmpty(diamondBillRecordStatVoList)? diamondBillRecordStatVoList.stream().collect(Collectors.groupingBy(DiamondBillRecordStatVo::getPartitionId)):