Commit 511caf8c by 程裕兵

feat:statistic cashier record

parent 4e00c8c8
...@@ -8,6 +8,7 @@ import com.jiejing.fitness.finance.api.cashier.request.ListStudioCashierBySubOrd ...@@ -8,6 +8,7 @@ import com.jiejing.fitness.finance.api.cashier.request.ListStudioCashierBySubOrd
import com.jiejing.fitness.finance.api.cashier.request.PageStudioCashierRequest; import com.jiejing.fitness.finance.api.cashier.request.PageStudioCashierRequest;
import com.jiejing.fitness.finance.api.cashier.request.PageStudioSettleRequest; import com.jiejing.fitness.finance.api.cashier.request.PageStudioSettleRequest;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO; import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierStatisticVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO; import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.List; import java.util.List;
...@@ -27,6 +28,10 @@ public interface StudioCashierApi { ...@@ -27,6 +28,10 @@ public interface StudioCashierApi {
@PostMapping(value = "/private/studioCashier/page") @PostMapping(value = "/private/studioCashier/page")
JsonResult<PageVO<StudioCashierRecordVO>> page(PageStudioCashierRequest request); JsonResult<PageVO<StudioCashierRecordVO>> page(PageStudioCashierRequest request);
@ApiOperation(value = "统计收银流水金额", tags = {TAG})
@PostMapping(value = "/private/studioCashier/statistic")
JsonResult<StudioCashierStatisticVO> statistic(PageStudioCashierRequest request);
@ApiOperation(value = "查询收银流水详情", tags = {TAG}) @ApiOperation(value = "查询收银流水详情", tags = {TAG})
@PostMapping(value = "/private/studioCashier/getById") @PostMapping(value = "/private/studioCashier/getById")
JsonResult<StudioCashierRecordVO> getById(GetStudioCashierByIdRequest request); JsonResult<StudioCashierRecordVO> getById(GetStudioCashierByIdRequest request);
......
...@@ -8,6 +8,7 @@ import com.jiejing.fitness.finance.api.cashier.request.ListStudioCashierBySubOrd ...@@ -8,6 +8,7 @@ import com.jiejing.fitness.finance.api.cashier.request.ListStudioCashierBySubOrd
import com.jiejing.fitness.finance.api.cashier.request.PageStudioCashierRequest; import com.jiejing.fitness.finance.api.cashier.request.PageStudioCashierRequest;
import com.jiejing.fitness.finance.api.cashier.request.PageStudioSettleRequest; import com.jiejing.fitness.finance.api.cashier.request.PageStudioSettleRequest;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO; import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierStatisticVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO; import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO;
import feign.hystrix.FallbackFactory; import feign.hystrix.FallbackFactory;
import java.util.List; import java.util.List;
...@@ -31,6 +32,11 @@ public class StudioCashierApiFallback implements FallbackFactory<StudioCashierAp ...@@ -31,6 +32,11 @@ public class StudioCashierApiFallback implements FallbackFactory<StudioCashierAp
} }
@Override @Override
public JsonResult<StudioCashierStatisticVO> statistic(PageStudioCashierRequest request) {
return JsonResult.rpcError();
}
@Override
public JsonResult<StudioCashierRecordVO> getById(GetStudioCashierByIdRequest request) { public JsonResult<StudioCashierRecordVO> getById(GetStudioCashierByIdRequest request) {
return JsonResult.rpcError(); return JsonResult.rpcError();
} }
......
package com.jiejing.fitness.finance.api.cashier.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author chengyubing
* @since 2024/4/8 17:14
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "场馆收银流水统计VO")
public class StudioCashierStatisticVO {
@ApiModelProperty("总交易金额(元)")
private BigDecimal totalTransAmount;
@ApiModelProperty("总实际金额(元)")
private BigDecimal totalActualAmount;
@ApiModelProperty("总条数")
private Long total;
}
...@@ -10,6 +10,7 @@ import com.jiejing.fitness.finance.api.cashier.request.ListStudioCashierBySubOrd ...@@ -10,6 +10,7 @@ import com.jiejing.fitness.finance.api.cashier.request.ListStudioCashierBySubOrd
import com.jiejing.fitness.finance.api.cashier.request.PageStudioCashierRequest; import com.jiejing.fitness.finance.api.cashier.request.PageStudioCashierRequest;
import com.jiejing.fitness.finance.api.cashier.request.PageStudioSettleRequest; import com.jiejing.fitness.finance.api.cashier.request.PageStudioSettleRequest;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO; import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierStatisticVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO; import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO;
import com.jiejing.fitness.finance.service.cashier.StudioCashierService; import com.jiejing.fitness.finance.service.cashier.StudioCashierService;
import com.jiejing.fitness.finance.service.cashier.params.PageStudioCashierParams; import com.jiejing.fitness.finance.service.cashier.params.PageStudioCashierParams;
...@@ -41,6 +42,14 @@ public class StudioCashierController implements StudioCashierApi { ...@@ -41,6 +42,14 @@ public class StudioCashierController implements StudioCashierApi {
return JsonResult.success(studioCashierService.page(params)); return JsonResult.success(studioCashierService.page(params));
} }
@ApiOperation(value = "统计收银流水金额", tags = {TAG})
@PostMapping(value = "/private/studioCashier/statistic")
@Override
public JsonResult<StudioCashierStatisticVO> statistic(@Valid @RequestBody PageStudioCashierRequest request) {
PageStudioCashierParams params = BeanUtil.map(request, PageStudioCashierParams.class);
return JsonResult.success(studioCashierService.statistic(params));
}
@ApiOperation(value = "查询收银流水详情", tags = {TAG}) @ApiOperation(value = "查询收银流水详情", tags = {TAG})
@PostMapping(value = "/private/studioCashier/getById") @PostMapping(value = "/private/studioCashier/getById")
@Override @Override
......
...@@ -14,7 +14,10 @@ ...@@ -14,7 +14,10 @@
package com.jiejing.fitness.finance.repository.mapper; package com.jiejing.fitness.finance.repository.mapper;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierStatisticVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO;
import com.jiejing.fitness.finance.repository.entity.StudioCashierRecord; import com.jiejing.fitness.finance.repository.entity.StudioCashierRecord;
import com.jiejing.fitness.finance.repository.query.PageBrandCashierRecordQuery;
import com.jiejing.mbp.inject.XBaseMapper; import com.jiejing.mbp.inject.XBaseMapper;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
...@@ -39,4 +42,6 @@ public interface StudioCashierRecordMapper extends XBaseMapper<StudioCashierReco ...@@ -39,4 +42,6 @@ public interface StudioCashierRecordMapper extends XBaseMapper<StudioCashierReco
@Param("startTime") Date startTime, @Param("startTime") Date startTime,
@Param("endTime") Date endTime); @Param("endTime") Date endTime);
StudioCashierStatisticVO statistic(@Param("query") PageBrandCashierRecordQuery query);
} }
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
</select> </select>
<select id="sumMerchantPaySuccessGroupByStudioId" <select id="sumMerchantPaySuccessGroupByStudioId"
resultType="com.jiejing.fitness.finance.repository.entity.StudioCashierRecord"> resultType="com.jiejing.fitness.finance.repository.entity.StudioCashierRecord">
select studio_id, sum(trans_amount) as trans_amount select studio_id, sum(trans_amount) as trans_amount
from studio_cashier_record from studio_cashier_record
where merchant_id = #{merchantId} where merchant_id = #{merchantId}
...@@ -47,4 +47,58 @@ ...@@ -47,4 +47,58 @@
group by studio_id group by studio_id
</select> </select>
<select id="statistic" resultType="com.jiejing.fitness.finance.api.cashier.vo.StudioCashierStatisticVO">
select sum(trans_amount) as total_trans_amount, sum(actual_amount) as total_actual_amount, count(id)
astotal
from studio_cashier_record
<where>
<if test="query.studioId != null">
and studio_id = #{query.studioId}
</if>
<if test="query.buyerName != null and query.buyerName != ''">
and buyer_name like concat('%', #{query.buyerName}, '%')
</if>
<if test="query.orderNo != null and query.orderNo != ''">
and order_no = #{query.orderNo}
</if>
<if test="query.transNo != null and query.transNo != ''">
and trans_no = #{query.transNo}
</if>
<if test="query.thirdTransNo != null and query.thirdTransNo != ''">
and third_trans_no = #{query.thirdTransNo}
</if>
<if test="query.transState != null and query.transState != ''">
and trans_state = #{query.transState}
</if>
<if test="query.transState == null or query.transState == ''">
and trans_state in ('PAY_SUCCESS', 'PAY_IN')
</if>
<if test="query.orderType != null and query.orderType != ''">
and order_type = #{query.orderType}
</if>
<if test="query.transType != null and query.transType != ''">
and trans_type = #{query.transType}
</if>
<if test="query.subChannel != null and query.subChannel != ''">
and sub_channel = #{query.subChannel}
</if>
<if test="query.studioName != null and query.studioName != ''">
and studio_name like concat('%', #{query.studioName}, '%')
</if>
<if test="query.createStartTime != null">
and studio_id >= #{query.createStartTime}
</if>
<if test="query.createEndTime != null">
and studio_id &lt;= #{query.createEndTime}
</if>
<if test="query.successStartTime != null">
and studio_id >= #{query.successStartTime}
</if>
<if test="query.successEndTime != null">
and studio_id &lt;= #{query.successEndTime}
</if>
</where>
</select>
</mapper> </mapper>
...@@ -17,6 +17,8 @@ package com.jiejing.fitness.finance.repository.service; ...@@ -17,6 +17,8 @@ package com.jiejing.fitness.finance.repository.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jiejing.common.utils.collection.CollectionUtil; import com.jiejing.common.utils.collection.CollectionUtil;
import com.jiejing.common.utils.text.StringUtil; import com.jiejing.common.utils.text.StringUtil;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierStatisticVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO;
import com.jiejing.fitness.finance.repository.entity.StudioCashierRecord; import com.jiejing.fitness.finance.repository.entity.StudioCashierRecord;
import com.jiejing.fitness.finance.repository.mapper.StudioCashierRecordMapper; import com.jiejing.fitness.finance.repository.mapper.StudioCashierRecordMapper;
import com.jiejing.fitness.finance.repository.query.PageBrandCashierRecordQuery; import com.jiejing.fitness.finance.repository.query.PageBrandCashierRecordQuery;
...@@ -128,4 +130,8 @@ public class StudioCashierRecordRpService extends ...@@ -128,4 +130,8 @@ public class StudioCashierRecordRpService extends
wrapper.lt(StudioCashierRecord.SUCCESS_TIME, endTime); wrapper.lt(StudioCashierRecord.SUCCESS_TIME, endTime);
return this.findByWrapperPage(wrapper, current, size); return this.findByWrapperPage(wrapper, current, size);
} }
public StudioCashierStatisticVO statistic(PageBrandCashierRecordQuery query) {
return this.baseMapper.statistic(query);
}
} }
...@@ -2,6 +2,7 @@ package com.jiejing.fitness.finance.service.cashier; ...@@ -2,6 +2,7 @@ package com.jiejing.fitness.finance.service.cashier;
import com.jiejing.common.model.PageVO; import com.jiejing.common.model.PageVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO; import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierStatisticVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO; import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO;
import com.jiejing.fitness.finance.service.cashier.params.PageStudioCashierParams; import com.jiejing.fitness.finance.service.cashier.params.PageStudioCashierParams;
import com.jiejing.fitness.finance.service.cashier.params.PageStudioSettleParams; import com.jiejing.fitness.finance.service.cashier.params.PageStudioSettleParams;
...@@ -53,5 +54,12 @@ public interface StudioCashierService { ...@@ -53,5 +54,12 @@ public interface StudioCashierService {
*/ */
PageVO<StudioSettleVO> page(PageStudioSettleParams params); PageVO<StudioSettleVO> page(PageStudioSettleParams params);
/**
* 统计
*
* @param params 参数
* @return 结果
*/
StudioCashierStatisticVO statistic(PageStudioCashierParams params);
} }
...@@ -3,6 +3,7 @@ package com.jiejing.fitness.finance.service.cashier.impl; ...@@ -3,6 +3,7 @@ package com.jiejing.fitness.finance.service.cashier.impl;
import com.jiejing.common.model.PageVO; import com.jiejing.common.model.PageVO;
import com.jiejing.common.utils.convert.BeanUtil; import com.jiejing.common.utils.convert.BeanUtil;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO; import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierStatisticVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO; import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO;
import com.jiejing.fitness.finance.repository.entity.StudioCashierRecord; import com.jiejing.fitness.finance.repository.entity.StudioCashierRecord;
import com.jiejing.fitness.finance.repository.entity.StudioSettleRecord; import com.jiejing.fitness.finance.repository.entity.StudioSettleRecord;
...@@ -68,4 +69,11 @@ public class StudioCashierServiceImpl implements StudioCashierService { ...@@ -68,4 +69,11 @@ public class StudioCashierServiceImpl implements StudioCashierService {
Page<StudioSettleRecord> page = studioSettleRecordRpService.page(query); Page<StudioSettleRecord> page = studioSettleRecordRpService.page(query);
return CashierConvert.convertSettlePageVO(page); return CashierConvert.convertSettlePageVO(page);
} }
@Override
public StudioCashierStatisticVO statistic(PageStudioCashierParams params) {
PageBrandCashierRecordQuery query = BeanUtil.map(params, PageBrandCashierRecordQuery.class);
return studioCashierRecordRpService.statistic(query);
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment