|
@@ -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());
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 统计导出计算总价公式(票种只存在一个规则中)
|
|
|
*
|