瀏覽代碼

修改导出

bihuisong 6 月之前
父節點
當前提交
d9f936f99d
共有 1 個文件被更改,包括 15 次插入10 次删除
  1. 15 10
      songhua-system/src/main/java/com/songhua/system/service/impl/PzRawDataServiceImpl.java

+ 15 - 10
songhua-system/src/main/java/com/songhua/system/service/impl/PzRawDataServiceImpl.java

@@ -359,29 +359,34 @@ public class PzRawDataServiceImpl implements IPzRawDataService {
      * @return
      */
     public List<ShhTicketRulesReqVO> calculateTotalPrices(List<PzRawDataVo> list) {
-        List<ShhTicketRulesReqVO> returnList = new ArrayList<>();
-        LinkedHashMap<String, ShhTicketRulesReqVO> map = new LinkedHashMap<>();
+        // 创建一个映射,用于存储票种名称到 ShhTicketRulesReqVO 对象的映射
+        Map<String, ShhTicketRulesReqVO> map = new LinkedHashMap<>();
+        // 获取所有票种名称
         List<String> keyByValue = TicketRulesEnum.getAllKeys();
         keyByValue.forEach(name -> {
             ShhTicketRulesReqVO ticketRulesReqVO = new ShhTicketRulesReqVO();
             ticketRulesReqVO.setTicketName(name);
             map.put(name, ticketRulesReqVO);
         });
-        list.forEach(e -> {
-            keyByValue.forEach(name -> {
-                if(name.equals(TicketRulesEnum.getKeyByValue(e.getTicketId()))) {
-                    //如果有相同的票种,则累加数量和金额
+        // 遍历原始数据列表
+        for (PzRawDataVo e : list) {
+            // 获取当前票种对应的票种名称列表
+            List<String> ticketNames = TicketRulesEnum.getKeyByValues(e.getTicketId());
+            // 遍历票种名称列表
+            for (String name : ticketNames) {
+                if (map.containsKey(name)) {
                     ShhTicketRulesReqVO ticketRulesReqVO = map.get(name);
                     ticketRulesReqVO.setNumberSheets(ticketRulesReqVO.getNumberSheets() + e.getNumber());
                     ticketRulesReqVO.setAmount(ticketRulesReqVO.getAmount() == null ? BigDecimal.ZERO : ticketRulesReqVO.getAmount().add(e.getMoney()));
                 }
-            });
-        });
-        map.forEach((k, v) -> returnList.add(new ShhTicketRulesReqVO(k, v.getNumberSheets(), v.getAmount())));
-        return returnList;
+            }
+        }
+        // 将结果转换为列表并返回
+        return new ArrayList<>(map.values());
     }
 
 
+
     /**
      * 统计导出计算总价公式(票种只存在一个规则中)
      *