package com.sayweee.central.finance.entity.db.cash.order;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.sayweee.central.finance.config.excel.CashExcelConverter;
import com.sayweee.central.finance.entity.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
-
fs_cash_order_details_weee
-
@author
/
@ApiModel(value=“com.sayweee.central.finance.entity.db.cash.order.FsCashOrderDetailsWeee订单表流水明细表”)
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class FsCashOrderDetailsWeee extends BaseModel {
/*- 主键
*/
@TableId(type = IdType.AUTO)
@ApiModelProperty(value=“主键”)
@ExcelIgnore
private Long id;
/**
- 相关单据Id
*/
@ApiModelProperty(value=“相关单据Id”)
@ExcelProperty(value = “Ref ID”,index = 0)
private Long refId;
/**
- 订单id
*/
@ApiModelProperty(value=“订单id”)
@ExcelProperty(value = “Order ID”,index = 1)
private Long orderId;
/**
- 商家id
*/
@ApiModelProperty(value=“商家id”)
@ExcelProperty(value = “Seller ID”,index = 2)
private Integer sellerId;
/**
- 订单状态
*/
@ApiModelProperty(value=“订单状态”)
@ExcelIgnore
private String orderStatus;
/**
- 业务类型
*/
@ApiModelProperty(value=“业务类型”)
@ExcelProperty(value = “Biz Type”,index = 3)
private String bizType;
/**
- 订单类型
*/
@ApiModelProperty(value=“订单类型”)
@ExcelProperty(value = “Order Type”,index = 4)
private String orderType;
/**
- 支付金额
*/
@ApiModelProperty(value=“支付金额”)
@ExcelProperty(value = “Pay Amount”,index = 5)
private BigDecimal payAmount;
/**
- 付款凭证id
*/
@ApiModelProperty(value=“付款凭证id”)
@ExcelProperty(value = “Transaction ID”,index = 6)
private String transactionId;
/**
- 支付方式
*/
@ApiModelProperty(value=“支付方式”)
@ExcelProperty(value = “Category”,index = 7,converter = CashExcelConverter.PaymentCategoryConverter.class)
private String paymentCategory;
/**
- 父订单id
*/
@ApiModelProperty(value=“父订单id”)
@ExcelProperty(value = “Parent Order Id”,index = 9)
private Long parentOrderId;
/**
- 是否平账 N原始 S成功 F失败 L比对中
*/
@ApiModelProperty(value=“凭证状态 N原始 S已生成凭证 F失败 L生成凭证中”)
@ExcelProperty(value = “Voucher Status”,index = 10,converter = CashExcelConverter.VoucherStatusConverter.class)
private String voucherStatus;
@ExcelProperty(value = “Sap Push Status”,index = 11,converter = CashExcelConverter.SapDocStatusConverter.class)
private String sapPushStatus;@ExcelProperty(value = “Sap Doc ID”,index = 12)
private String sapDocId;@ExcelIgnore
private BigDecimal sapAmount;/**
- 创建人id
*/
@ApiModelProperty(value=“创建人id”)
@ExcelIgnore
private Integer recCreatorId;
@ExcelIgnore
private String recCreatorName;/**
- 创建时间
*/
@ApiModelProperty(value=“创建时间”)
@ExcelIgnore
private Date recCreateTime;
/**
- 创建人id
*/
@ApiModelProperty(value=“创建人id”)
@ExcelIgnore
private Integer recUpdateId;
@ExcelIgnore
private String recUpdateName;/**
- 更新时间
*/
@ApiModelProperty(value=“更新时间”)
@ExcelIgnore
private Date recUpdateTime;
/**
- 订单时间
*/
@ApiModelProperty(value=“订单时间”)
@ExcelProperty(value = “Order Time”,index = 8)
private String orderTime;
@TableField(exist = false)
@ExcelIgnore
private Date beginDate;@TableField(exist = false)
@ExcelIgnore
private Date endDate;@TableField(exist = false)
@ExcelIgnore
private List bizTypeList;@TableField(exist = false)
@ExcelIgnore
private String tableName;@TableField(exist = false)
@ExcelIgnore
private String voucherTable;@TableField(exist = false)
@ExcelIgnore
private String voucherTableDetail;@TableField(exist = false)
@ExcelIgnore
private List sapPushStatusList;@TableField(exist = false)
@ExcelIgnore
private String subject;@ExcelIgnore
private static final long serialVersionUID = 1L;
} - 主键
package com.sayweee.central.finance.config.excel;
import com.alibaba.excel.converters.date.DateStringConverter;
import com.alibaba.excel.converters.string.StringStringConverter;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.sayweee.central.finance.entity.db.settlement.dict.FsDictDateJson;
import com.sayweee.central.finance.enums.cash.BankEnums;
import com.sayweee.central.finance.enums.cash.OrderEnums;
import com.sayweee.central.finance.service.settlement.business.FsWssDictService;
import com.sayweee.central.finance.util.ApplicationContextHolder;
import com.sayweee.central.finance.util.DateUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.map.HashedMap;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
-
@Author wan long
-
@Date 2023-10-19 11:09
*/
public interface CashExcelConverter {Cache<String, Map<String, String>> cache = CacheBuilder.newBuilder()
//设置cache的初始大小为1
.initialCapacity(1)
//设置cache中的数据在写入之后的存活时间为10分钟
.expireAfterWrite(10, TimeUnit.MINUTES).build();class PaymentCategoryConverter extends StringStringConverter {
@Override
public CellData convertToExcelData(String s, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) {
String name = OrderEnums.PaymentCategory.codeNameMap.get(s);
return new CellData<>(name == null ? s : name);
}
}class VoucherStatusConverter extends StringStringConverter {
@Override
public CellData convertToExcelData(String s, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) {
String name = BankEnums.VoucherStatus.getNameByCode(s);
return new CellData<>(name == null ? s : name);
}
}class SapDocStatusConverter extends StringStringConverter {
@Override
public CellData convertToExcelData(String s, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) {
String name = OrderEnums.PushSapFlag.getNameByCode(s);
return new CellData<>(name == null ? s : name);
}
}class PaypalTransactionTypeConverter extends StringStringConverter {
public static final String CACHE_KEY = "PaypalTransactionType"; @Override public CellData<String> convertToExcelData(String s, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) { String name = getTransactionTypeDesc(s); return new CellData<>(name == null ? (s + "(-)") : (s + "(" + name + ")")); } public static String getTransactionTypeDesc(String code) { Map<String, String> map = cache.getIfPresent(CACHE_KEY); if (map == null) { map = initCache(); } return map.get(code); } private static Map<String, String> initCache() { FsWssDictService dictService = ApplicationContextHolder.getBean(FsWssDictService.class); Map<String, List<FsDictDateJson>> bankAllType = dictService.getDictDataIdMapByDictName("bank_all_type"); if (bankAllType == null) { return Collections.emptyMap(); } List<FsDictDateJson> dateJsons = bankAllType.get("paypal"); if (CollectionUtils.isEmpty(dateJsons)) { return Collections.emptyMap(); } Map<String, String> map = new HashedMap<>(16); for (String codeName : dateJsons.get(0).getName().split(",")) { String[] split = codeName.split("-"); map.put(split[0], split[1]); } cache.put(CACHE_KEY,map); return map; }
}
class LATimeConverter extends DateStringConverter {
@Override public CellData<String> convertToExcelData(Date value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { if (value == null) { return new CellData<>(""); } return new CellData<>(DateUtil.LA_Date_Format.format(value)); }
}
}