导出修改

This commit is contained in:
qjq
2024-11-07 14:52:50 +08:00
parent 4e56b926d6
commit 01cd632939
15 changed files with 189 additions and 14 deletions

View File

@ -83,4 +83,8 @@ public class OrderSpaceCapsulePageReqVO extends PageParam {
@Schema(description = "机器编号")
private String machineNum;
@Schema(description = "用户手机号")
private String phone;
@Schema(description = "太空舱名称")
private String spaceName;
}

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo;
import cn.iocoder.yudao.module.member.convert.excel.OrderSpaceCapsuleStatusConverter;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -25,18 +26,16 @@ public class OrderSpaceCapsuleRespVO {
private BigDecimal money;
@Schema(description = "太空船id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22979")
@ExcelProperty("太空船id")
private Long spaceCapsuleId;
@Schema(description = "门店id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5246")
@ExcelProperty("门店id")
private Long carteenId;
@Schema(description = "门店名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "5246")
@ExcelProperty("门店名称")
private String carteenName;
@Schema(description = "0未使用1使用中2已完成3已退款", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("0未使用1使用中2已完成3已退款")
@ExcelProperty(value = "状态",converter = OrderSpaceCapsuleStatusConverter.class )
private Integer status;
@Schema(description = "套餐金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "32723")
@ -64,19 +63,15 @@ public class OrderSpaceCapsuleRespVO {
private LocalDateTime createTime;
@Schema(description = "产生订单的用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30766")
@ExcelProperty("产生订单的用户id")
private Long userId;
@Schema(description = "消费前的余额", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("消费前的余额")
private BigDecimal startMoney;
@Schema(description = "消费后的余额", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("消费后的余额")
private BigDecimal endMoney;
@Schema(description = "支付方式", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("支付方式")
private String payMethods;
/**
* 套餐数量
@ -96,7 +91,12 @@ public class OrderSpaceCapsuleRespVO {
private String qrCode;
@Schema(description = "支付编号")
private Integer payNum;
@Schema(description = "机器编号")
private String machineNum;
@Schema(description = "用户手机号")
@ExcelProperty("用户手机号")
private String phone;
@Schema(description = "太空舱名称")
@ExcelProperty("太空舱名称")
private String spaceName;
}

View File

@ -78,4 +78,8 @@ public class OrderSpaceCapsuleSaveReqVO {
@Schema(description = "机器编号")
private String machineNum;
@Schema(description = "用户手机号")
private String phone;
@Schema(description = "太空舱名称")
private String spaceName;
}

View File

@ -48,4 +48,8 @@ public class OrderSpaceCapsuleStatisticsVo {
@Schema(description = "均单价")
private BigDecimal compAvgOrderMoney;
List<OrderSpaceCapsuleStatisticsComVo> lists;
@Schema(description = "用户手机号")
private String phone;
@Schema(description = "太空舱名称")
private String spaceName;
}

View File

@ -1,8 +1,6 @@
package cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderRespVO;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderSaveReqVO;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderDO;
import cn.iocoder.yudao.module.member.service.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderService;
import org.springframework.web.bind.annotation.*;
@ -39,7 +37,11 @@ public class StatisticsSpaceCapsuleOrderController {
@Resource
private StatisticsSpaceCapsuleOrderService statisticsSpaceCapsuleOrderService;
@GetMapping("/space/money")
@Operation(summary = "根据太空舱分组营业额")
public CommonResult<List<SpaceCapsuleOrderNameRespVO>> getStatisticsSpaceCapsuleOrder(SpaceCapsuleOrderReqVO vo) {
return success(statisticsSpaceCapsuleOrderService.getStatisticsSpaceCapsuleOrder(vo));
}
@PostMapping("/create")
@Operation(summary = "创建太空舱订单营业额统计")
@PreAuthorize("@ss.hasPermission('t:statistics-space-capsule-order:create')")

View File

@ -0,0 +1,14 @@
package cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 太空舱订单营业根据太空舱resp vo")
@Data
public class SpaceCapsuleOrderNameRespVO extends StatisticsSpaceCapsuleOrderRespVO {
@Schema(description = "太空舱名称")
private String spName;
@Schema(description = "太空舱id")
private Long spId;
}

View File

@ -0,0 +1,23 @@
package cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo;
import cn.hutool.core.date.DatePattern;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Schema(description = "管理后台 - 太空舱订单营业额统 Request VO")
@Data
public class SpaceCapsuleOrderReqVO {
@Schema(description = "太空舱id")
private Long id;
@Schema(description = "门店id")
private Long carteenId;
@Schema(description = "开始时间")
@DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
private Date startTime;
@Schema(description = "结束时间")
@DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
private Date endTime;
}

View File

@ -31,7 +31,6 @@ public class StatisticsSpaceCapsuleOrderRespVO {
private BigDecimal totalMinute;
@Schema(description = "门店id", example = "22393")
@ExcelProperty("门店id")
private Long carteenId;
@Schema(description = "总退款金额", requiredMode = Schema.RequiredMode.REQUIRED)

View File

@ -0,0 +1,65 @@
package cn.iocoder.yudao.module.member.convert.excel;
import cn.iocoder.yudao.module.member.enums.SpaceCapsuleOrderEnum;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.converters.ReadConverterContext;
import com.alibaba.excel.converters.WriteConverterContext;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.data.WriteCellData;
import org.springframework.stereotype.Component;
/**
* @author zt
* @description <description class purpose>
* @since 2024/7/17
*/
@Component
public class OrderSpaceCapsuleStatusConverter implements Converter<Integer> {
@Override
public Class<?> supportJavaTypeKey() {
return Integer.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.NUMBER;
}
/**
* 这里读的时候会调用
*
* @param context
* @return
*/
@Override
public Integer convertToJavaData(ReadConverterContext<?> context) throws Exception {
return Converter.super.convertToJavaData(context);
}
/**
* 这里是写的时候会调用 不用管
*
* @return
*/
@Override
public WriteCellData<String> convertToExcelData(WriteConverterContext<Integer> context) {
Integer value = context.getValue();
String s1=null;
if (SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_UNUSED.getCode().equals(value)) {
s1 = SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_UNUSED.getName();
} else if (SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode().equals(value)) {
s1 = SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getName();
}else if (SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_IN_USE.getCode().equals(value)) {
s1 = SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_IN_USE.getName();
}
else if (SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_REFUNDED.getCode().equals(value)) {
s1 = SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_REFUNDED.getName();
}
else if (SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_APPOINTMENT.getCode().equals(value)) {
s1 = SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_APPOINTMENT.getName();
}
return new WriteCellData<>(s1);
}
}

View File

@ -102,4 +102,6 @@ public class OrderSpaceCapsuleDO extends BaseDO {
private String qrCode;
private Integer payNum;
private String machineNum;
private String phone;
private String spaceName;
}

View File

@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsulePageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleStatisticsComVo;
import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleStatisticsVo;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.SpaceCapsuleOrderNameRespVO;
import cn.iocoder.yudao.module.member.dal.dataobject.orderspacecapsule.OrderSpaceCapsuleDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -41,5 +42,6 @@ public interface OrderSpaceCapsuleMapper extends BaseMapperX<OrderSpaceCapsuleDO
.orderByDesc(OrderSpaceCapsuleDO::getId));
}
OrderSpaceCapsuleStatisticsVo compDay(@Param("status")Integer status,@Param("start") Date start,@Param("end") Date end,@Param("carteenId")Long carteenId);
SpaceCapsuleOrderNameRespVO compDay1(@Param("status")Integer status, @Param("start") Date start, @Param("end") Date end,@Param("spId")Long spId);
OrderSpaceCapsuleStatisticsComVo compMoney(@Param("start") Date start, @Param("end") Date end);
}

View File

@ -83,6 +83,7 @@ public class OrderSpaceCapsuleServiceImpl implements OrderSpaceCapsuleService {
BigDecimal initialMoney = user.getMoney();
// 设置变动前的余额
orderSpaceCapsule.setStartMoney(initialMoney);
orderSpaceCapsule.setPhone(user.getMobile());
//获取订单总金额
BigDecimal multiply = orderSpaceCapsule.getComboPrice().multiply(BigDecimal.valueOf(orderSpaceCapsule.getComboNum()));
orderSpaceCapsule.setMoney(multiply);
@ -138,6 +139,7 @@ public class OrderSpaceCapsuleServiceImpl implements OrderSpaceCapsuleService {
throw exception(ORDER_SPACE_CAPSULE_EXIST);
}
updateObj.setSpaceCapsuleId(spaceCapsule.getId());
updateObj.setSpaceName(spaceCapsule.getSpaceName());
updateObj.setOrderStartTime(LocalDateTime.now());
updateSpaceCapsuleStatus(spaceCapsule, SpaceCapsuleEnum.SPACE_CAPSULE_ENUM_IN_USE.getCode());
}

View File

@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.member.service.statisticsspacecapsuleorder;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleStatisticsVo;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.SpaceCapsuleOrderNameRespVO;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.SpaceCapsuleOrderReqVO;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderDO;
@ -55,4 +57,5 @@ public interface StatisticsSpaceCapsuleOrderService {
PageResult<StatisticsSpaceCapsuleOrderDO> getStatisticsSpaceCapsuleOrderPage(StatisticsSpaceCapsuleOrderPageReqVO pageReqVO);
List<StatisticsSpaceCapsuleOrderDO> statistics(Date startTime,Date endTime);
OrderSpaceCapsuleStatisticsVo compDayMon(Long carteenId,String type,Date time);
List<SpaceCapsuleOrderNameRespVO> getStatisticsSpaceCapsuleOrder(SpaceCapsuleOrderReqVO vo);
}

View File

@ -2,12 +2,17 @@ package cn.iocoder.yudao.module.member.service.statisticsspacecapsuleorder;
import cn.hutool.core.date.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleStatisticsComVo;
import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleStatisticsVo;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.SpaceCapsuleOrderNameRespVO;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.SpaceCapsuleOrderReqVO;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.spacecapsule.SpaceCapsuleDO;
import cn.iocoder.yudao.module.member.dal.dataobject.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderDO;
import cn.iocoder.yudao.module.member.dal.mysql.orderspacecapsule.OrderSpaceCapsuleMapper;
import cn.iocoder.yudao.module.member.dal.mysql.spacecapsule.SpaceCapsuleMapper;
import cn.iocoder.yudao.module.member.dal.mysql.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderMapper;
import cn.iocoder.yudao.module.member.enums.SpaceCapsuleOrderEnum;
import cn.iocoder.yudao.module.member.service.orderspacecapsule.OrderSpaceCapsuleServiceImpl;
@ -18,7 +23,6 @@ import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.util.*;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_REFUND_NOT_STATISTICS_EXISTS;
@ -36,6 +40,8 @@ public class StatisticsSpaceCapsuleOrderServiceImpl implements StatisticsSpaceCa
@Resource
private OrderSpaceCapsuleMapper orderSpaceCapsuleMapper;
@Resource
private SpaceCapsuleMapper spaceCapsuleMapper;
@Resource
private StatisticsSpaceCapsuleOrderMapper statisticsSpaceCapsuleOrderMapper;
@Resource
private OrderSpaceCapsuleServiceImpl orderSpaceCapsuleService;
@ -102,6 +108,27 @@ public class StatisticsSpaceCapsuleOrderServiceImpl implements StatisticsSpaceCa
}
return null;
}
@Override
public List<SpaceCapsuleOrderNameRespVO> getStatisticsSpaceCapsuleOrder(SpaceCapsuleOrderReqVO vo) {
List<SpaceCapsuleOrderNameRespVO> list=new ArrayList<>();
if(vo.getId()==null){
Long carteenId = vo.getCarteenId();
Date endTime = vo.getEndTime();
Date startTime = vo.getStartTime();
List<SpaceCapsuleDO> spaceCapsuleDOS = spaceCapsuleMapper.selectList(new LambdaQueryWrapperX<SpaceCapsuleDO>().eq(SpaceCapsuleDO::getCarteenId, carteenId));
for (SpaceCapsuleDO aDo : spaceCapsuleDOS) {
SpaceCapsuleOrderNameRespVO vo1 = getStatisticsSpaceCapsuleOrder1(aDo.getId(), endTime, startTime);
list.add(vo1);
}
}else{
list.add(getStatisticsSpaceCapsuleOrder1(vo.getId(),vo.getStartTime(),vo.getEndTime()));
}
return list;
}
public SpaceCapsuleOrderNameRespVO getStatisticsSpaceCapsuleOrder1(Long id,Date start,Date end){
return orderSpaceCapsuleMapper.compDay1(SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode(),start,end,id);
}
/**
* 日报
* @param carteenId

View File

@ -40,4 +40,28 @@
where create_time between #{start} and #{end}
</select>
<select id="compDay1"
resultType="cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.SpaceCapsuleOrderNameRespVO">
SELECT
IFNULL(SUM(a.money), 0) AS totalMoney,
IFNULL(COUNT(a.id), 0) AS totalOrder,
IFNULL(SUM(a.combo_num * a.combo_minutes), 0) AS totalMinute,
IFNULL(SUM(a.refund_money), 0) AS refundMoney,
IFNULL(SUM(a.combo_num), 0) AS totalPackageSum,
IFNULL(a.carteen_id, 0) AS carteenId,
IFNULL(a.carteen_name, 'Unknown') AS carteenName,
IFNULL(COUNT(DISTINCT a.user_id), 0) AS totalCustomer,
IFNULL(ROUND(SUM(a.money) / NULLIF(COUNT(a.id), 0)), 0) AS avgOrderMoney,
a.space_capsule_id AS spId,
b.space_name AS spName
FROM
t_order_space_capsule AS a
LEFT JOIN t_space_capsule AS b ON a.space_capsule_id = b.id
WHERE
a.`status` = = #{status}
AND DATE(a.create_time) BETWEEN #{start} AND #{end} and a.space_capsule_id=#{spId}
GROUP BY
a.carteen_id, a.carteen_name, a.space_capsule_id, b.space_name;
</select>
</mapper>