Commit 9e8b20cc authored by shiyu's avatar shiyu

导出订单的账目明细

parent d6e34a0b
...@@ -38,6 +38,14 @@ public class SysFinanceController { ...@@ -38,6 +38,14 @@ public class SysFinanceController {
return sysFinanceService.findOrderBillDetail(dto); return sysFinanceService.findOrderBillDetail(dto);
} }
@ApiOperation(value = "导出订单的账目明细")
@PostMapping("/exportOrderBillDetail")
public Result exportOrderBillDetail(@RequestBody DistributionOrderRequestDto dto) {
logger.info("导出订单的账目明细,请求参数:{}", JSON.toJSONString(dto));
return sysFinanceService.exportOrderBillDetail(dto);
}
@ApiOperation(value = "查询用户账单") @ApiOperation(value = "查询用户账单")
@PostMapping("/findUserBill") @PostMapping("/findUserBill")
public Result findUserBill(@RequestBody UserBillRequestDto dto) { public Result findUserBill(@RequestBody UserBillRequestDto dto) {
...@@ -55,6 +63,17 @@ public class SysFinanceController { ...@@ -55,6 +63,17 @@ public class SysFinanceController {
return sysFinanceService.findUserBillDetail(dto); return sysFinanceService.findUserBillDetail(dto);
} }
@ApiOperation(value = "导出用户账单明细")
@PostMapping("/exportUserBillDetail")
public Result exportUserBillDetail(@RequestBody UserAccountDetailRequestDto dto) {
logger.info("导出用户账单明细,请求参数:{}", JSON.toJSONString(dto));
if (dto.getUserId() == null || StringUtils.isEmpty(dto.getAccountPeriod())) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return sysFinanceService.exportUserBillDetail(dto);
}
@ApiOperation(value = "查询平台账户收入明细") @ApiOperation(value = "查询平台账户收入明细")
@PostMapping("/findSystemBillIncomeDetail") @PostMapping("/findSystemBillIncomeDetail")
public Result findSystemBillIncomeDetail(@RequestBody UserAccountDetailRequestDto dto) { public Result findSystemBillIncomeDetail(@RequestBody UserAccountDetailRequestDto dto) {
......
package com.wwdz.ch.admin.entity.vo; package com.wwdz.ch.admin.entity.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.wwdz.ch.core.util.DateTimeConverter;
import com.xxdxxs.entity.Entity; import com.xxdxxs.entity.Entity;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
@Data @Data
@ExcelIgnoreUnannotated
public class OrderBillVo implements Entity { public class OrderBillVo implements Entity {
/** /**
* 分销订单号 * 分销订单号
*/ */
@ExcelProperty(value = "订单号", index = 0)
private String distributionOrderId; private String distributionOrderId;
/** /**
...@@ -22,32 +28,38 @@ public class OrderBillVo implements Entity { ...@@ -22,32 +28,38 @@ public class OrderBillVo implements Entity {
/** /**
* 商品名称 * 商品名称
*/ */
@ExcelProperty(value = "商品名称", index = 1)
private String itemName; private String itemName;
/** /**
* 卖方id * 卖方id
*/ */
@ExcelProperty(value = "藏家ID", index = 6)
private Long sellerId; private Long sellerId;
/** /**
* 卖家名称 * 卖家名称
*/ */
@ExcelProperty(value = "藏家", index = 5)
private String sellerName; private String sellerName;
/** /**
* 订单金额,要除以100 * 订单金额,要除以100
*/ */
@ExcelProperty(value = "订单金额", index = 3)
private String amount; private String amount;
/** /**
* 平台实际到账金额 * 平台实际到账金额
* 要减去微信手续费1% * 要减去微信手续费1%
*/ */
@ExcelProperty(value = "平台到账(1%手续费)", index = 4)
private String realAmount; private String realAmount;
/** /**
* 创建时间 * 创建时间
*/ */
@ExcelProperty(value = "订单创建时间", index = 8, converter = DateTimeConverter.class)
private Date createTime; private Date createTime;
/** /**
...@@ -58,6 +70,7 @@ public class OrderBillVo implements Entity { ...@@ -58,6 +70,7 @@ public class OrderBillVo implements Entity {
/** /**
* 订单状态 * 订单状态
*/ */
@ExcelProperty(value = "订单状态", index = 2)
private String stateName; private String stateName;
/** /**
...@@ -65,36 +78,43 @@ public class OrderBillVo implements Entity { ...@@ -65,36 +78,43 @@ public class OrderBillVo implements Entity {
*/ */
private Integer type; private Integer type;
@ExcelProperty(value = "订单类型", index = 7)
private String typeName; private String typeName;
/** /**
* 藏家入账金额 * 藏家入账金额
*/ */
@ExcelProperty(value = "藏家已入账金额", index = 9)
private String sellerEntryAmount; private String sellerEntryAmount;
/** /**
* 藏家待入账金额 * 藏家待入账金额
*/ */
@ExcelProperty(value = "藏家待入账金额", index = 10)
private String sellerWaitEntryAmount; private String sellerWaitEntryAmount;
/** /**
* 系统入账金额 * 系统入账金额
*/ */
@ExcelProperty(value = "系统已入账金额", index = 11)
private String systemEntryAmount; private String systemEntryAmount;
/** /**
* 系统待入账金额 * 系统待入账金额
*/ */
@ExcelProperty(value = "系统待入账金额", index = 12)
private String systemWaitEntryAmount; private String systemWaitEntryAmount;
/** /**
* 介绍佣金入账金额 * 介绍佣金入账金额
*/ */
@ExcelProperty(value = "介绍佣金已入账金额", index = 13)
private String introduceEntryAmount; private String introduceEntryAmount;
/** /**
* 介绍佣金待入账金额 * 介绍佣金待入账金额
*/ */
@ExcelProperty(value = "介绍佣金待入账金额", index = 14)
private String introduceWaitEntryAmount; private String introduceWaitEntryAmount;
/** /**
...@@ -103,7 +123,8 @@ public class OrderBillVo implements Entity { ...@@ -103,7 +123,8 @@ public class OrderBillVo implements Entity {
private String introducerId; private String introducerId;
/** /**
* 介绍费归属人 * 佣金归属
*/ */
@ExcelProperty(value = "佣金归属", index = 15)
private String introducerName; private String introducerName;
} }
package com.wwdz.ch.admin.entity.vo; package com.wwdz.ch.admin.entity.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.xxdxxs.entity.Entity; import com.xxdxxs.entity.Entity;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
@Data @Data
@ExcelIgnoreUnannotated
public class UserBillVo implements Entity { public class UserBillVo implements Entity {
private Integer id; private Integer id;
...@@ -18,21 +21,28 @@ public class UserBillVo implements Entity { ...@@ -18,21 +21,28 @@ public class UserBillVo implements Entity {
/** /**
* 账期 * 账期
*/ */
@ExcelProperty(value = "账期", index = 0)
private String accountPeriod; private String accountPeriod;
/** /**
* 用户id * 用户id
*/ */
@ExcelProperty(value = "藏家ID", index = 2)
private Long userId; private Long userId;
/** /**
* 用户名称 * 用户名称
*/ */
@ExcelProperty(value = "藏家", index = 1)
private String userName; private String userName;
@ExcelProperty(value = "是否认证藏家", index = 3)
private String isCollector = "是";
/** /**
* 总入账金额 * 总入账金额
*/ */
@ExcelProperty(value = "转账金额", index = 6)
private Long totalEntryAmount; private Long totalEntryAmount;
/** /**
...@@ -43,6 +53,7 @@ public class UserBillVo implements Entity { ...@@ -43,6 +53,7 @@ public class UserBillVo implements Entity {
/** /**
* 订单入账金额 * 订单入账金额
*/ */
@ExcelProperty(value = "订单收入", index = 7)
private Long orderEntryAmount; private Long orderEntryAmount;
/** /**
...@@ -53,6 +64,7 @@ public class UserBillVo implements Entity { ...@@ -53,6 +64,7 @@ public class UserBillVo implements Entity {
/** /**
* 介绍佣金入账金额 * 介绍佣金入账金额
*/ */
@ExcelProperty(value = "介绍佣金", index = 8)
private Long introduceEntryAmount; private Long introduceEntryAmount;
/** /**
...@@ -78,11 +90,13 @@ public class UserBillVo implements Entity { ...@@ -78,11 +90,13 @@ public class UserBillVo implements Entity {
/** /**
* 银行卡号 * 银行卡号
*/ */
@ExcelProperty(value = "银行卡账号", index = 4)
private String bankCardId; private String bankCardId;
/** /**
* 银行卡号真实姓名 * 银行卡号真实姓名
*/ */
@ExcelProperty(value = "真实姓名", index = 5)
private String realName; private String realName;
/** /**
......
package com.wwdz.ch.admin.entity.vo; package com.wwdz.ch.admin.entity.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.wwdz.ch.core.util.DateTimeConverter;
import com.xxdxxs.entity.Entity; import com.xxdxxs.entity.Entity;
import lombok.Data; import lombok.Data;
...@@ -7,16 +10,19 @@ import java.util.Date; ...@@ -7,16 +10,19 @@ import java.util.Date;
import java.util.Map; import java.util.Map;
@Data @Data
@ExcelIgnoreUnannotated
public class UserOrderBillVo implements Entity { public class UserOrderBillVo implements Entity {
/** /**
* 分销订单号 * 分销订单号
*/ */
@ExcelProperty(value = "订单号", index = 1)
private String distributionOrderId; private String distributionOrderId;
/** /**
* 账期 * 账期
*/ */
@ExcelProperty(value = "账期", index = 0)
private String accountPeriod; private String accountPeriod;
/** /**
...@@ -27,6 +33,7 @@ public class UserOrderBillVo implements Entity { ...@@ -27,6 +33,7 @@ public class UserOrderBillVo implements Entity {
/** /**
* 商品名称 * 商品名称
*/ */
@ExcelProperty(value = "商品名称", index = 2)
private String itemName; private String itemName;
/** /**
...@@ -42,17 +49,20 @@ public class UserOrderBillVo implements Entity { ...@@ -42,17 +49,20 @@ public class UserOrderBillVo implements Entity {
/** /**
* 订单金额,要除以100 * 订单金额,要除以100
*/ */
@ExcelProperty(value = "订单金额", index = 4)
private String amount; private String amount;
/** /**
* 平台实际到账金额 * 平台实际到账金额
* 要减去微信手续费1% * 要减去微信手续费1%
*/ */
@ExcelProperty(value = "平台到账(1%手续费)", index = 5)
private String realAmount; private String realAmount;
/** /**
* 订单创建时间 * 订单创建时间
*/ */
@ExcelProperty(value = "订单创建时间", index = 7, converter = DateTimeConverter.class)
private Date createTime; private Date createTime;
/** /**
...@@ -63,6 +73,7 @@ public class UserOrderBillVo implements Entity { ...@@ -63,6 +73,7 @@ public class UserOrderBillVo implements Entity {
/** /**
* 订单状态 * 订单状态
*/ */
@ExcelProperty(value = "订单状态", index = 3)
private String stateName; private String stateName;
/** /**
...@@ -73,6 +84,7 @@ public class UserOrderBillVo implements Entity { ...@@ -73,6 +84,7 @@ public class UserOrderBillVo implements Entity {
/** /**
* 订单类型1一口价2竞拍 * 订单类型1一口价2竞拍
*/ */
@ExcelProperty(value = "订单类型", index = 6)
private String orderTypeName; private String orderTypeName;
/** /**
...@@ -80,11 +92,13 @@ public class UserOrderBillVo implements Entity { ...@@ -80,11 +92,13 @@ public class UserOrderBillVo implements Entity {
*/ */
private Integer type; private Integer type;
@ExcelProperty(value = "收入类型", index = 8)
private String typeName; private String typeName;
/** /**
* 已入账金额 * 已入账金额
*/ */
@ExcelProperty(value = "金额", index = 9)
private String enrtyAmount; private String enrtyAmount;
/** /**
......
package com.wwdz.ch.admin.impl; package com.wwdz.ch.admin.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.wwdz.ch.admin.entity.vo.OrderBillVo; import com.wwdz.ch.admin.entity.vo.OrderBillVo;
import com.wwdz.ch.admin.entity.vo.SettlementRecordVo; import com.wwdz.ch.admin.entity.vo.SettlementRecordVo;
import com.wwdz.ch.admin.entity.vo.UserBillVo; import com.wwdz.ch.admin.entity.vo.UserBillVo;
import com.wwdz.ch.admin.entity.vo.UserOrderBillVo; import com.wwdz.ch.admin.entity.vo.UserOrderBillVo;
import com.wwdz.ch.admin.service.SysFinanceService; import com.wwdz.ch.admin.service.SysFinanceService;
import com.wwdz.ch.core.consts.BillEnum; import com.wwdz.ch.core.consts.*;
import com.wwdz.ch.core.consts.CommConsts; import com.wwdz.ch.core.storage.QiniuStorage;
import com.wwdz.ch.core.consts.DistributionEnum;
import com.wwdz.ch.core.consts.LogisticsEnum;
import com.wwdz.ch.core.type.PageSearchResult; import com.wwdz.ch.core.type.PageSearchResult;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.*; import com.wwdz.ch.core.util.*;
import com.wwdz.ch.db.dao.distribution.*; import com.wwdz.ch.db.dao.distribution.*;
import com.wwdz.ch.db.domain.distribution.*; import com.wwdz.ch.db.domain.distribution.*;
import com.wwdz.ch.db.dto.request.distribution.*; import com.wwdz.ch.db.dto.request.distribution.*;
import com.xxdxxs.utils.CommonUtils;
import com.xxdxxs.utils.EntityMapper; import com.xxdxxs.utils.EntityMapper;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -24,6 +31,9 @@ import org.springframework.stereotype.Service; ...@@ -24,6 +31,9 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -56,6 +66,9 @@ public class SysFinanceServiceImpl implements SysFinanceService { ...@@ -56,6 +66,9 @@ public class SysFinanceServiceImpl implements SysFinanceService {
@Autowired @Autowired
SettlementRecordDao settlementRecordDao; SettlementRecordDao settlementRecordDao;
@Autowired
QiniuStorage qiniuStorage;
@Override @Override
public Result findOrderBillDetail(DistributionOrderRequestDto dto) { public Result findOrderBillDetail(DistributionOrderRequestDto dto) {
try { try {
...@@ -106,6 +119,31 @@ public class SysFinanceServiceImpl implements SysFinanceService { ...@@ -106,6 +119,31 @@ public class SysFinanceServiceImpl implements SysFinanceService {
} }
@Override
public Result exportOrderBillDetail(DistributionOrderRequestDto dto) {
try {
dto.setLimit(2000);
Result result = findOrderBillDetail(dto);
if (!result.getSuccess()) {
return Result.failed("获取数据失败");
}
List<OrderBillVo> orderBillVoList= ((PageSearchResult) result.getData()).getDataList();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ExcelWriterBuilder excelWriterBuilder = EasyExcel.write(outputStream, OrderBillVo.class);
ExcelWriterSheetBuilder sheetBuilder = excelWriterBuilder.sheet();
sheetBuilder.sheetName("测试").doWrite(orderBillVoList);
String fileName = "订单明细" + System.currentTimeMillis();
String keyName = CommConsts.UPLOAD_EXCEL_PRE_DIRECTORY + fileName + ExcelTypeEnum.XLSX.getValue();
qiniuStorage.store(outputStream.toByteArray(), keyName);
String key = qiniuStorage.generateUrl(keyName);
return Result.success(key);
} catch (Exception e) {
logger.error("导出订单账目明细error:{}", e);
}
return Result.failed();
}
@Override @Override
public Result findUserBill(UserBillRequestDto dto) { public Result findUserBill(UserBillRequestDto dto) {
try { try {
...@@ -187,6 +225,48 @@ public class SysFinanceServiceImpl implements SysFinanceService { ...@@ -187,6 +225,48 @@ public class SysFinanceServiceImpl implements SysFinanceService {
@Override
public Result exportUserBillDetail(UserAccountDetailRequestDto dto) {
try {
UserBillRequestDto userBillRequestDto = new UserBillRequestDto();
dto.setUserId(dto.getUserId());
dto.setAccountPeriod(dto.getAccountPeriod());
//查询某一个藏家的账单
Result result = findUserBill(userBillRequestDto);
if (!result.getSuccess()) {
return Result.failed("获取藏家账单失败");
}
List<UserBillVo> userBillVoList = ((PageSearchResult) result.getData()).getDataList();
logger.info("藏家账单 :{} ", userBillVoList.get(0));
//查询该藏家的账单明细
dto.setLimit(2000);
Result detailResult = findUserBillDetail(dto);
if (!detailResult.getSuccess()) {
return Result.failed("获取藏家的账单明细失败");
}
List<UserOrderBillVo> userOrderBillVoList = ((PageSearchResult) detailResult.getData()).getDataList();
logger.info("藏家的账单明细 :{} 条", userOrderBillVoList.size());
String fileName = "用户账单明细" + System.currentTimeMillis() + ExcelTypeEnum.XLSX.getValue();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ExcelWriter excelWriter = EasyExcel.write(outputStream).build();
WriteSheet sheet1 = EasyExcel.writerSheet(0, "用户账单").head(UserBillVo.class).build();
excelWriter.write(userBillVoList, sheet1);
WriteSheet sheet2 = EasyExcel.writerSheet(1, "明细").head(UserOrderBillVo.class).build();
excelWriter.write(userOrderBillVoList, sheet2);
excelWriter.finish();
String keyName = CommConsts.UPLOAD_EXCEL_PRE_DIRECTORY + fileName;
qiniuStorage.store(outputStream.toByteArray(), keyName);
String key = qiniuStorage.generateUrl(keyName);
return Result.success(key);
} catch (Exception e) {
logger.error("导出订单账目明细error:{}", e);
}
return Result.failed();
}
@Override @Override
public Result findSystemBillIncomeDetail(UserAccountDetailRequestDto dto) { public Result findSystemBillIncomeDetail(UserAccountDetailRequestDto dto) {
try { try {
......
...@@ -13,6 +13,14 @@ public interface SysFinanceService { ...@@ -13,6 +13,14 @@ public interface SysFinanceService {
*/ */
Result findOrderBillDetail(DistributionOrderRequestDto dto); Result findOrderBillDetail(DistributionOrderRequestDto dto);
/**
* 导出订单的账目明细
* @param dto
* @return
*/
Result exportOrderBillDetail(DistributionOrderRequestDto dto);
/** /**
* 查询用户账单 * 查询用户账单
* @param dto * @param dto
...@@ -27,6 +35,13 @@ public interface SysFinanceService { ...@@ -27,6 +35,13 @@ public interface SysFinanceService {
*/ */
Result findUserBillDetail(UserAccountDetailRequestDto dto); Result findUserBillDetail(UserAccountDetailRequestDto dto);
/**
* 导出用户账单明细
* @param dto
* @return
*/
Result exportUserBillDetail(UserAccountDetailRequestDto dto);
/** /**
* 查询平台账户收入明细 * 查询平台账户收入明细
* @param dto * @param dto
......
...@@ -26,6 +26,11 @@ public interface CommConsts { ...@@ -26,6 +26,11 @@ public interface CommConsts {
*/ */
public static final String UPLOAD_PRE_DIRECTORY = "quanku/"; public static final String UPLOAD_PRE_DIRECTORY = "quanku/";
/**
* 上传文件目录
*/
public static final String UPLOAD_EXCEL_PRE_DIRECTORY = "quanku/excel/";
/** /**
* 上传视频目录 * 上传视频目录
*/ */
......
package com.wwdz.ch.core.util;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Objects;
import java.util.TimeZone;
public class DateTimeConverter implements Converter<Date> {
@Override
public Class<Date> supportJavaTypeKey() {
return Date.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public Date convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
DateTimeFormat annotation = excelContentProperty.getField().getAnnotation(DateTimeFormat.class);
String format = Objects.nonNull(annotation) ? annotation.value() : "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
sdf.setTimeZone(TimeZone.getDefault());
Date result = sdf.parse(cellData.getStringValue());
return result;
}
@Override
public CellData convertToExcelData(Date date, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
DateTimeFormat annotation = excelContentProperty.getField().getAnnotation(DateTimeFormat.class);
String format = Objects.nonNull(annotation) ? annotation.value() : "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.getDefault());
sdf.setTimeZone(TimeZone.getDefault());
String result = sdf.format(date);
return new CellData<>(result);
}
}
...@@ -62,10 +62,10 @@ public class OfficialAccountApiTest { ...@@ -62,10 +62,10 @@ public class OfficialAccountApiTest {
@Test @Test
public void sendSms() { public void sendSms() {
String url = wxAppletApi.getUrlLink("pages/saleAuctionDetail/index","itemId=32893616&shareRecordId="); String url = wxAppletApi.getUrlLink("pages/saleAuctionDetail/index","itemId=32893871&shareRecordId=");
//发短信 //发短信
String msg = "您已中拍商品'呱呱来财 ',成交价是6000元,如需购买请在一小时内完成付款,请前往"+ url + "查看"; String msg = "您已中拍商品'西亚千年缠丝',成交价是2000元,请至换藏小程序内完成付款,请前往"+ url + "查看";
aliSmsSender.sendSms("111", msg); aliSmsSender.sendSms("18702352935", msg);
} }
} }
\ No newline at end of file
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