| | |
| | | package com.ruoyi.tms.service.impl; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Collections; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.core.domain.AjaxResult; |
| | | import com.ruoyi.common.enums.SystemDataNoEnum; |
| | | import com.ruoyi.common.exception.ServiceException; |
| | |
| | | return null; |
| | | } |
| | | LambdaQueryWrapper<TmsFinanceDetail> eq = new LambdaQueryWrapper<TmsFinanceDetail>() |
| | | |
| | | .eq(TmsFinanceDetail::getFinanceType, 2) |
| | | .eq(TmsFinanceDetail::getCreateId, SecurityUtils.getUserId()); |
| | | if (dispatchId !=null){ |
| | |
| | | } |
| | | List<TmsFinanceDetail> tmsFinanceDetails = tmsFinanceDetailMapper.selectList(eq); |
| | | if (tmsFinanceDetails != null && !tmsFinanceDetails.isEmpty()){ |
| | | tmsFinanceDetails.forEach(tmsFinanceDetail -> { |
| | | TmsDispatchOrder tmsDispatchOrder = tmsDispatchOrderMapper.selectById(tmsFinanceDetail.getDispatchOrderId()); |
| | | if (tmsDispatchOrder != null){ |
| | | tmsFinanceDetail.setDispatchNo(tmsDispatchOrder.getDispatchNo()); |
| | | tmsFinanceDetail.setCustomerName(tmsDispatchOrder.getCustomerName()); |
| | | } |
| | | }); |
| | | enrichDispatchInfo(tmsFinanceDetails); |
| | | } |
| | | return tmsFinanceDetails; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> getTmsFinanceDetailListPage(Integer dispatchId, Integer pageNum, Integer pageSize) { |
| | | Integer deviceId = userService.getDeviceId(SecurityUtils.getUserId()); |
| | | if (deviceId == null) { |
| | | Map<String, Object> empty = new HashMap<>(); |
| | | empty.put("rows", Collections.emptyList()); |
| | | empty.put("total", 0); |
| | | empty.put("totalAmount", BigDecimal.ZERO); |
| | | return empty; |
| | | } |
| | | |
| | | LambdaQueryWrapper<TmsFinanceDetail> wrapper = new LambdaQueryWrapper<TmsFinanceDetail>() |
| | | .eq(TmsFinanceDetail::getFinanceType, 2) |
| | | .eq(TmsFinanceDetail::getCreateId, SecurityUtils.getUserId()); |
| | | if (dispatchId != null) { |
| | | wrapper.eq(TmsFinanceDetail::getDispatchOrderId, dispatchId); |
| | | } |
| | | // 按创建时间倒序 |
| | | wrapper.orderByDesc(TmsFinanceDetail::getFeeCreateTime); |
| | | |
| | | // 查总金额(不分页) |
| | | List<TmsFinanceDetail> allRecords = tmsFinanceDetailMapper.selectList( |
| | | new LambdaQueryWrapper<TmsFinanceDetail>() |
| | | .select(TmsFinanceDetail::getActualFeeAmount) |
| | | .eq(TmsFinanceDetail::getFinanceType, 2) |
| | | .eq(TmsFinanceDetail::getCreateId, SecurityUtils.getUserId()) |
| | | .eq(dispatchId != null, TmsFinanceDetail::getDispatchOrderId, dispatchId) |
| | | ); |
| | | BigDecimal totalAmount = allRecords.stream() |
| | | .map(TmsFinanceDetail::getActualFeeAmount) |
| | | .filter(Objects::nonNull) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | |
| | | // 分页查询 |
| | | Page<TmsFinanceDetail> page = new Page<>(pageNum, pageSize); |
| | | Page<TmsFinanceDetail> result = tmsFinanceDetailMapper.selectPage(page, wrapper); |
| | | |
| | | List<TmsFinanceDetail> rows = result.getRecords(); |
| | | if (rows != null && !rows.isEmpty()) { |
| | | enrichDispatchInfo(rows); |
| | | } |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("rows", rows); |
| | | map.put("total", result.getTotal()); |
| | | map.put("totalAmount", totalAmount); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 填充调度单信息(调度单号、客户名称) |
| | | */ |
| | | private void enrichDispatchInfo(List<TmsFinanceDetail> list) { |
| | | // 批量查询调度单,避免 N+1 |
| | | Set<Integer> orderIds = new HashSet<>(); |
| | | list.forEach(d -> { if (d.getDispatchOrderId() != null) orderIds.add(d.getDispatchOrderId()); }); |
| | | if (orderIds.isEmpty()) return; |
| | | |
| | | List<TmsDispatchOrder> orders = tmsDispatchOrderMapper.selectBatchIds(orderIds); |
| | | Map<Integer, TmsDispatchOrder> orderMap = new HashMap<>(); |
| | | orders.forEach(o -> orderMap.put(o.getId(), o)); |
| | | |
| | | list.forEach(d -> { |
| | | TmsDispatchOrder order = orderMap.get(d.getDispatchOrderId()); |
| | | if (order != null) { |
| | | d.setDispatchNo(order.getDispatchNo()); |
| | | d.setCustomerName(order.getCustomerName()); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | } |
| | | |
| | | tmsFinanceDetailMapper.insertTmsFinanceDetailBatch(tmsFinanceDetails); |
| | | return 0; |
| | | return tmsFinanceDetailMapper.insertTmsFinanceDetailBatch(tmsFinanceDetails); |
| | | |
| | | } |
| | | |
| | | public void addItem (TmsFinanceDetail tmsFinanceDetail){ |
| | |
| | | }}; |
| | | return tmsFinanceMapper.updateTmsFinance(tmsFinance1); |
| | | } |
| | | @Override |
| | | public int updateTmsFinanceDetail2(TmsFinanceDetail tmsFinanceDetail) |
| | | { |
| | | return tmsFinanceDetailMapper.updateTmsFinanceDetail(tmsFinanceDetail); |
| | | } |
| | | |
| | | @Override |
| | | public AjaxResult cancelFinanceDetail(Integer id) { |