订单列表 退款数量展示问题

数据报表 销量页 列表及导出
This commit is contained in:
2024-06-25 17:49:34 +08:00
parent 6746a6c3f3
commit 1fc2bbba34
6 changed files with 50 additions and 29 deletions

View File

@@ -428,12 +428,12 @@ public class SummaryServiceImpl implements SummaryService {
map.put("商品名称", all.getProductName());
map.put("单 位", all.getUnitName());
map.put("商品规格", StringUtils.isBlank(all.getProductSkuName()) ? "" : all.getProductSkuName());
map.put("销 售 额", all.getSalesAmount());
map.put("销 量", all.getSalesNum());
map.put("单 价", all.getPrice());
map.put("退 单 量", all.getRefNum());
map.put("销 售", all.getSalesAmount().subtract(all.getRefAmount()));
map.put("退 单 额", all.getRefAmount().compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : "-" + all.getRefAmount());
map.put("总 量", all.getNum());
map.put("退 单", all.getRefAmount().compareTo(BigDecimal.ZERO)==0?all.getRefAmount():"-"+all.getRefAmount());
map.put("总 量", all.getNum()-all.getRefNum());
list.add(map);
}
}
@@ -465,8 +465,8 @@ public class SummaryServiceImpl implements SummaryService {
list.add(refCount);
TbOrderSalesCountByDayVo numCount = detailRepository.queryTbOrderSalesCount(Integer.valueOf(shopId), startTime, endTime);
TbOrderPayCountVo salesNum =new TbOrderPayCountVo("el-icon-goods","销售量","0",numCount.getSalesNum());
TbOrderPayCountVo refNum =new TbOrderPayCountVo("el-icon-goods","销售","0",numCount.getRefNum());
TbOrderPayCountVo salesNum =new TbOrderPayCountVo("el-icon-goods","销售量","0",numCount.getSalesNum()-numCount.getRefNum());
TbOrderPayCountVo refNum =new TbOrderPayCountVo("el-icon-goods","退单","0",numCount.getRefNum());
list.add(salesNum);
list.add(refNum);
return list;

View File

@@ -78,7 +78,6 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
criteria.setOrderType(null);
}
}
// Page<TbOrderInfo> page = tbOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
Page<TbOrderInfo> page = tbOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> {
Predicate predicate = QueryHelp.getPredicate(root, criteria, criteriaBuilder);
// 追加校验参数 status不为空 且 source不为空 不查询状态为 "refund" 的
@@ -91,16 +90,29 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
List<TbOrderInfoVo> orderInfoVoList = new ArrayList<>();
for (TbOrderInfo tbOrderInfo : page.getContent()) {
TbOrderInfoVo orderInfoVo = new TbOrderInfoVo();
List<TbOrderDetail> details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId());
BigDecimal refundAmount = BigDecimal.ZERO;
for (TbOrderDetail detail : details) {
if (tbOrderInfo.getStatus().equals("refund")) {
refundAmount = refundAmount.add(detail.getPriceAmount());
List<TbOrderDetail> details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId());
if (!tbOrderInfo.getOrderType().equals("return")) {
List<TbOrderInfo> tbOrderInfos = tbOrderInfoRepository.selTbOrdersBysource(tbOrderInfo.getId(), tbOrderInfo.getShopId());
Map<Integer, Integer> map;
if (!CollectionUtils.isEmpty(tbOrderInfos)) {
List<Integer> ids = tbOrderInfos.stream().map(TbOrderInfo::getId).collect(Collectors.toList());
List<TbOrderDetail> refundOrderDetail = tbOrderDetailRepository.searchDetailByOrderIds(ids);
map = refundOrderDetail.stream().collect(Collectors.groupingBy(TbOrderDetail::getProductSkuId, Collectors.summingInt(TbOrderDetail::getNum)));
refundAmount = tbOrderInfos.stream().map(TbOrderInfo::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
} else {
if (detail.getStatus().equals("refund")) {
refundAmount = refundAmount.add(detail.getPriceAmount());
}
map = new HashMap<>();
}
details.parallelStream().forEach(detail -> {
Integer refundNumber = map.get(detail.getProductSkuId());
if (refundNumber != null) {
detail.setRefundNumber(refundNumber);
}
});
}else {
details.parallelStream().forEach(detail -> {
detail.setRefundNumber(detail.getNum());
});
}
orderInfoVo.setDetailList(details);
BeanUtils.copyProperties(tbOrderInfo, orderInfoVo);
@@ -150,7 +162,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
payRufund.setIcon("https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/20240319/5741608662244b878762c61bb37c95c9.png");
result.add(payRufund);
}
payCountVoList.add(0,new TbOrderPayCountVo("el-icon-s-goods","总金额",null,totalPayAmount));
result.add(0, new TbOrderPayCountVo("https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/20240625/fa0e5b24884d4ac2a18973b3855e5309.png", "总金额", null, totalPayAmount));
return result;
}
@@ -193,28 +205,19 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
dto.setPayType(tbOrderInfo.getSendType());
break;
}
}else {
} else {
if (dto.getStatus().equals("refund")) {
dto.setPayType("退单");
}
}
List<TbOrderDetail> details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId());
dto.setIsRefund(0);
BigDecimal refundAmount = BigDecimal.ZERO;
for (TbOrderDetail detail : details) {
if (tbOrderInfo.getStatus().equals("refund")) {
refundAmount = refundAmount.add(detail.getPriceAmount());
} else {
if (detail.getStatus().equals("refund")) {
refundAmount = refundAmount.add(detail.getPriceAmount());
}
}
}
int refund = tbOrderInfoRepository.isRefund(id, tbOrderInfo.getShopId());
if (refund > 0) {
dto.setRefundAmount(BigDecimal.ZERO);
List<TbOrderInfo> tbOrderInfos = tbOrderInfoRepository.selTbOrdersBysource(tbOrderInfo.getId(), tbOrderInfo.getShopId());
if(!CollectionUtils.isEmpty(tbOrderInfos)){
dto.setIsRefund(1);
dto.setRefundAmount(tbOrderInfos.stream().map(TbOrderInfo::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
}
dto.setRefundAmount(refundAmount);
dto.setDetailList(details);
return dto;
}