package com.ydd.app.service.impl; import com.ydd.third.common.utils.DateUtils; import com.ydd.third.common.vo.waimai.MeituanSgOrderResultVo; import com.ydd.third.print.request.PrintOrderActDto; import com.ydd.third.print.request.PrintOrderDto; import com.ydd.third.waimai.meituanSg.vo.SgOrderDetailVo; import com.ydd.third.waimai.meituanSg.vo.SgOrderExtraVo; import org.apache.commons.collections4.CollectionUtils; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.net.URLDecoder; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * Demo class * * @author 14027 * @date 2021/11/10 10:37 */ public class MeiTuanSgConvertPrint { public static PrintOrderDto convert(MeituanSgOrderResultVo orderVo) throws UnsupportedEncodingException { PrintOrderDto dto = new PrintOrderDto(); dto.setDaySeq(orderVo.getDaySeq()+""); dto.setOrderSource("美团闪购外卖"); dto.setShopName(orderVo.getWmPoiName()); long createTime =orderVo.getCtime()*1000; dto.setCreateTime(DateUtils.format(new Date(createTime),DateUtils.DATE_TIME_PATTERN)); dto.setIsBook(orderVo.getDeliveryTime()==0?0:1); long deliveryTime =orderVo.getDeliveryTime()*1000L; String deliverTimeStr = DateUtils.format( new Date(deliveryTime),"MM月dd日 HH:mm")+"送达"; dto.setDeliveryTime(dto.getIsBook()==1?deliverTimeStr:""); dto.setOutOrderId(orderVo.getWmOrderIdView()); //优惠信息 List actDtos = new ArrayList<>(); List list = orderVo.getExtrasList(); if(CollectionUtils.isNotEmpty(list)){ for(SgOrderExtraVo vo:list){ if(vo!=null&&vo.getRemark()!=null){ if(vo!=null&&vo.getRemark()!=null){ PrintOrderActDto actDto = new PrintOrderActDto(); actDto.setAmount(vo.getReduceFee()+""); actDto.setName(vo.getRemark()); actDto.setType(vo.getType()+""); actDtos.add(actDto); } } } } actDtos = merge(actDtos); dto.setActDtos(actDtos); dto.setDeliverFee(orderVo.getShippingFee()+""); BigDecimal boxFee = BigDecimal.ZERO; if (CollectionUtils.isNotEmpty(orderVo.getDetailList())) { for (SgOrderDetailVo vo : orderVo.getDetailList()) { boxFee = vo.getBoxPrice().multiply(vo.getBoxNum()); } } dto.setBoxFee(boxFee.toString()); dto.setOriginalPrice(orderVo.getOriginalPrice()); dto.setTotalPrice(orderVo.getTotal()); if (orderVo.getCaution().contains("收餐人隐私号")){ dto.setCaution(URLDecoder.decode(orderVo.getCaution(), "Utf-8").substring(0,orderVo.getCaution().indexOf("收餐人隐私号"))); }else { dto.setCaution(URLDecoder.decode(orderVo.getCaution(), "Utf-8")); } // if (!orderVo.getLogisticsCode().equals("0000") && !orderVo.getLogisticsCode().equals("5001") && !orderVo.getLogisticsCode().equals("00009003")){ //// String addRess = orderVo.getRecipientAddressDesensitization().replaceAll("\\d+", "*"); // dto.setRecipientAddress(orderVo.getRecipientAddressDesensitization()); // }else { // dto.setRecipientAddress(orderVo.getRecipientAddress()); // } dto.setRecipientAddress(URLDecoder.decode(orderVo.getRecipientAddress(), "utf-8")); // dto.setCaution(orderVo.getCaution().substring(0,orderVo.getCaution().indexOf("收餐人隐私号"))); dto.setRecipientName(URLDecoder.decode(orderVo.getRecipientName(), "utf-8")); dto.setRecipientPhone(orderVo.getRecipientPhone()); return dto; } public static List merge(List list) { List result = list.stream() // 表示id为key, 接着如果有重复的,那么从BillsNums对象o1与o2中筛选出一个,这里选择o1, // 并把id重复,需要将nums和sums与o1进行合并的o2, 赋值给o1,最后返回o1 .collect(Collectors.toMap(PrintOrderActDto::getType, a -> a, (o1, o2)-> { o1.setAmount(new BigDecimal(o1.getAmount()).add(new BigDecimal(o2.getAmount())).toString()); return o1; })).values().stream().collect(Collectors.toList()); return result ; } }