Merge branch 'ww' into test
This commit is contained in:
@@ -20,13 +20,10 @@ import java.util.Map;
|
||||
public interface SummaryService {
|
||||
Map<String,Object> trade(BaseQueryDto param);
|
||||
|
||||
// SummaryVO selectSummary(Integer shop);
|
||||
Map<String,Object> selectSummaryDate(Integer shopId, Integer day);
|
||||
Map<String,Object> productSaleDate(Integer shopId, Integer day,Integer page,Integer size);
|
||||
|
||||
Map<String,Object> selectSummaryToday(Integer shopId);
|
||||
|
||||
Map<String,Object> selectSummaryAmount(Integer shopId, Integer day);
|
||||
Map<String,Object> selectSummaryProduct(Integer shopId, Integer day,Integer page,Integer size);
|
||||
|
||||
Map<String,Object> selectSummaryPayType(Integer shopId, Integer day);
|
||||
|
||||
|
||||
@@ -29,7 +29,6 @@ import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.persistence.Tuple;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
@@ -71,6 +70,7 @@ public class SummaryServiceImpl implements SummaryService {
|
||||
if (ObjectUtil.isNull(param.getShopId())) {
|
||||
throw new BadRequestException("参数不合法");
|
||||
}
|
||||
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
Map<String, Object> sale = new HashMap<>();
|
||||
Map<String, Object> vip = new HashMap<>();
|
||||
@@ -83,7 +83,8 @@ public class SummaryServiceImpl implements SummaryService {
|
||||
//会员 充值金额 inAmount /退款金额 outAmount /会员消费金额 useAmount /会员消费笔数 useNum
|
||||
Map<String, Object> flowMap = tbShopUserFlowMapper.tradeIndexFlow(param.getShopId(), DateUtil.getStrTime(param.getStartTime()), DateUtil.getStrTime(param.getEndTime()));
|
||||
// 新增会员数
|
||||
Integer newFlow = tbShopUserFlowMapper.tradeIndexNewFlow(param.getShopId(), DateUtil.getStrTime(param.getStartTime()), DateUtil.getStrTime(param.getEndTime()));
|
||||
Integer newFlow = tbShopUserRepository.newFlow(param.getShopId().toString(), DateUtil.getStrTime(param.getStartTime()), DateUtil.getStrTime(param.getEndTime()));
|
||||
// Integer newFlow = tbShopUserFlowMapper.tradeIndexNewFlow(param.getShopId(), DateUtil.getStrTime(param.getStartTime()), DateUtil.getStrTime(param.getEndTime()));
|
||||
//台桌数
|
||||
int tables = tbShopTableRepository.countAllByShopId(param.getShopId());
|
||||
//收款金额
|
||||
@@ -96,14 +97,55 @@ public class SummaryServiceImpl implements SummaryService {
|
||||
sale.put("inAmount", flowMap.get("inAmount")); //会员 充值金额
|
||||
sale.put("outAmount", flowMap.get("outAmount"));//会员 退款金额
|
||||
|
||||
sale.put("incomeAmountAll",incomeAmount.add(new BigDecimal(flowMap.get("inAmount").toString())));//总实收 销售实收+会员实收
|
||||
|
||||
sale.put("incomeAmountAll",incomeAmount);//总实收 销售实收
|
||||
List<TbOrderPayCountVo> payCountVos = initPaysCount();
|
||||
List<TbOrderPayCountVo> payCounts = tbOrderInfoRepository.queryTbOrderPayCount(
|
||||
param.getShopId().toString(), null, param.getStartTime().getTime(), param.getEndTime().getTime());
|
||||
Map<String, BigDecimal> payCountMap = payCounts.stream()
|
||||
.collect(Collectors.toMap(
|
||||
TbOrderPayCountVo::getPayType,
|
||||
vo -> {
|
||||
BigDecimal payAmount = new BigDecimal(vo.getPayAmount().toString());
|
||||
BigDecimal saveAmount = new BigDecimal(vo.getSaveAmount().toString());
|
||||
return payAmount.subtract(saveAmount);
|
||||
},
|
||||
BigDecimal::add
|
||||
));
|
||||
BigDecimal vipSaveAmount = tbShopUserFlowService.sumUserFlowAmountByConditions(
|
||||
param.getShopId().longValue(), DateUtil.getStrTime(param.getStartTime()), DateUtil.getStrTime(param.getEndTime()));
|
||||
for (TbOrderPayCountVo payCountVo : payCountVos) {
|
||||
BigDecimal payAmount = new BigDecimal(payCountVo.getPayAmount().toString());
|
||||
switch (payCountVo.getPayType()){
|
||||
case "微信小程序":
|
||||
payCountVo.setPayAmount(payAmount.add(payCountMap.get("wx_lite")));
|
||||
break;
|
||||
case "支付宝小程序":
|
||||
payCountVo.setPayAmount(payAmount.add(payCountMap.get("ali_lite")));
|
||||
break;
|
||||
case "主扫收款":
|
||||
payCountVo.setPayAmount(payAmount.add(payCountMap.get("scanCode")));
|
||||
break;
|
||||
case "收款码收款":
|
||||
payCountVo.setPayAmount(payAmount.add(payCountMap.get("ALIPAY")).add(payCountMap.get("WECHAT")));
|
||||
break;
|
||||
case "现金":
|
||||
payCountVo.setPayAmount(payAmount.add(payCountMap.get("cash")));
|
||||
break;
|
||||
case "会员":
|
||||
payCountVo.setPayAmount(payAmount.add(payCountMap.get("deposit")));
|
||||
break;
|
||||
case "充值":
|
||||
payCountVo.setPayAmount(payAmount.add(vipSaveAmount));
|
||||
break;
|
||||
}
|
||||
}
|
||||
sale.put("payCount",payCountVos);
|
||||
result.put("sale",sale);
|
||||
vip.put("useAmount", flowMap.get("useAmount"));//会员消费金额
|
||||
vip.put("newFlow",newFlow);//新增会员数
|
||||
vip.put("useNum",flowMap.get("useNum"));//会员消费笔数
|
||||
result.put("vip",vip);
|
||||
BigDecimal saleAmount = new BigDecimal(orderMap.get("saleAmount").toString()).add(refundAmount);
|
||||
BigDecimal saleAmount = new BigDecimal(orderMap.get("saleAmount").toString()).subtract(new BigDecimal(orderMap.get("saveAmount").toString()));
|
||||
//客单价
|
||||
if(saleAmount.compareTo(BigDecimal.ZERO) == 0){
|
||||
count.put("unitPrice",BigDecimal.ZERO);
|
||||
@@ -122,103 +164,23 @@ public class SummaryServiceImpl implements SummaryService {
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<TbOrderPayCountVo> initPaysCount(){
|
||||
List<TbOrderPayCountVo> payCountVos = new ArrayList<>();
|
||||
payCountVos.add(new TbOrderPayCountVo("https://cashier-oss.oss-cn-beijing.aliyuncs.com/static/wx.png","微信小程序","1",BigDecimal.ZERO));
|
||||
payCountVos.add(new TbOrderPayCountVo("https://cashier-oss.oss-cn-beijing.aliyuncs.com/static/ali.png","支付宝小程序","1",BigDecimal.ZERO));
|
||||
payCountVos.add(new TbOrderPayCountVo("https://cashier-oss.oss-cn-beijing.aliyuncs.com/static/scan.png","主扫收款","1",BigDecimal.ZERO));
|
||||
payCountVos.add(new TbOrderPayCountVo("https://cashier-oss.oss-cn-beijing.aliyuncs.com/static/bscan.png","收款码收款","1",BigDecimal.ZERO));
|
||||
payCountVos.add(new TbOrderPayCountVo("https://cashier-oss.oss-cn-beijing.aliyuncs.com/static/cash.png","现金","1",BigDecimal.ZERO));
|
||||
payCountVos.add(new TbOrderPayCountVo("https://cashier-oss.oss-cn-beijing.aliyuncs.com/static/vipIn.png","充值","1",BigDecimal.ZERO));
|
||||
// payCountVos.add(new TbOrderPayCountVo("","会员支付","1",BigDecimal.ZERO));
|
||||
return payCountVos;
|
||||
};
|
||||
|
||||
|
||||
// @Override
|
||||
// public SummaryVO selectSummary(Integer shopId) {
|
||||
// SummaryVO summaryVO = new SummaryVO();
|
||||
// //支付笔数,
|
||||
// Tuple result = tbOrderInfoRepository.countByShopId(shopId.toString());
|
||||
// summaryVO.setPaymentsNumber(result.get(0, Long.class) == null ? 0L : result.get(0, Long.class));
|
||||
// summaryVO.setTotalSales(result.get(1, BigDecimal.class) == null ? new BigDecimal("0") : result.get(1, BigDecimal.class));
|
||||
// if (summaryVO.getPaymentsNumber() == 0) {
|
||||
// summaryVO.setAverageSales(new BigDecimal("0"));
|
||||
// } else {
|
||||
// summaryVO.setAverageSales(summaryVO.getTotalSales().divide(new BigDecimal(summaryVO.getPaymentsNumber()), 2, RoundingMode.DOWN));
|
||||
// }
|
||||
// //用户数
|
||||
// Tuple count = tbShopUserRepository.searchByCount(shopId.toString());
|
||||
// summaryVO.setTotalUser(count == null ? 0L : count.get(0, Long.class));
|
||||
// //支付笔数柱形图
|
||||
// List<Object[]> objects = tbOrderInfoRepository.sumByDateOrderNum(shopId.toString(), DateUtil.getDate30DaysAgo(), DateUtil.getDayEnd());
|
||||
// List<CountDateVO> countDateList = new ArrayList<>();
|
||||
// for (Object[] o : objects) {
|
||||
// CountDateVO countDateVO = new CountDateVO();
|
||||
// BigInteger integers = (BigInteger) o[0];
|
||||
// countDateVO.setCount(new BigDecimal(integers.toString()));
|
||||
// countDateVO.setTradeDay((String) o[1]);
|
||||
// countDateList.add(countDateVO);
|
||||
// }
|
||||
// //填充日期
|
||||
// Map<String, CountDateVO> dataMap = new HashMap<>();
|
||||
// for (CountDateVO entry : countDateList) {
|
||||
// String tradeDay = entry.getTradeDay();
|
||||
// BigDecimal countOrder = entry.getCount();
|
||||
// dataMap.put(tradeDay, new CountDateVO(tradeDay, countOrder));
|
||||
// }
|
||||
// // 获取今天的日期
|
||||
// LocalDate today = LocalDate.now();
|
||||
// // 定义日期格式
|
||||
// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
// // 转换为字符串
|
||||
// List<CountDateVO> countDateLists = new ArrayList<>();
|
||||
// for (int i = 0; i < 30; i++) {
|
||||
// LocalDate tradeDayLocalDate = today.minusDays(i);
|
||||
// String tradeDayString = tradeDayLocalDate.format(formatter);
|
||||
// CountDateVO countDateVO;
|
||||
// // 检查数据Map中是否存在该日期的数据
|
||||
// if (dataMap.containsKey(tradeDayString)) {
|
||||
// countDateVO = dataMap.get(tradeDayString);
|
||||
// } else {
|
||||
// // 如果不存在,则创建新的SumDateVO对象,amount设为0
|
||||
// countDateVO = new CountDateVO(tradeDayString, BigDecimal.ZERO);
|
||||
// }
|
||||
// // 将SumDateVO对象添加到列表中
|
||||
// countDateLists.add(countDateVO);
|
||||
// }
|
||||
// countDateLists.sort((a, b) -> a.getTradeDay().compareTo(b.getTradeDay()));
|
||||
// summaryVO.setCountDateList(countDateLists);
|
||||
// //访问量
|
||||
// Tuple tuple = tbTokenRepository.countByAccountId(shopId);
|
||||
// summaryVO.setTotalVisits(tuple == null ? 0L : tuple.get(0, Long.class));
|
||||
// //访问量柱状图
|
||||
// List<Object[]> objectsVisits = tbTokenRepository.countByMonth(shopId, DateUtil.getDate30DaysAgo(), DateUtil.getDayEnd());
|
||||
// List<CountVisitsVO> visitsList = new ArrayList<>();
|
||||
// for (Object[] o : objectsVisits) {
|
||||
// CountVisitsVO countDateVO = new CountVisitsVO();
|
||||
// countDateVO.setCount((BigInteger) o[0]);
|
||||
// countDateVO.setTradeDay((String) o[1]);
|
||||
// visitsList.add(countDateVO);
|
||||
// }
|
||||
// //填充日期
|
||||
// Map<String, CountVisitsVO> dataVisitsMap = new HashMap<>();
|
||||
// for (CountVisitsVO entry : visitsList) {
|
||||
// String tradeDay = entry.getTradeDay();
|
||||
// BigInteger countOrder = entry.getCount();
|
||||
// dataVisitsMap.put(tradeDay, new CountVisitsVO(tradeDay, countOrder));
|
||||
// }
|
||||
// // 转换为字符串
|
||||
// List<CountVisitsVO> countVisitsLists = new ArrayList<>();
|
||||
// for (int i = 0; i < 30; i++) {
|
||||
// LocalDate tradeDayLocalDate = today.minusDays(i);
|
||||
// String tradeDayString = tradeDayLocalDate.format(formatter);
|
||||
// CountVisitsVO countDateVO;
|
||||
// // 检查数据Map中是否存在该日期的数据
|
||||
// if (dataVisitsMap.containsKey(tradeDayString)) {
|
||||
// countDateVO = dataVisitsMap.get(tradeDayString);
|
||||
// } else {
|
||||
// // 如果不存在,则创建新的SumDateVO对象,amount设为0
|
||||
// countDateVO = new CountVisitsVO(tradeDayString, BigInteger.ZERO);
|
||||
// }
|
||||
// // 将SumDateVO对象添加到列表中
|
||||
// countVisitsLists.add(countDateVO);
|
||||
// }
|
||||
// countVisitsLists.sort((a, b) -> a.getTradeDay().compareTo(b.getTradeDay()));
|
||||
// summaryVO.setVisitsCountList(countVisitsLists);
|
||||
// return summaryVO;
|
||||
// }
|
||||
|
||||
@Override
|
||||
public Map<String, Object> selectSummaryDate(Integer shopId, Integer day) {
|
||||
public Map<String, Object> productSaleDate(Integer shopId, Integer day,Integer page,Integer size) {
|
||||
Pageable pageable = PageRequest.of(page, size);
|
||||
Date startTime = new Date();
|
||||
Date endTime = new Date();
|
||||
if (day == 7) {
|
||||
@@ -235,86 +197,18 @@ public class SummaryServiceImpl implements SummaryService {
|
||||
endTime = DateUtil.getDayEnd();
|
||||
}
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
Tuple tuple = detailRepository.sumByShopId(shopId, startTime, endTime);
|
||||
List<Object[]> objects = detailRepository.sumByShopIdGroup(shopId, startTime, endTime);
|
||||
//List<Object[]> objects = shopUserDutyDetailRepository.searchByDutyGroup(shopId, DateUtil.getDate30DaysAgo(), DateUtil.getDayEnd());
|
||||
List<CountDateVO> numList = new ArrayList<>();
|
||||
for (Object[] o : objects) {
|
||||
CountDateVO countDateVO = new CountDateVO();
|
||||
BigDecimal integers = (BigDecimal) o[0];
|
||||
countDateVO.setCount(new BigDecimal(integers.toString()));
|
||||
Date date = (Date) o[2];
|
||||
countDateVO.setTradeDay(date.toString());
|
||||
numList.add(countDateVO);
|
||||
}
|
||||
List<Object[]> objects2 = tbOrderInfoRepository.queryTbOrderPaySumByDay(shopId.toString(), startTime, endTime);
|
||||
List<CountDateVO> amountList = new ArrayList<>();
|
||||
for (Object[] o : objects2) {
|
||||
CountDateVO countDateVO = new CountDateVO();
|
||||
countDateVO.setCount((BigDecimal) o[0]);
|
||||
countDateVO.setTradeDay((String) o[1]);
|
||||
amountList.add(countDateVO);
|
||||
}
|
||||
map.put("productCount", tuple == null ? 0 : tuple.get(0, BigDecimal.class));
|
||||
map.put("productSum", tuple == null ? 0 : tuple.get(1, BigInteger.class));
|
||||
map.put("numList", numList);
|
||||
map.put("amountList", amountList);
|
||||
Page<TbOrderSalesCountByDayVo> tbOrderSalesCountByDayVos = detailRepository.queryTbOrderSalesCountByDay(shopId, null, null, startTime, endTime,pageable);
|
||||
TbOrderSalesCountByDayVo tbOrderSalesCountByDayVo = detailRepository.queryTbOrderSalesCountByDaysummaryCount(shopId, null, null, startTime, endTime);
|
||||
TbOrderPayCountVo zong =new TbOrderPayCountVo("el-icon-coin","总金额","1",tbOrderSalesCountByDayVo.getSalesAmount());
|
||||
TbOrderPayCountVo xiaoliang =new TbOrderPayCountVo("el-icon-goods","销售量","0",tbOrderSalesCountByDayVo.getSalesNum());
|
||||
List<CountStockByDayVo> countStockByDayVos = tbOrderDetailRepository.countStockByDay(shopId, startTime, endTime);
|
||||
map.put("productCount", xiaoliang);
|
||||
map.put("productSum", zong);
|
||||
map.put("countList", countStockByDayVos) ;
|
||||
map.put("productList", tbOrderSalesCountByDayVos);
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> selectSummaryProduct(Integer shopId, Integer day, Integer currentPage, Integer currentSize) {
|
||||
//根据时间商品排行
|
||||
currentPage = (currentPage - 1) * currentSize;
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
Date startTime;
|
||||
Date endTime;
|
||||
if (day == 7) {
|
||||
startTime = DateUtil.getDate7DaysAgo();
|
||||
endTime = DateUtil.getDayEnd();
|
||||
} else if (day == 30) {
|
||||
startTime = DateUtil.getDate30DaysAgo();
|
||||
endTime = DateUtil.getDayEnd();
|
||||
} else if (day == 360) {
|
||||
startTime = DateUtil.getBeginDayOfYear();
|
||||
endTime = DateUtil.getEndDayOfYear();
|
||||
} else if (day == 1) {
|
||||
|
||||
startTime = DateUtil.getDayBegin();
|
||||
log.info("1天时间" + startTime.toString());
|
||||
endTime = DateUtil.getDayEnd();
|
||||
log.info("1天时间末" + endTime.toString());
|
||||
} else {
|
||||
throw new BadRequestException("日期有误");
|
||||
}
|
||||
Pageable pageable = PageRequest.of(0, 5);
|
||||
List<Object[]> objects = tbOrderInfoRepository.queryTbOrderPayCountByDayExt(shopId, startTime, endTime, currentPage, currentSize);
|
||||
|
||||
List<ProductExtVO> list = new ArrayList<>();
|
||||
for (Object[] o : objects) {
|
||||
ProductExtVO productVO = new ProductExtVO();
|
||||
productVO.setProductId((BigInteger) o[0]);
|
||||
productVO.setProductName((String) o[1]);
|
||||
productVO.setProductNum((BigDecimal) o[2]);
|
||||
productVO.setAmount((BigDecimal) o[3]);
|
||||
list.add(productVO);
|
||||
}
|
||||
|
||||
//分页数据
|
||||
Tuple tuple1 = detailRepository.searchCount(shopId, startTime, endTime);
|
||||
//销售数量
|
||||
Tuple payCount = detailRepository.sumByShopId(shopId, startTime, endTime);
|
||||
//销售金额
|
||||
Long startTimeLong = DateUtil.convertDateToTimestamp(startTime);
|
||||
Long endTimeLong = DateUtil.convertDateToTimestamp(endTime);
|
||||
Tuple paySum = tbOrderInfoRepository.queryPaySumByDayAll(shopId.toString(), startTimeLong, endTimeLong);
|
||||
|
||||
map.put("productCount", payCount == null ? 0 : payCount.get(0, BigDecimal.class));
|
||||
map.put("productSum", paySum == null ? 0 : paySum.get(0, BigDecimal.class));
|
||||
map.put("totalProduct", list);
|
||||
map.put("total", tuple1 == null ? 0 : tuple1.get(0, BigInteger.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> selectSummaryAmount(Integer shopId, Integer day) {
|
||||
@@ -373,18 +267,6 @@ public class SummaryServiceImpl implements SummaryService {
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> selectSummaryToday(Integer shopId) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
Tuple tuple = tbOrderInfoRepository.sumByShopIdToday(shopId.toString(), DateUtil.getDayBegin(), DateUtil.getDayEnd());
|
||||
map.put("paymentsNumberToday", tuple == null ? 0L : tuple.get(0, BigInteger.class));
|
||||
map.put("totalSalesToday", tuple == null ? new BigDecimal("0") : tuple.get(1, BigDecimal.class));
|
||||
Tuple tuple1 = tbShopUserRepository.searchByCountToday(shopId.toString(), DateUtil.getTodayStartTimestamp(), DateUtil.getTodayEndTimestamp());
|
||||
map.put("userToday", tuple1.get(0, Long.class));
|
||||
Tuple tupleToday = tbTokenRepository.countByAccountId(shopId, DateUtil.getDayBegin(), DateUtil.getDayEnd());
|
||||
map.put("totalVisitsToday", tupleToday == null ? 0 : tupleToday.get(0, Long.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> selectSummaryPayType(Integer shopId, Integer day) {
|
||||
@@ -416,142 +298,94 @@ public class SummaryServiceImpl implements SummaryService {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<TbOrderPayCountVo> summaryCount(ShopSummaryDto summaryDto) {
|
||||
List<TbOrderPayCountVo> list = new ArrayList<>();
|
||||
|
||||
summaryDto.setStartTime(DateUtil.toDate(DateUtil.fromTimeStamp(1704038400L)));
|
||||
summaryDto.setEndTime(new Date());
|
||||
|
||||
TbOrderSalesCountByDayVo tbOrderSalesCountByDayVo = detailRepository.queryTbOrderSalesCountByDaysummaryCount(Integer.valueOf(summaryDto.getShopId()), summaryDto.getCateId(), summaryDto.getProName(), summaryDto.getStartTime(), summaryDto.getEndTime());
|
||||
TbOrderPayCountVo zongShuLiang = new TbOrderPayCountVo("el-icon-goods", "总数量", "0", tbOrderSalesCountByDayVo.getSalesNum() + tbOrderSalesCountByDayVo.getRefNum());
|
||||
TbOrderPayCountVo zong = new TbOrderPayCountVo("el-icon-coin", "总金额", "1", tbOrderSalesCountByDayVo.getSalesAmount());
|
||||
TbOrderPayCountVo tuidan = new TbOrderPayCountVo("el-icon-goods", "退单量", "0", tbOrderSalesCountByDayVo.getRefNum());
|
||||
TbOrderPayCountVo tuikuan = new TbOrderPayCountVo("el-icon-money", "退款金额", "1", tbOrderSalesCountByDayVo.getRefAmount());
|
||||
// TbOrderPayCountVo xiaoliang =new TbOrderPayCountVo("el-icon-goods","销售量","0",tbOrderSalesCountByDayVo.getSalesNum());
|
||||
|
||||
list.add(zong);
|
||||
list.add(tuikuan);
|
||||
// list.add(xiaoliang);
|
||||
list.add(zongShuLiang);
|
||||
list.add(tuidan);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Page<T> selectSummaryByDay(ShopSummaryDto summaryDto, Integer page, Integer size) {
|
||||
Pageable pageable = PageRequest.of(page, size);
|
||||
if (StringUtils.isBlank(summaryDto.getCateId())) {
|
||||
summaryDto.setCateId(null);
|
||||
}
|
||||
if (summaryDto.getType() != null && summaryDto.getType() == 1) {//金额
|
||||
Long start = 1704038400000L;
|
||||
Long end = Instant.now().toEpochMilli();
|
||||
if (summaryDto.getStartTime() != null && summaryDto.getEndTime() != null) {
|
||||
start = summaryDto.getStartTime().getTime();
|
||||
end = summaryDto.getEndTime().getTime();
|
||||
}
|
||||
Page<T> tPage = (Page<T>) tbOrderInfoRepository.queryTbOrderPayCountByDay(summaryDto.getShopId(), start, end, pageable);
|
||||
|
||||
tPage.getContent().forEach(t -> {
|
||||
TbOrderPayCountByDayVo tbOrderPayCountByDayVo = (TbOrderPayCountByDayVo) t;
|
||||
|
||||
BigDecimal recharge = tbShopUserFlowService.sumUserFlowAmountByConditions(Long.valueOf(summaryDto.getShopId()),
|
||||
tbOrderPayCountByDayVo.getTradeDay() + " 00:00:00",
|
||||
tbOrderPayCountByDayVo.getTradeDay() + " 23:59:59");
|
||||
tbOrderPayCountByDayVo.setRecharge(recharge);
|
||||
|
||||
BigDecimal decimal = tbOrderInfoRepository.queryRefundOrderAmountByTradeDay(summaryDto.getShopId(), tbOrderPayCountByDayVo.getTradeDay());
|
||||
tbOrderPayCountByDayVo.setRefund(decimal == null ? new BigDecimal("0.00") : decimal);
|
||||
|
||||
BigDecimal total = (BigDecimal) tbOrderPayCountByDayVo.getTotal();
|
||||
BigDecimal refund = (BigDecimal) tbOrderPayCountByDayVo.getRefund();
|
||||
tbOrderPayCountByDayVo.setTotal(total.subtract(refund));
|
||||
});
|
||||
|
||||
return tPage;
|
||||
} else {//销量
|
||||
if (summaryDto.getStartTime() == null || summaryDto.getEndTime() == null) {
|
||||
summaryDto.setStartTime(DateUtil.toDate(DateUtil.fromTimeStamp(1704038400L)));
|
||||
summaryDto.setEndTime(new Date());
|
||||
}
|
||||
return (Page<T>) detailRepository.queryTbOrderSalesCountByDay(Integer.valueOf(summaryDto.getShopId()), summaryDto.getCateId(), summaryDto.getProName(), summaryDto.getStartTime(), summaryDto.getEndTime(), pageable);
|
||||
if (summaryDto.getStartTime() == null || summaryDto.getEndTime() == null) {
|
||||
summaryDto.setStartTime(DateUtil.toDate(DateUtil.fromTimeStamp(1704038400L)));
|
||||
summaryDto.setEndTime(new Date());
|
||||
}
|
||||
Page<TbOrderSalesCountByDayV2Vo> products = detailRepository.queryTbOrderSalesCountByProduct(Integer.valueOf(summaryDto.getShopId()), summaryDto.getCateId(), summaryDto.getProName(), summaryDto.getStartTime(), summaryDto.getEndTime(), pageable);
|
||||
for (TbOrderSalesCountByDayV2Vo product : products) {
|
||||
List<TbOrderSalesCountByDayV2Vo> skus = detailRepository.queryTbOrderSalesCountBySku(Integer.valueOf(summaryDto.getShopId()), product.getProductId(), summaryDto.getStartTime(), summaryDto.getEndTime());
|
||||
product.setSkus(skus);
|
||||
}
|
||||
return (Page<T>)products;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void download(ShopSummaryDto summaryDto, HttpServletResponse response) throws IOException {
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
if (StringUtils.isBlank(summaryDto.getCateId())) {
|
||||
summaryDto.setCateId(null);
|
||||
}
|
||||
if (summaryDto.getStartTime() == null || summaryDto.getEndTime() == null) {
|
||||
summaryDto.setStartTime(DateUtil.toDate(DateUtil.fromTimeStamp(1704038400L)));
|
||||
summaryDto.setEndTime(new Date());
|
||||
}
|
||||
|
||||
if (summaryDto.getType() != null && summaryDto.getType() == 1) {//金额
|
||||
Long start = 1704038400000L;
|
||||
Long end = Instant.now().toEpochMilli();
|
||||
if (summaryDto.getStartTime() != null && summaryDto.getEndTime() != null) {
|
||||
start = summaryDto.getStartTime().getTime();
|
||||
end = summaryDto.getEndTime().getTime();
|
||||
List<TbOrderSalesCountByDayV2Vo> products = detailRepository.queryTbOrderSalesCountByProduct(Integer.valueOf(summaryDto.getShopId()), summaryDto.getCateId(), summaryDto.getProName(), summaryDto.getStartTime(), summaryDto.getEndTime());
|
||||
for (TbOrderSalesCountByDayV2Vo product : products) {
|
||||
if(product.getTypeEnum().equals("sku")){
|
||||
List<TbOrderSalesCountByDayV2Vo> skus = detailRepository.queryTbOrderSalesCountBySku(Integer.valueOf(summaryDto.getShopId()), product.getProductId(), summaryDto.getStartTime(), summaryDto.getEndTime());
|
||||
product.setSkus(skus);
|
||||
}
|
||||
List<TbOrderPayCountByDayVo> tbOrderPayCountByDayVos = tbOrderInfoRepository.queryTbOrderPayCountByDay(summaryDto.getShopId(), start, end);
|
||||
for (TbOrderPayCountByDayVo all : tbOrderPayCountByDayVos) {
|
||||
}
|
||||
for (TbOrderSalesCountByDayV2Vo product : products) {
|
||||
if(product.getTypeEnum().equals("sku")){
|
||||
for (TbOrderSalesCountByDayV2Vo skus : product.getSkus()) {
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
map.put("商品分类", product.getCateName());
|
||||
map.put("商品名称", product.getName());
|
||||
map.put("商品规格", StringUtils.isBlank(skus.getName()) ? "" : skus.getName());
|
||||
map.put("销 售 额", skus.getSalesAmount());
|
||||
map.put("退 单 额", skus.getRefAmount().compareTo(BigDecimal.ZERO) == 0 ? skus.getRefAmount() : "-" + skus.getRefAmount());
|
||||
map.put("实际销量", skus.getSalesNum());
|
||||
map.put("退 单 量", skus.getRefNum());
|
||||
list.add(map);
|
||||
}
|
||||
}else {
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
map.put("总金额", all.getTotal());
|
||||
map.put("现金", all.getCash());
|
||||
map.put("储值卡支付", all.getDeposit());
|
||||
map.put("扫码支付", all.getScanCode());
|
||||
map.put("微信小程序支付", all.getWxLite());
|
||||
map.put("日期", all.getTradeDay());
|
||||
map.put("商品分类", product.getCateName());
|
||||
map.put("商品名称", product.getName());
|
||||
map.put("商品规格", "");
|
||||
map.put("销 售 额", product.getSalesAmount());
|
||||
map.put("退 单 额", product.getRefAmount().compareTo(BigDecimal.ZERO) == 0 ? product.getRefAmount() : "-" + product.getRefAmount());
|
||||
map.put("实际销量", product.getSalesNum());
|
||||
map.put("退 单 量", product.getRefNum());
|
||||
list.add(map);
|
||||
}
|
||||
} else {//销量
|
||||
if (summaryDto.getStartTime() == null || summaryDto.getEndTime() == null) {
|
||||
summaryDto.setStartTime(DateUtil.toDate(DateUtil.fromTimeStamp(1704038400L)));
|
||||
summaryDto.setEndTime(new Date());
|
||||
}
|
||||
List<TbOrderSalesCountByDayVo> tbOrderSalesCountByDayVos = detailRepository
|
||||
.queryTbOrderSalesCountByDay(Integer.valueOf(summaryDto.getShopId()), summaryDto.getCateId(), summaryDto.getProName(), summaryDto.getStartTime(), summaryDto.getEndTime());
|
||||
tbOrderSalesCountByDayVos.forEach(all -> {
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
map.put("商品分类", all.getCateName());
|
||||
map.put("商品名称", all.getProductName());
|
||||
map.put("单 位", all.getUnitName());
|
||||
map.put("商品规格", StringUtils.isBlank(all.getProductSkuName()) ? "" : all.getProductSkuName());
|
||||
map.put("单 价", all.getPrice());
|
||||
map.put("销 售 额", all.getSalesAmount());
|
||||
map.put("退 单 额", all.getRefAmount().compareTo(BigDecimal.ZERO) == 0 ? all.getRefAmount() : "-" + all.getRefAmount());
|
||||
map.put("总 销 量", all.getNum() - all.getRefNum());
|
||||
map.put("实际销量", all.getSalesNum());
|
||||
map.put("退 单 量", all.getRefNum());
|
||||
list.add(map);
|
||||
});
|
||||
|
||||
}
|
||||
FileUtil.downloadExcel(list, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TbOrderPayCountVo> summaryCount(ShopSummaryDto summaryDto) {
|
||||
List<TbOrderPayCountVo> list = new ArrayList<>();
|
||||
Long start = 1704038400000L;
|
||||
Long end = Instant.now().toEpochMilli();
|
||||
if (summaryDto.getStartTime() != null || summaryDto.getEndTime() != null) {
|
||||
start = summaryDto.getStartTime().getTime();
|
||||
end = summaryDto.getEndTime().getTime();
|
||||
} else {
|
||||
summaryDto.setStartTime(DateUtil.toDate(DateUtil.fromTimeStamp(1704038400L)));
|
||||
summaryDto.setEndTime(new Date());
|
||||
}
|
||||
if (summaryDto.getType() != null && summaryDto.getType() == 1) {
|
||||
TbOrderPayCountVo payCount = tbOrderInfoRepository.queryOrderPayCount(summaryDto.getShopId(), start, end);
|
||||
TbOrderPayCountVo refCount = tbOrderInfoRepository.queryTbOrderRefund(summaryDto.getShopId(), null,start, end);
|
||||
payCount.setPayAmount(new BigDecimal(payCount.getPayAmount().toString()).subtract(new BigDecimal(refCount.getPayAmount().toString())));
|
||||
payCount.setIcon("el-icon-coin");
|
||||
list.add(payCount);
|
||||
TbOrderPayCountVo cashCount = tbOrderInfoRepository.queryOrderPayCash(summaryDto.getShopId(), start, end);
|
||||
cashCount.setIcon("el-icon-circle-check");
|
||||
list.add(cashCount);
|
||||
refCount.setPayType("退款金额");
|
||||
refCount.setIcon("el-icon-money");
|
||||
list.add(refCount);
|
||||
|
||||
TbOrderSalesCountByDayVo numCount = detailRepository.queryTbOrderSalesCount(Integer.valueOf(summaryDto.getShopId()), summaryDto.getStartTime(), summaryDto.getEndTime());
|
||||
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);
|
||||
}else {
|
||||
TbOrderSalesCountByDayVo tbOrderSalesCountByDayVo = detailRepository.queryTbOrderSalesCountByDaysummaryCount(Integer.valueOf(summaryDto.getShopId()), summaryDto.getCateId(), summaryDto.getProName(), summaryDto.getStartTime(), summaryDto.getEndTime());
|
||||
TbOrderPayCountVo zong =new TbOrderPayCountVo("el-icon-coin","总金额","1",tbOrderSalesCountByDayVo.getSalesAmount());
|
||||
TbOrderPayCountVo tuikuan =new TbOrderPayCountVo("el-icon-money","退款金额","1",tbOrderSalesCountByDayVo.getRefAmount());
|
||||
TbOrderPayCountVo xiaoliang =new TbOrderPayCountVo("el-icon-goods","销售量","0",tbOrderSalesCountByDayVo.getSalesNum());
|
||||
TbOrderPayCountVo tuidan =new TbOrderPayCountVo("el-icon-goods","退单量","0",tbOrderSalesCountByDayVo.getRefNum());
|
||||
list.add(zong);
|
||||
list.add(tuikuan);
|
||||
list.add(xiaoliang);
|
||||
list.add(tuidan);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ShopTableSaleInfoVo> selectSummaryTable(Integer shopId, Date startTime, Date endTime) {
|
||||
|
||||
@@ -355,12 +355,12 @@ public class StockServiceImpl implements StockService {
|
||||
TbProduct product = new TbProduct();
|
||||
for (StockUpdateValueVO updateValueVO : updateValueVOs) {
|
||||
if (!updateValueVO.isSku()) {
|
||||
if (product.getId()!=null) {
|
||||
if (product.getId() == null) {
|
||||
product = tbProductRepository.getById(Integer.valueOf(updateValueVO.getId()));
|
||||
}
|
||||
productUp(updateValueVO, product);
|
||||
} else {
|
||||
if (product.getId()!=null) {
|
||||
if (product.getId() == null) {
|
||||
product = tbProductRepository.selectBySkuId(Integer.valueOf(updateValueVO.getId()));
|
||||
}
|
||||
productSkuUp(updateValueVO, product);
|
||||
|
||||
Reference in New Issue
Block a user