交班相关代码
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
package com.czg.account.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 交班记录表
|
||||
*
|
||||
* @author Tankaikai tankaikai@aliyun.com
|
||||
* @since 1.0 2025-02-27
|
||||
*/
|
||||
@Data
|
||||
public class HandoverRecordDTO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
/**
|
||||
* 店铺 id
|
||||
*/
|
||||
private Long shopId;
|
||||
/**
|
||||
* 店铺 id
|
||||
*/
|
||||
private String shopName;
|
||||
/**
|
||||
* 登录时间
|
||||
*/
|
||||
private LocalDateTime loginTime;
|
||||
/**
|
||||
* 交班时间
|
||||
*/
|
||||
private LocalDateTime handoverTime;
|
||||
/**
|
||||
* 账户类型 merchant-商户 staff-员工
|
||||
*/
|
||||
private String accountType;
|
||||
/**
|
||||
* 员工 id
|
||||
*/
|
||||
private Long staffId;
|
||||
/**
|
||||
* 员工姓名
|
||||
*/
|
||||
private String staffName;
|
||||
/**
|
||||
* 当班总收入
|
||||
*/
|
||||
private BigDecimal handAmount;
|
||||
/**
|
||||
* 现金收入
|
||||
*/
|
||||
private BigDecimal cashAmount;
|
||||
/**
|
||||
* 微信收入
|
||||
*/
|
||||
private BigDecimal wechatAmount;
|
||||
/**
|
||||
* 支付宝收入
|
||||
*/
|
||||
private BigDecimal alipayAmount;
|
||||
/**
|
||||
* 会员支付
|
||||
*/
|
||||
private BigDecimal vipPay;
|
||||
/**
|
||||
* 会员充值
|
||||
*/
|
||||
private BigDecimal vipRecharge;
|
||||
/**
|
||||
* 分类数据 json
|
||||
*/
|
||||
private String categoryData;
|
||||
/**
|
||||
* 商品数据 json
|
||||
*/
|
||||
private String productData;
|
||||
/**
|
||||
* 快捷收款金额
|
||||
*/
|
||||
private BigDecimal quickInAmount;
|
||||
/**
|
||||
* 退款金额
|
||||
*/
|
||||
private BigDecimal refundAmount;
|
||||
/**
|
||||
* 挂账金额
|
||||
*/
|
||||
private BigDecimal creditAmount;
|
||||
/**
|
||||
* 订单数量
|
||||
*/
|
||||
private Integer orderCount;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
package com.czg.account.entity;
|
||||
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 交班记录表
|
||||
*
|
||||
* @author Tankaikai tankaikai@aliyun.com
|
||||
* @since 1.0 2025-02-27
|
||||
*/
|
||||
@Data
|
||||
@Table("tb_handover_record")
|
||||
public class HandoverRecord implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id(keyType = KeyType.Auto)
|
||||
private Long id;
|
||||
/**
|
||||
* 店铺 id
|
||||
*/
|
||||
private Long shopId;
|
||||
/**
|
||||
* 店铺名称
|
||||
*/
|
||||
private String shopName;
|
||||
/**
|
||||
* 登录时间
|
||||
*/
|
||||
private LocalDateTime loginTime;
|
||||
/**
|
||||
* 交班时间
|
||||
*/
|
||||
private LocalDateTime handoverTime;
|
||||
/**
|
||||
* 账户类型 merchant-商户 staff-员工
|
||||
*/
|
||||
private String accountType;
|
||||
/**
|
||||
* 员工 id
|
||||
*/
|
||||
private Long staffId;
|
||||
/**
|
||||
* 员工姓名
|
||||
*/
|
||||
private String staffName;
|
||||
/**
|
||||
* 当班总收入
|
||||
*/
|
||||
private BigDecimal handAmount;
|
||||
/**
|
||||
* 现金收入
|
||||
*/
|
||||
private BigDecimal cashAmount;
|
||||
/**
|
||||
* 微信收入
|
||||
*/
|
||||
private BigDecimal wechatAmount;
|
||||
/**
|
||||
* 支付宝收入
|
||||
*/
|
||||
private BigDecimal alipayAmount;
|
||||
/**
|
||||
* 会员支付
|
||||
*/
|
||||
private BigDecimal vipPay;
|
||||
/**
|
||||
* 会员充值
|
||||
*/
|
||||
private BigDecimal vipRecharge;
|
||||
/**
|
||||
* 分类数据 json
|
||||
*/
|
||||
private String categoryData;
|
||||
/**
|
||||
* 商品数据 json
|
||||
*/
|
||||
private String productData;
|
||||
/**
|
||||
* 快捷收款金额
|
||||
*/
|
||||
private BigDecimal quickInAmount;
|
||||
/**
|
||||
* 退款金额
|
||||
*/
|
||||
private BigDecimal refundAmount;
|
||||
/**
|
||||
* 挂账金额
|
||||
*/
|
||||
private BigDecimal creditAmount;
|
||||
/**
|
||||
* 订单数量
|
||||
*/
|
||||
private Integer orderCount;
|
||||
}
|
||||
@@ -4,7 +4,6 @@ import com.mybatisflex.annotation.Column;
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import com.mybatisflex.core.keygen.KeyGenerators;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
@@ -27,7 +26,7 @@ public class PictureClassify implements Serializable {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@Id(keyType = KeyType.Generator, value = KeyGenerators.snowFlakeId)
|
||||
@Id(keyType = KeyType.Auto)
|
||||
private Long id;
|
||||
/**
|
||||
* 店铺id
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.czg.account.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 交班账户类型
|
||||
*
|
||||
* @author tankaikai
|
||||
* @since 2025-02-27 14:39
|
||||
*/
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum HandoverAccountTypeEnum {
|
||||
/**
|
||||
* 商户
|
||||
*/
|
||||
MERCHANT("merchant", "商户"),
|
||||
|
||||
/**
|
||||
* 员工
|
||||
*/
|
||||
STAFF("staff", "员工");
|
||||
|
||||
private final String value;
|
||||
private final String text;
|
||||
|
||||
|
||||
public static List<String> getValues() {
|
||||
return Arrays.stream(values()).map(HandoverAccountTypeEnum::getValue).toList();
|
||||
}
|
||||
|
||||
public static String getText(String value) {
|
||||
HandoverAccountTypeEnum item = Arrays.stream(values()).filter(obj -> value.equals(obj.getValue())).findFirst().orElse(null);
|
||||
if (item != null) {
|
||||
return item.getText();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.czg.account.service;
|
||||
|
||||
import com.czg.account.entity.HandoverRecord;
|
||||
import com.czg.account.vo.HandoverTotalVo;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
|
||||
/**
|
||||
* 交班记录表
|
||||
*
|
||||
* @author Tankaikai tankaikai@aliyun.com
|
||||
* @since 1.0 2025-02-27
|
||||
*/
|
||||
public interface HandoverRecordService extends IService<HandoverRecord> {
|
||||
/**
|
||||
* 统计交班数据
|
||||
*
|
||||
* @return 交班数据
|
||||
*/
|
||||
HandoverTotalVo totalHandoverData();
|
||||
|
||||
/**
|
||||
* 初始化交班记录
|
||||
*/
|
||||
void initHandoverRecord(HandoverRecord entity);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.czg.account.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 交班售出商品
|
||||
*
|
||||
* @author tankaikai
|
||||
* @since 2025-02-27 15:34
|
||||
*/
|
||||
@Data
|
||||
public class HandoverProductListVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
* 商品id
|
||||
*/
|
||||
private Long productId;
|
||||
/**
|
||||
* sku id
|
||||
*/
|
||||
private Long skuId;
|
||||
/**
|
||||
* 商品名称
|
||||
*/
|
||||
private String productName;
|
||||
/**
|
||||
* 规格名称
|
||||
*/
|
||||
private String skuName;
|
||||
/**
|
||||
* 商品数量
|
||||
*/
|
||||
private BigDecimal num;
|
||||
/**
|
||||
* 小计(商品金额)
|
||||
*/
|
||||
private BigDecimal amount;
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
package com.czg.account.vo;
|
||||
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 交班数据统计
|
||||
*
|
||||
* @author tankaikai
|
||||
* @since 2025-02-27 15:34
|
||||
*/
|
||||
@Data
|
||||
public class HandoverTotalVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
* 当班记录id
|
||||
*/
|
||||
private Long id;
|
||||
/**
|
||||
* 店铺id
|
||||
*/
|
||||
private Long shopId;
|
||||
/**
|
||||
* 店铺名称
|
||||
*/
|
||||
private String shopName;
|
||||
/**
|
||||
* 账户类型 merchant-商户 staff-员工
|
||||
*/
|
||||
private String accountType;
|
||||
/**
|
||||
* 员工id
|
||||
*/
|
||||
private Long staffId;
|
||||
/**
|
||||
* 员工名称(营业员)
|
||||
*/
|
||||
private String staffName;
|
||||
/**
|
||||
* 上岗时间
|
||||
*/
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime loginTime;
|
||||
/**
|
||||
* 交班时间
|
||||
*/
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime handoverTime;
|
||||
/**
|
||||
* 现金支付
|
||||
*/
|
||||
private BigDecimal cashAmount;
|
||||
/**
|
||||
* 退款金额
|
||||
*/
|
||||
private BigDecimal refundAmount;
|
||||
/**
|
||||
* 当班总收入(营业额)
|
||||
*/
|
||||
private BigDecimal handAmount;
|
||||
/**
|
||||
* 订单数量
|
||||
*/
|
||||
private Integer orderCount;
|
||||
/**
|
||||
* 售出商品列表
|
||||
*/
|
||||
private List<HandoverProductListVo> detailList;
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.czg.order.service;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.czg.account.vo.HandoverProductListVo;
|
||||
import com.czg.order.dto.CheckOrderPay;
|
||||
import com.czg.order.dto.OrderInfoAddDTO;
|
||||
import com.czg.order.dto.OrderInfoQueryDTO;
|
||||
@@ -15,6 +16,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单表 服务层。
|
||||
@@ -37,4 +39,54 @@ public interface OrderInfoService extends IService<OrderInfo> {
|
||||
void upOrderInfo(OrderInfo orderInfo, BigDecimal payAmount, LocalDateTime payTime, Long payOrderId, PayEnums payType);
|
||||
|
||||
void expired(Long orderId);
|
||||
|
||||
/**
|
||||
* 交班现金支付统计
|
||||
*
|
||||
* @param shopId 店铺id
|
||||
* @param loginTime 上岗时间
|
||||
* @param handoverTime 交班时间
|
||||
* @return 现金支付总额
|
||||
*/
|
||||
BigDecimal getHandoverCashAmount(Long shopId, String loginTime, String handoverTime);
|
||||
|
||||
/**
|
||||
* 交班退款统计
|
||||
*
|
||||
* @param shopId 店铺id
|
||||
* @param loginTime 上岗时间
|
||||
* @param handoverTime 交班时间
|
||||
* @return 退款总额
|
||||
*/
|
||||
BigDecimal getHandoverRefundAmount(Long shopId, String loginTime, String handoverTime);
|
||||
|
||||
/**
|
||||
* 交班营业额统计
|
||||
*
|
||||
* @param shopId 店铺id
|
||||
* @param loginTime 上岗时间
|
||||
* @param handoverTime 交班时间
|
||||
* @return 营业额
|
||||
*/
|
||||
BigDecimal getHandoverTotalAmount(Long shopId, String loginTime, String handoverTime);
|
||||
|
||||
/**
|
||||
* 交班订单数统计
|
||||
*
|
||||
* @param shopId 店铺id
|
||||
* @param loginTime 上岗时间
|
||||
* @param handoverTime 交班时间
|
||||
* @return 交班订单数
|
||||
*/
|
||||
int getHandoverOrderNum(Long shopId, String loginTime, String handoverTime);
|
||||
|
||||
/**
|
||||
* 交班售出商品明细
|
||||
*
|
||||
* @param shopId 店铺id
|
||||
* @param loginTime 上岗时间
|
||||
* @param handoverTime 交班时间
|
||||
* @return 交班售出商品明细
|
||||
*/
|
||||
List<HandoverProductListVo> getHandoverDetailList(Long shopId, String loginTime, String handoverTime);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.czg.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 平台类型枚举
|
||||
*
|
||||
* @author tankaikai
|
||||
* @since 2025-02-27 14:39
|
||||
*/
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum PlatformTypeEnum {
|
||||
/**
|
||||
* 收银机客户端
|
||||
*/
|
||||
PC_CLIENT("PC", "收银机客户端"),
|
||||
/**
|
||||
* 微信小程序
|
||||
*/
|
||||
WECHAT("WX", "微信小程序"),
|
||||
/**
|
||||
* 支付宝小程序
|
||||
*/
|
||||
ALIPAY("ALI", "支付宝小程序"),
|
||||
/**
|
||||
* PC管理端
|
||||
*/
|
||||
WEB_ADMIN("WEB", "PC管理端"),
|
||||
/**
|
||||
* APP管理端
|
||||
*/
|
||||
APP_ADMIN("APP", "APP管理端");
|
||||
|
||||
private final String value;
|
||||
private final String text;
|
||||
|
||||
|
||||
public static List<String> getValues() {
|
||||
return Arrays.stream(values()).map(PlatformTypeEnum::getValue).toList();
|
||||
}
|
||||
|
||||
public static String getText(String value) {
|
||||
PlatformTypeEnum item = Arrays.stream(values()).filter(obj -> value.equals(obj.getValue())).findFirst().orElse(null);
|
||||
if (item != null) {
|
||||
return item.getText();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user