|
|
@@ -489,7 +489,35 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
public R<IPage<SaleDetailDto>> saleDetail(SaleDetail saleDetailDto, IPage<SaleDetailDto> page) {
|
|
|
saleDetailDto.setTenantId(AuthUtil.getTenantId());
|
|
|
saleDetailDto.setSalesCompanyId(AuthUtil.getDeptId());
|
|
|
- return R.data(orderItemsService.saleDetail(saleDetailDto, page));
|
|
|
+ IPage<SaleDetailDto> saleDetailDtoIPage = orderItemsService.saleDetail(saleDetailDto, page);
|
|
|
+ if (!saleDetailDtoIPage.getRecords().isEmpty()) {
|
|
|
+ String billNo = saleDetailDtoIPage.getRecords().stream().map(SaleDetailDto::getOrdNo).distinct().collect(Collectors.joining(","));
|
|
|
+ List<PjOrder> pjOrderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
|
|
|
+ .eq(PjOrder::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjOrder::getIsDeleted, 0)
|
|
|
+ .eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())
|
|
|
+ .apply("find_in_set(ord_no,'" + billNo + "')"));
|
|
|
+ for (PjOrder item : pjOrderList) {
|
|
|
+ List<SaleDetailDto> saleDetailDtoList = saleDetailDtoIPage.getRecords().stream()
|
|
|
+ .filter(e -> e.getOrdNo().equals(item.getOrdNo())).collect(Collectors.toList());
|
|
|
+ if (!saleDetailDtoList.isEmpty()) {
|
|
|
+ BigDecimal amount = item.getPaymentAmountTl();
|
|
|
+ for (SaleDetailDto items : saleDetailDtoList) {
|
|
|
+ if (saleDetailDtoList.size() == 1) {
|
|
|
+ items.setSubTotalMoney(items.getSubTotalMoney().add(new BigDecimal("5.00")));
|
|
|
+ }
|
|
|
+ if (amount.compareTo(items.getSubTotalMoney()) >= 0) {
|
|
|
+ items.setBalanceAmount(amount.subtract(items.getSubTotalMoney()));
|
|
|
+ amount = amount.subtract(items.getSubTotalMoney());
|
|
|
+ } else {
|
|
|
+ items.setBalanceAmount(items.getSubTotalMoney().subtract(amount));
|
|
|
+ amount = new BigDecimal("0.00");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return R.data(saleDetailDtoIPage);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -540,6 +568,34 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
public List<SaleDetailDto> saleDetailExport(SaleDetail saleDetailDto) {
|
|
|
saleDetailDto.setTenantId(AuthUtil.getTenantId());
|
|
|
saleDetailDto.setSalesCompanyId(AuthUtil.getDeptId());
|
|
|
+ List<SaleDetailDto> saleDetailDtoIPage = orderItemsService.saleDetailList(saleDetailDto);
|
|
|
+ if (!saleDetailDtoIPage.isEmpty()) {
|
|
|
+ String billNo = saleDetailDtoIPage.stream().map(SaleDetailDto::getOrdNo).distinct().collect(Collectors.joining(","));
|
|
|
+ List<PjOrder> pjOrderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
|
|
|
+ .eq(PjOrder::getTenantId, AuthUtil.getDeptId())
|
|
|
+ .eq(PjOrder::getIsDeleted, 0)
|
|
|
+ .eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())
|
|
|
+ .apply("find_in_set(ord_no,'" + billNo + "')"));
|
|
|
+ for (PjOrder item : pjOrderList) {
|
|
|
+ List<SaleDetailDto> saleDetailDtoList = saleDetailDtoIPage.stream()
|
|
|
+ .filter(e -> e.getOrdNo().equals(item.getOrdNo())).collect(Collectors.toList());
|
|
|
+ if (!saleDetailDtoList.isEmpty()) {
|
|
|
+ BigDecimal amount = item.getPaymentAmountTl();
|
|
|
+ for (SaleDetailDto items : saleDetailDtoList) {
|
|
|
+ if (saleDetailDtoList.size() == 1) {
|
|
|
+ items.setSubTotalMoney(items.getSubTotalMoney().add(new BigDecimal("5.00")));
|
|
|
+ }
|
|
|
+ if (amount.compareTo(items.getSubTotalMoney()) >= 0) {
|
|
|
+ items.setBalanceAmount(amount.subtract(items.getSubTotalMoney()));
|
|
|
+ amount = amount.subtract(items.getSubTotalMoney());
|
|
|
+ } else {
|
|
|
+ items.setBalanceAmount(items.getSubTotalMoney().subtract(amount));
|
|
|
+ amount = new BigDecimal("0.00");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
return orderItemsService.saleDetailList(saleDetailDto);
|
|
|
}
|
|
|
}
|