From 4d9eeaa5bc6c47feeac930f2af73e7d210572921 Mon Sep 17 00:00:00 2001 From: wujianwei <wjw@11.com> Date: 星期二, 29 七月 2025 15:36:34 +0800 Subject: [PATCH] 新增查看费用接口 --- service/src/main/java/com/ruoyi/cwgl/service/impl/DispatchOrderServiceImpl.java | 83 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 82 insertions(+), 1 deletions(-) diff --git a/service/src/main/java/com/ruoyi/cwgl/service/impl/DispatchOrderServiceImpl.java b/service/src/main/java/com/ruoyi/cwgl/service/impl/DispatchOrderServiceImpl.java index 5643f03..7ae20a3 100644 --- a/service/src/main/java/com/ruoyi/cwgl/service/impl/DispatchOrderServiceImpl.java +++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/DispatchOrderServiceImpl.java @@ -1,9 +1,14 @@ package com.ruoyi.cwgl.service.impl; -import java.util.List; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; import com.ruoyi.common.utils.DateUtils; import javax.annotation.Resource; + +import com.ruoyi.cwgl.domain.DispatchOrderItem; +import com.ruoyi.cwgl.domain.vo.DispatchOrderItemVo; import org.springframework.transaction.annotation.Transactional; import org.springframework.stereotype.Service; import org.springframework.scheduling.annotation.Async; @@ -72,6 +77,18 @@ public List<DispatchOrder> selectDispatchOrderList(DispatchOrder dispatchOrder) { return dispatchOrderMapper.selectDispatchOrderList(dispatchOrder); + } + /** + * 鏌ヨ璋冨害鍗曞垪琛� + * + * @param dispatchOrder 璋冨害鍗� + * @return 璋冨害鍗� + */ + @DataSource(DataSourceType.CWSJ) + @Override + public List<DispatchOrder> selectDispatchOrderList2(DispatchOrder dispatchOrder) + { + return dispatchOrderMapper.selectDispatchOrderList2(dispatchOrder); } /** @@ -179,4 +196,68 @@ { return dispatchOrderMapper.deleteDispatchOrderById(id); } + + @DataSource(DataSourceType.CWSJ) + @Override + public List<DispatchOrderItemVo> selectDispatchOrderItem(String no) { + // 浣跨敤Map鏉ヤ复鏃跺瓨鍌ㄥ垎缁勭粨鏋� + Map<String, DispatchOrderItemVo> summaryMap = new HashMap<>(); + + List<DispatchOrderItem> dispatchOrderItems=dispatchOrderMapper.selectDispatchOrderItemByNo(no); + Set<String> settableFeeItemSet = null; + for (DispatchOrderItem dispatchOrderItem : dispatchOrderItems) { + String settableFeeItems = dispatchOrderItem.getSettableFeeItems(); + if (settableFeeItemSet==null) { + settableFeeItemSet = new HashSet<>( + Arrays.asList(settableFeeItems.split(","))); + } + // 鍒ゆ柇鏄惁鍙粨绠� + String feeItem = dispatchOrderItem.getFeeItem(); + int isSettable = isFeeItemSettable(feeItem, settableFeeItemSet); + // 濡傛灉Map涓笉瀛樺湪璇ヨ垂鐢ㄧ被鍨嬶紝鍒欏垱寤烘柊鏉$洰 + if (!summaryMap.containsKey(feeItem)) { + DispatchOrderItemVo summary = new DispatchOrderItemVo(); + summary.setFeeItem(feeItem); + summary.setReceivableFee(BigDecimal.ZERO); + summary.setActualFee(BigDecimal.ZERO); + summary.setIsSettlement(isSettable); + summaryMap.put(feeItem, summary); + } + // 鏍规嵁璐﹀崟绫诲瀷绱姞閲戦 + DispatchOrderItemVo summary = summaryMap.get(feeItem); + if ("R".equals(dispatchOrderItem.getBillType())) { // 搴旀敹 + summary.setReceivableFee(summary.getReceivableFee().add(dispatchOrderItem.getSettleFee())); + } else if ("P".equals(dispatchOrderItem.getBillType())) { // 搴斾粯 + summary.setActualFee(summary.getActualFee().add(dispatchOrderItem.getSettleFee())); + } + } + // 杞崲涓篖ist骞惰繃婊ゃ�佹帓搴� + return summaryMap.values().stream() + // 杩囨护鎺夊簲鏀跺簲浠橀兘涓�0鐨勮褰� + .filter(dto -> dto.getReceivableFee().compareTo(BigDecimal.ZERO) != 0 + || dto.getActualFee().compareTo(BigDecimal.ZERO) != 0) + // 鎺掑簭锛氬彲缁撶畻鐨勫湪鍓嶏紝涓嶅彲缁撶畻鐨勫湪鍚庯紱鐒跺悗鎸夋�婚噾棰濋檷搴� + .sorted(Comparator.comparing(DispatchOrderItemVo::getIsSettlement).reversed() + .thenComparing(dto -> dto.getReceivableFee().add(dto.getActualFee()), + Comparator.reverseOrder())) + .collect(Collectors.toList()); + } + + + + /** + * 鍒ゆ柇璐圭敤绫诲瀷鏄惁鍙粨绠� + */ + private static int isFeeItemSettable(String feeItem, Set<String> settableFeeItemSet) { + if (feeItem == null || settableFeeItemSet == null) { + return 0; + } + + + if (settableFeeItemSet.contains(feeItem)) { + return 1; + } + + return 0; + } } -- Gitblit v1.8.0