| | |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.ZoneId; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | |
| | | |
| | | @Override |
| | | public IPage<CustomerTransactionsVo> customewTransactions(Page page, String customerName) { |
| | | return customerMapper.customewTransactions(page, customerName); |
| | | IPage<CustomerTransactionsVo> p = customerMapper.customewTransactions(page, customerName); |
| | | List<CustomerTransactionsVo> records = p.getRecords(); |
| | | if (!CollectionUtils.isEmpty(records)) { |
| | | List<Long> customerIds = records.stream().map(CustomerTransactionsVo::getCustomerId).collect(Collectors.toList()); |
| | | List<Map<String, Object>> shippedAmountList = customerMapper.getShippedAmountByCustomerIds(customerIds); |
| | | Map<Long, BigDecimal> shippedAmountMap = new HashMap<>(); |
| | | for (Map<String, Object> map : shippedAmountList) { |
| | | if (map.get("outboundAmount") != null) { |
| | | shippedAmountMap.put(((Number) map.get("customerId")).longValue(), new BigDecimal(String.valueOf(map.get("outboundAmount")))); |
| | | } |
| | | } |
| | | for (CustomerTransactionsVo vo : records) { |
| | | BigDecimal outboundAmount = shippedAmountMap.getOrDefault(vo.getCustomerId(), BigDecimal.ZERO); |
| | | vo.setShippedAmount(outboundAmount); |
| | | BigDecimal contractAmounts = vo.getContractAmounts() == null ? BigDecimal.ZERO : vo.getContractAmounts(); |
| | | BigDecimal unshippedAmount = contractAmounts.subtract(outboundAmount); |
| | | if (unshippedAmount.compareTo(BigDecimal.ZERO) < 0) { |
| | | unshippedAmount = BigDecimal.ZERO; |
| | | } |
| | | vo.setUnshippedAmount(unshippedAmount); |
| | | } |
| | | } |
| | | return p; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<CustomerTransactionsDetailsVo> customewTransactionsDetails(Page page, Long customerId) { |
| | | return customerMapper.customewTransactionsDetails(page, customerId); |
| | | IPage<CustomerTransactionsDetailsVo> p = customerMapper.customewTransactionsDetails(page, customerId); |
| | | List<CustomerTransactionsDetailsVo> records = p.getRecords(); |
| | | if (!CollectionUtils.isEmpty(records)) { |
| | | List<Long> salesLedgerIds = records.stream().map(CustomerTransactionsDetailsVo::getSalesLedgerId).collect(Collectors.toList()); |
| | | List<Map<String, Object>> shippedAmountList = customerMapper.getShippedAmountBySalesLedgerIds(salesLedgerIds); |
| | | Map<Long, BigDecimal> shippedAmountMap = new HashMap<>(); |
| | | for (Map<String, Object> map : shippedAmountList) { |
| | | if (map.get("outboundAmount") != null) { |
| | | shippedAmountMap.put(((Number) map.get("salesLedgerId")).longValue(), new BigDecimal(String.valueOf(map.get("outboundAmount")))); |
| | | } |
| | | } |
| | | for (CustomerTransactionsDetailsVo vo : records) { |
| | | BigDecimal outboundAmount = shippedAmountMap.getOrDefault(vo.getSalesLedgerId(), BigDecimal.ZERO); |
| | | vo.setShippedAmount(outboundAmount); |
| | | BigDecimal contractAmount = vo.getContractAmount() == null ? BigDecimal.ZERO : vo.getContractAmount(); |
| | | BigDecimal unshippedAmount = contractAmount.subtract(outboundAmount); |
| | | if (unshippedAmount.compareTo(BigDecimal.ZERO) < 0) { |
| | | unshippedAmount = BigDecimal.ZERO; |
| | | } |
| | | vo.setUnshippedAmount(unshippedAmount); |
| | | } |
| | | } |
| | | return p; |
| | | } |
| | | |
| | | /** |