OrderServiceImpl.java 67 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454
  1. package com.ydd.module.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.core.metadata.IPage;
  7. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  8. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  9. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  10. import com.ydd.common.core.domain.entity.SysUser;
  11. import com.ydd.common.core.page.PageResult;
  12. import com.ydd.common.core.redis.RedisCache;
  13. import com.ydd.common.enums.UserTypeEnums;
  14. import com.ydd.common.exception.CustomException;
  15. import com.ydd.common.utils.StringUtils;
  16. import com.ydd.ecloud.core.utils.BigDecimalUtils;
  17. import com.ydd.module.domain.*;
  18. import com.ydd.module.dto.*;
  19. import com.ydd.module.enums.*;
  20. import com.ydd.module.expection.CustomAppException;
  21. import com.ydd.module.mapper.OrderMapper;
  22. import com.ydd.module.pay.alipay.AliPayService;
  23. import com.ydd.module.pay.wechat.service.WechatPayService;
  24. import com.ydd.module.producer.RabbitSender;
  25. import com.ydd.module.request.OrderListRequest;
  26. import com.ydd.module.service.*;
  27. import lombok.extern.slf4j.Slf4j;
  28. import org.apache.commons.compress.utils.Lists;
  29. import org.elasticsearch.action.index.IndexRequest;
  30. import org.elasticsearch.action.index.IndexResponse;
  31. import org.elasticsearch.action.search.SearchRequest;
  32. import org.elasticsearch.action.search.SearchResponse;
  33. import org.elasticsearch.action.update.UpdateRequest;
  34. import org.elasticsearch.action.update.UpdateResponse;
  35. import org.elasticsearch.client.RequestOptions;
  36. import org.elasticsearch.client.RestHighLevelClient;
  37. import org.elasticsearch.common.unit.TimeValue;
  38. import org.elasticsearch.common.xcontent.XContentType;
  39. import org.elasticsearch.index.query.QueryBuilders;
  40. import org.elasticsearch.index.query.TermQueryBuilder;
  41. import org.elasticsearch.rest.RestStatus;
  42. import org.elasticsearch.search.builder.SearchSourceBuilder;
  43. import org.springframework.beans.factory.annotation.Autowired;
  44. import org.springframework.stereotype.Service;
  45. import org.springframework.transaction.annotation.Transactional;
  46. import org.springframework.util.StopWatch;
  47. import javax.annotation.Resource;
  48. import java.io.IOException;
  49. import java.math.BigDecimal;
  50. import java.math.BigInteger;
  51. import java.text.SimpleDateFormat;
  52. import java.util.*;
  53. import java.util.concurrent.TimeUnit;
  54. import java.util.stream.Collectors;
  55. /**
  56. * 配送订单Service业务层处理
  57. *
  58. * @author douya
  59. * @date 2021-02-01
  60. */
  61. @Service
  62. @Slf4j
  63. public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService {
  64. @Resource
  65. private ICouponService iCouponService;
  66. @Resource
  67. private IMemberService iMemberService;
  68. @Resource
  69. private IMerchantService iMerchantService;
  70. @Resource
  71. private IPersonnelService iPersonnelService;
  72. @Resource
  73. private IProfitsDetailService iProfitsDetailService;
  74. @Resource
  75. private IAgentService iAgentService;
  76. @Resource
  77. private IOrderLogService iOrderLogService;
  78. @Resource
  79. private IWaimaiOrderDetailService iWaimaiOrderDetailService;
  80. @Resource
  81. private IDspWaimaiService iDspWaimaiService;
  82. @Resource
  83. private IOrderDeliveryService iOrderDeliveryService;
  84. @Resource
  85. private IMemberBalanceLogService iMemberBalanceLogService;
  86. @Resource
  87. private RabbitSender rabbitSender;
  88. @Autowired
  89. private RestHighLevelClient restHighLevelClient;
  90. @Autowired
  91. private RedisCache redisCache;
  92. @Autowired
  93. private IOrderTipService iOrderTipService;
  94. @Autowired
  95. private AliPayService aliPayService;
  96. @Autowired
  97. private WechatPayService wechatPayService;
  98. @Autowired
  99. private IPaymentService paymentService;
  100. @Autowired
  101. private IMemberCouponService iMemberCouponService;
  102. @Autowired
  103. private IDadaDspService iDadaDspService;
  104. @Autowired
  105. private IShopService iShopService;
  106. @Autowired
  107. private IOrderFreightService iOrderFreightService;
  108. @Autowired
  109. private IPackageFreightService iPackageFreightService;
  110. @Override
  111. public List<Order> queryList(Order order, SysUser user, Integer merchantId) {
  112. List<Integer> memberIds = new ArrayList<>();
  113. if (merchantId == null) {
  114. if (user.getType().equals(UserTypeEnums.AGENT.getCode())) {
  115. //查询代理商下所有商户的ID
  116. memberIds = iMemberService.selectMemberIdByAgentId(user.getAgentId().intValue());
  117. if (memberIds.size() == ListSizeEnum.ZERO.getSize()) {
  118. return new ArrayList<>();
  119. }
  120. }
  121. } else {
  122. //查询商家下所有用户的ID
  123. memberIds = iMerchantService.getMerchantMemberId(merchantId);
  124. }
  125. if (memberIds.size() == ListSizeEnum.ZERO.getSize()) {
  126. memberIds = null;
  127. }
  128. List<Order> lists = baseMapper.queryPage(order, memberIds);
  129. // lists.forEach(orders -> {
  130. // if (orders.getCouponId() != null){
  131. // Coupon coupon = iCouponService.getById(orders.getCouponId());
  132. // if (coupon != null){
  133. // orders.setCoupon(coupon);
  134. // }
  135. // }
  136. // });
  137. return lists;
  138. }
  139. /**
  140. * 分页查询列表
  141. *
  142. * @param page
  143. * @param order
  144. * @param user
  145. * @param merchantId
  146. * @return
  147. */
  148. @Override
  149. public PageResult queryPageList(Page page, SystemOrderDto order, SysUser user, Integer merchantId) {
  150. List<Long> agentIds = new ArrayList<>();
  151. List<Long> aIds = new ArrayList<>();
  152. // if (merchantId == null){
  153. // if (user.getType().equals(UserTypeEnums.AGENT.getCode())){
  154. // // 查询下级所有代理
  155. // agentIds = iAgentService.getAgentIdsByPid(user.getAgentId().intValue());
  156. // }
  157. // }
  158. if (user.getType().equals(UserTypeEnums.AGENT.getCode()) && user.getAgentId() != null) {
  159. agentIds = iAgentService.listAgent(user.getAgentId().longValue());
  160. }
  161. if (order.getAId() != null) {
  162. aIds = iAgentService.listAgent(order.getAId());
  163. }
  164. List<SystemOrderDto> lists = baseMapper.queryPageList(page, order, agentIds, aIds);
  165. for (SystemOrderDto o : lists) {
  166. // 查询所有订单记录
  167. List<OrderLog> orderLogList = iOrderLogService.getCreateTime(o.getId());
  168. // 接单时间
  169. List<OrderLog> deliveryTimeList = orderLogList.stream().filter(item -> OrderStatusEnum.TO_BE_DELIVERED.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  170. if (deliveryTimeList.size() > 0) {
  171. o.setDeliveryTime(deliveryTimeList.get(0).getCreateTime());
  172. } else {
  173. o.setDeliveryTime(null);
  174. }
  175. // 取货时间
  176. List<OrderLog> pickUpTimeList = orderLogList.stream().filter(item -> OrderStatusEnum.IN_DELIVERY.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  177. if (pickUpTimeList.size() > 0) {
  178. o.setPickUpTime(pickUpTimeList.get(0).getCreateTime());
  179. }
  180. // 完成时间
  181. List<OrderLog> finishTimeList = orderLogList.stream().filter(item -> OrderStatusEnum.FINISH.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  182. if (finishTimeList.size() > 0) {
  183. o.setFinishTime(finishTimeList.get(0).getCreateTime());
  184. } else {
  185. o.setFinishTime(null);
  186. }
  187. // 取消时间
  188. if (o.getDeliveryStatus() == -1) {
  189. List<OrderLog> cancelTimeList = orderLogList.stream().filter(item -> OrderStatusEnum.CANCEL.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  190. if (cancelTimeList.size() > 0) {
  191. o.setCancelTime(cancelTimeList.get(0).getCreateTime());
  192. }
  193. } else if (o.getDeliveryStatus() == -2) {
  194. List<OrderLog> cancelTimeList = orderLogList.stream().filter(item -> OrderStatusEnum.ABNORMAL.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  195. if (cancelTimeList.size() > 0) {
  196. o.setCancelTime(cancelTimeList.get(0).getCreateTime());
  197. }
  198. }
  199. // 外卖名称
  200. DspWaimai dspWaimai = iDspWaimaiService.selectNameByType(o.getOrderType());
  201. if (dspWaimai != null) {
  202. o.setDspWaimaiName(dspWaimai.getName());
  203. }
  204. DadaDsp dadaDsp = iDadaDspService.getById(o.getDadaDspId());
  205. o.setDadaDspName(dadaDsp == null ? "" : dadaDsp.getName());
  206. // 增加下单人名称
  207. // Member member = iMemberService.getById(o.getMemberId());
  208. // if (member != null && member.getNickname() != null) {
  209. // o.setMemberName(member.getNickname());
  210. // o.setMemberMobile(member.getMobile());
  211. // }
  212. // 增加代理商名称
  213. Agent agent = iAgentService.getById(o.getAgentId());
  214. if (agent != null && agent.getName() != null) {
  215. o.setAgentName(agent.getName());
  216. }
  217. // 增加商家名称
  218. // Merchant merchant = iMerchantService.getById(o.getMerchantId());
  219. // if (merchant != null && merchant.getMerchantName() != null) {
  220. // o.setMerchantName(merchant.getMerchantName());
  221. // }
  222. // 查看自己的佣金
  223. List<ProfitsDetail> profitsDetailList = iProfitsDetailService.getByCommissionId(o.getId());
  224. if (user.getType().equals(UserTypeEnums.AGENT.getCode())) {
  225. // List<ProfitsDetail> profitsDetail = iProfitsDetailService.getByCommissionId(user.getAgentId(),o.getId(),2);
  226. List<ProfitsDetail> profitsDetail = profitsDetailList.stream().filter(item -> user.getAgentId().equals(item.getAgentId())).collect(Collectors.toList());
  227. if (profitsDetail.size() > 0) {
  228. o.setGetCommission(profitsDetail.get(0).getCommission());
  229. }
  230. } else if (user.getType().equals(UserTypeEnums.DSP.getCode())) {
  231. // List<ProfitsDetail> profitsDetail = iProfitsDetailService.getByCommissionId(user.getDspId(),o.getId(),1);
  232. List<ProfitsDetail> profitsDetail = profitsDetailList.stream().filter(item -> user.getDspId().equals(item.getDspId())).collect(Collectors.toList());
  233. if (profitsDetail.size() > 0) {
  234. o.setGetCommission(profitsDetail.get(0).getCommission());
  235. }
  236. }
  237. if (o.getWaimaiDeliveryTime() != null) {
  238. if (o.getWaimaiDeliveryTime().longValue() != 0) {
  239. o.setWaimaiDeliveryDate(new Date(o.getWaimaiDeliveryTime() * 1000));
  240. }
  241. }
  242. if (o.getDeleted() == 1) {
  243. String originalOrderSn = baseMapper.selectOriginalOrderSn1(o.getWaimaiOrderId());
  244. if (originalOrderSn != null) {
  245. o.setOriginalOrderSn(originalOrderSn);
  246. }
  247. }
  248. }
  249. page.setRecords(lists);
  250. return new PageResult(page);
  251. }
  252. private boolean handleListSearchCondition(SystemOrderDto order, SysUser user) {
  253. boolean result = true;
  254. if (StringUtils.isNotBlank(order.getMerchantName())) {
  255. /*List<Long> merchantIds = iMerchantService.list(new QueryWrapper<Merchant>()
  256. .like("merchant_name", order.getMerchantName())
  257. .eq("deleted", 0))
  258. .stream()
  259. .map(Merchant::getId)
  260. .collect(Collectors.toList());*/
  261. List<Long> merchantIds = iMerchantService.selectIdByName(order.getMerchantName());
  262. if (CollectionUtils.isEmpty(merchantIds)) {
  263. result = false;
  264. }
  265. order.setMerchantIds(merchantIds);
  266. }
  267. if (user.getType().equals(UserTypeEnums.AGENT.getCode()) && user.getAgentId() != null) {
  268. List<Long> agentIds = iAgentService.listAgent(user.getAgentId());
  269. if (CollectionUtils.isEmpty(agentIds)) {
  270. result = false;
  271. }
  272. order.setAgentIds(agentIds);
  273. }
  274. if (order.getAId() != null) {
  275. List<Long> aIds = iAgentService.listAgent(order.getAId());
  276. if (CollectionUtils.isEmpty(order.getAgentIds())) {
  277. order.setAgentIds(aIds);
  278. } else {
  279. order.getAgentIds().retainAll(aIds);
  280. }
  281. if (CollectionUtils.isEmpty(order.getAgentIds())) {
  282. result = false;
  283. }
  284. }
  285. if (StringUtils.isNotEmpty(order.getMemberMobile())) {
  286. // List<Long> memberIds = iMemberService.list(new QueryWrapper<Member>()
  287. // .like("mobile", order.getMemberMobile())
  288. // .eq("deleted", 0))
  289. // .stream()
  290. // .map(Member::getId)
  291. // .collect(Collectors.toList());
  292. // 查询出用户条件的id
  293. List<Long> memberIds = iMemberService.selectIdByName(order);
  294. if (CollectionUtils.isEmpty(memberIds)) {
  295. result = false;
  296. }
  297. order.setMemberIds(memberIds);
  298. }
  299. if (StringUtils.isNotEmpty(order.getMemberName())) {
  300. // List<Long> memberIds = iMemberService.list(new QueryWrapper<Member>()
  301. // .like("nickname", order.getMemberName())
  302. // .eq("deleted", 0))
  303. // .stream()
  304. // .map(Member::getId)
  305. // .collect(Collectors.toList());
  306. // 查询出用户条件的id
  307. List<Long> memberIds = iMemberService.selectIdByName(order);
  308. if (CollectionUtils.isEmpty(order.getMemberIds())) {
  309. order.setMemberIds(memberIds);
  310. } else {
  311. order.getMemberIds().retainAll(memberIds);
  312. }
  313. if (CollectionUtils.isEmpty(order.getMemberIds())) {
  314. result = false;
  315. }
  316. }
  317. if (StringUtils.isNotEmpty(order.getPersonnelName())) {
  318. // List<Long> personnelIds = iPersonnelService.list(new QueryWrapper<Personnel>()
  319. // .like("name", order.getPersonnelName())
  320. // .eq("deleted", 0))
  321. // .stream()
  322. // .map(Personnel::getId)
  323. // .collect(Collectors.toList());
  324. // 查询出员工名称条件的id
  325. List<Long> personnelIds = iPersonnelService.selectIdByName(order.getPersonnelName());
  326. if (CollectionUtils.isEmpty(personnelIds)) {
  327. result = false;
  328. }
  329. order.setPersonnelIds(personnelIds);
  330. }
  331. // 新增订单门店查询按钮
  332. if (StringUtils.isNotEmpty(order.getShopName())) {
  333. List<Shop> shopList = iShopService.list(new QueryWrapper<Shop>().eq("deleted", 0)
  334. .eq("status", 1).like("name", order.getShopName()));
  335. List<Long> shopIds = shopList.stream().map(Shop::getId).collect(Collectors.toList());
  336. if (CollectionUtils.isEmpty(shopIds)) {
  337. result = false;
  338. }
  339. order.setShopIds(shopIds);
  340. }
  341. return result;
  342. }
  343. @Override
  344. public List<OrderExportDto> selectExportOrder(SystemOrderDto order, SysUser user, Integer merchantId) {
  345. List<Long> agentIds = new ArrayList<>();
  346. List<Long> aIds = new ArrayList<>();
  347. if (user.getType().equals(UserTypeEnums.AGENT.getCode()) && user.getAgentId() != null) {
  348. agentIds = iAgentService.listAgent(user.getAgentId().longValue());
  349. }
  350. if (order.getAId() != null) {
  351. aIds = iAgentService.listAgent(order.getAId());
  352. }
  353. List<OrderExportDto> list = baseMapper.selectExportOrder(order, agentIds, aIds);
  354. list.forEach(dto -> {
  355. if (dto.getWaimaiOrderId() != null && dto.getOrderTime() != null) {
  356. dto.setCreateTime(dto.getOrderTime());
  357. }
  358. // 完成时间
  359. // List<OrderLog> finishTimeList = iOrderLogService.getCreateTime(dto.getId(), 4);
  360. // if (finishTimeList.size() > 0) {
  361. // dto.setFinishTime(finishTimeList.get(0).getCreateTime());
  362. // }else {
  363. // dto.setFinishTime(null);
  364. // }
  365. // 拼接发件人分机号
  366. if (dto.getSendExtension() != null) {
  367. dto.setMergeSendPhone(dto.getSendPhone() + "#" + dto.getSendExtension());
  368. } else {
  369. dto.setMergeSendPhone(dto.getSendPhone());
  370. }
  371. // 拼接收件人分机号
  372. if (dto.getReceiptExtension() != null) {
  373. dto.setMergeReceiptPhone(dto.getReceiptPhone() + "#" + dto.getReceiptExtension());
  374. } else {
  375. dto.setMergeReceiptPhone(dto.getReceiptPhone());
  376. }
  377. // 支付类型
  378. if (dto.getPaymentType() == 1 && dto.getStatus() != 0) {
  379. dto.setPayType("支付宝");
  380. } else if (dto.getPaymentType() == 2 && dto.getStatus() != 0) {
  381. dto.setPayType("微信");
  382. } else if (dto.getPaymentType() == 3 && dto.getStatus() != 0) {
  383. dto.setPayType("银联");
  384. } else if (dto.getPaymentType() == 4 && dto.getStatus() != 0) {
  385. dto.setPayType("余额支付");
  386. } else if (dto.getPaymentType() == 5 && dto.getStatus() != 0) {
  387. dto.setPayType("第三方平台支付");
  388. }
  389. if (dto.getDeleted() == 0) {
  390. // 订单状态
  391. if (dto.getDeliveryStatus() == -1 && (dto.getWmstatus() == null || dto.getWmstatus() != 4)) {
  392. dto.setOrderStatus("已取消");
  393. return;
  394. }
  395. if (dto.getDeliveryStatus() == -2 && (dto.getWmstatus() == null || dto.getWmstatus() != 4)) {
  396. dto.setOrderStatus("异常");
  397. return;
  398. }
  399. if (dto.getDeliveryStatus() == 0 && (dto.getWmstatus() == null || dto.getWmstatus() != 4)) {
  400. dto.setOrderStatus("待发单");
  401. return;
  402. }
  403. // if (dto.getDeliveryStatus() == 0 && dto.getStatus() == 0 && (dto.getWmstatus() == null || dto.getWmstatus() != 4)) {
  404. // dto.setOrderStatus("未支付");
  405. // return;
  406. // }
  407. if (dto.getDeliveryStatus() == 1 && dto.getStatus() == 1 && (dto.getWmstatus() == null || dto.getWmstatus() != 4)) {
  408. dto.setOrderStatus("待接单");
  409. return;
  410. }
  411. if (dto.getDeliveryStatus() == 1 && dto.getStatus() == 0 && (dto.getWmstatus() == null || dto.getWmstatus() != 4)) {
  412. dto.setOrderStatus("待支付");
  413. return;
  414. }
  415. if (dto.getDeliveryStatus() == 2 && (dto.getWmstatus() == null || dto.getWmstatus() != 4)) {
  416. dto.setOrderStatus("待配送");
  417. return;
  418. }
  419. if (dto.getDeliveryStatus() == 3 && (dto.getWmstatus() == null || dto.getWmstatus() != 4)) {
  420. dto.setOrderStatus("配送中");
  421. return;
  422. }
  423. if (dto.getDeliveryStatus() == 4) {
  424. dto.setOrderStatus("本平台完成");
  425. return;
  426. }
  427. if (dto.getWmstatus() != null) {
  428. if (dto.getDeliveryStatus() != 4 && dto.getWmstatus() == 4) {
  429. dto.setOrderStatus("其它平台完成");
  430. return;
  431. }
  432. }
  433. } else {
  434. dto.setOrderStatus("撤回");
  435. }
  436. });
  437. return list;
  438. }
  439. // @Override
  440. // public Result exportOrder(List<OrderExportDto> list) {
  441. // ExcelUtil<OrderExportDto> util = new ExcelUtil<OrderExportDto>(OrderExportDto.class);
  442. //
  443. // if (list.size() > 60000) {
  444. // int n = 60000;
  445. // int t = 1;
  446. // for (int i = 0; i < list.size(); i += n) {
  447. // List<OrderExportDto> dtos = list.stream().skip(i).limit(n).collect(Collectors.toList());
  448. // return util.exportExcel(dtos, "配送订单统计" + t++);
  449. // }
  450. // }else {
  451. // return util.exportExcel(list, "配送订单统计" );
  452. // }
  453. //
  454. // return Result.error("导出失败!");
  455. // List<OrderExportDto> dtos = new ArrayList<OrderExportDto>();
  456. // Workbook workbook = null;
  457. // ExportParams params = new ExportParams("配送订单两月数据", "订单");
  458. // // params.setStyle();
  459. // if (list.size() > 60000) {
  460. // for (OrderExportDto order : list) {
  461. // dtos.add(order);
  462. // if (dtos.size() == 10000) {
  463. // // workbook = ExcelExportUtil.exportBigExcel(params, OrderExportDto.class, dtos);
  464. // dtos.clear();
  465. // }
  466. // }
  467. // }else {
  468. // workbook = ExcelExportUtil.exportExcel(params,
  469. // OrderExportDto.class, list);
  470. // }
  471. // ExcelUtil.closeExportBigExcel();
  472. // String filename = encodingFilename("配送订单");
  473. // try {
  474. // out = new FileOutputStream(getAbsoluteFile(filename));
  475. // } catch (FileNotFoundException e) {
  476. // e.printStackTrace();
  477. // }
  478. // try {
  479. // workbook.write(out);
  480. // } catch (IOException e) {
  481. // e.printStackTrace();
  482. // }
  483. // File savefile = new File("D:/excel/");
  484. // if (!savefile.exists()) {
  485. // savefile.mkdirs();
  486. // }
  487. //
  488. // String filename = "D:/excel/" + UUID.randomUUID().toString() + "_" + "配送订单" + ".xlsx";
  489. //
  490. // FileOutputStream fos = new FileOutputStream(filename);
  491. // try {
  492. // workbook.write(fos);
  493. // } catch (IOException e) {
  494. // e.printStackTrace();
  495. // }
  496. // try {
  497. // fos.close();
  498. // } catch (IOException e) {
  499. // e.printStackTrace();
  500. // }
  501. // return Result.success(filename);
  502. // }
  503. // @Override
  504. // public List<OrderDetailDto> findOneKeyList(Long loginId, Integer status, String searchKey, Integer waimaiId, Integer shopId, Integer spId) {
  505. // return baseMapper.findOneKeyList(loginId,status,searchKey,waimaiId,shopId,spId);
  506. // }
  507. @Override
  508. public List<OrderDetailDto> findOneKeyList(Long loginId, Integer status, String searchKey, Integer waimaiId, Integer shopId, List<Long> shopIds, String startDate, String endDate, String version) {
  509. Integer oldStatus = 0;
  510. if (version == null || version.equals("")) {
  511. if (status != null && status.equals(DeliveryStatusEnum.CANCEL.status)) {
  512. oldStatus = 1;
  513. }
  514. }
  515. return baseMapper.findOneKeyList(loginId, status, searchKey, waimaiId, shopId, shopIds, startDate, endDate, oldStatus);
  516. }
  517. @Override
  518. public List<Order> findList(List<Long> loginIds, Integer status, String searchKey, Integer shopId, String startDate, String endDate) {
  519. return baseMapper.findList(loginIds, status, searchKey, shopId, startDate, endDate);
  520. }
  521. /**
  522. * 查询订单详情
  523. *
  524. * @param loginId
  525. * @param orderId
  526. * @return
  527. */
  528. @Override
  529. public Order getDetail(List<Long> loginId, Integer orderId) {
  530. return baseMapper.getDetail(loginId, orderId);
  531. }
  532. @Override
  533. public Order getDetailByShopId(List<Integer> shopIds, Integer orderId) {
  534. return baseMapper.getDetailByShopId(shopIds, orderId);
  535. }
  536. @Override
  537. public Integer getOrderNum(List<Long> shopIds, String startDate) {
  538. return baseMapper.getOrderNum(shopIds, startDate);
  539. }
  540. @Override
  541. public BigDecimal getOrderAmount(List<Long> shopIds, String startDate) {
  542. return baseMapper.getOrderAmount(shopIds, startDate);
  543. }
  544. @Override
  545. public List<Order> findListByStatus() {
  546. return baseMapper.selectList(new QueryWrapper<Order>().eq("delivery_status", DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status).eq("deleted", IsDeleteEnum.NORMAL.status));
  547. }
  548. @Override
  549. public List<Order> queryTimeOutOrder(Integer time) {
  550. return baseMapper.queryTimeOutOrder(time);
  551. }
  552. @Override
  553. public List<Order> sumOrder(Long loginId, Integer status, Integer deliveryId, List<Integer> shopIds, Integer timeType, String startTime, String endTime) {
  554. return baseMapper.sumOrder(loginId, status, deliveryId, shopIds, timeType, startTime, endTime);
  555. }
  556. @Override
  557. public OrderSumDto sumOrder1(Long loginId, Integer status, Integer deliveryId, Long shopId, Integer timeType, String startTime, String endTime) {
  558. return baseMapper.sumOrder1(loginId, status, deliveryId, shopId, timeType, startTime, endTime);
  559. }
  560. /**
  561. * 查询所有配送完成订单
  562. *
  563. * @return
  564. */
  565. @Override
  566. public List<Order> getByStatus() {
  567. return baseMapper.getByStatus();
  568. }
  569. /**
  570. * 通过状态计算数量
  571. *
  572. * @param order 1待接单 2取货中 3配送中 4平台完成
  573. * @return
  574. */
  575. @Override
  576. public List<SystemOrderDto.DeliveryStatus> sumByStatus(SystemOrderDto order, SysUser user, List<SystemOrderDto.DeliveryStatus> statusList) {
  577. List<Integer> agentIds = new ArrayList<>();
  578. List<Long> aIds = new ArrayList<>();
  579. if (user.getType().equals(UserTypeEnums.AGENT.getCode())) {
  580. // 查询下级所有代理
  581. agentIds = iAgentService.getAgentIdsByPid(user.getAgentId().intValue());
  582. }
  583. if (user.getType().equals(UserTypeEnums.AGENT.getCode()) && user.getAgentId() != null) {
  584. agentIds.add(user.getAgentId().intValue());
  585. }
  586. if (order.getAId() != null) {
  587. aIds = iAgentService.listAgent(order.getAId());
  588. }
  589. List<SystemOrderDto> systemOrderDtos = baseMapper.selectCountByStatus(order, agentIds, aIds);
  590. statusList.forEach(deliveryStatus -> {
  591. long count;
  592. if (!DeliveryStatusEnum.FINISH.getStatus().equals(deliveryStatus.getDeliveryStatus())) {
  593. // 其它状态
  594. count = systemOrderDtos.stream().filter(item -> ((item.getWmstatus() == null || item.getWmstatus() != 4)
  595. && deliveryStatus.getDeliveryStatus().equals(item.getDeliveryStatus()))).count();
  596. } else {
  597. // 平台完成
  598. count = systemOrderDtos.stream().filter(item -> DeliveryStatusEnum.FINISH.getStatus().equals(item.getDeliveryStatus())).count();
  599. }
  600. deliveryStatus.setLabel(deliveryStatus.getLabel() + " " + count);
  601. });
  602. return statusList;
  603. }
  604. /**
  605. * 通过状态计算数量
  606. *
  607. * @param order 1待接单 2取货中 3配送中 4平台完成
  608. * @return
  609. */
  610. @Override
  611. public List<SystemOrderDto.DeliveryStatus> sumByStatusNew(SystemOrderDto order, SysUser user, List<SystemOrderDto.DeliveryStatus> statusList) {
  612. StopWatch stopWatch = new StopWatch();
  613. stopWatch.start();
  614. // 查询前置处理
  615. StopWatch stopWatch1 = new StopWatch();
  616. stopWatch1.start();
  617. if (!this.handleListSearchCondition(order, user)) {
  618. statusList.forEach(deliveryStatus -> deliveryStatus.setLabel(deliveryStatus.getLabel() + " " + 0));
  619. return statusList;
  620. }
  621. stopWatch1.stop();
  622. log.info("角标前置查询耗时: {}", stopWatch1.getTotalTimeMillis());
  623. StopWatch stopWatch2 = new StopWatch();
  624. stopWatch2.start();
  625. List<SystemOrderDto> systemOrderDtos = baseMapper.selectCountByStatusNew(order);
  626. stopWatch2.stop();
  627. log.info("角标查询耗时: {}", stopWatch2.getTotalTimeMillis());
  628. StopWatch stopWatch3 = new StopWatch();
  629. stopWatch3.start();
  630. statusList.forEach(deliveryStatus -> {
  631. long count;
  632. if (!DeliveryStatusEnum.FINISH.getStatus().equals(deliveryStatus.getDeliveryStatus())) {
  633. // 其它状态
  634. count = systemOrderDtos.stream().filter(item -> ((item.getWmstatus() == null || item.getWmstatus() != 4)
  635. && deliveryStatus.getDeliveryStatus().equals(item.getDeliveryStatus()))).count();
  636. } else {
  637. // 平台完成
  638. count = systemOrderDtos.stream().filter(item -> DeliveryStatusEnum.FINISH.getStatus().equals(item.getDeliveryStatus())).count();
  639. }
  640. deliveryStatus.setLabel(deliveryStatus.getLabel() + " " + count);
  641. });
  642. stopWatch3.stop();
  643. log.info("角标循环耗时: {}", stopWatch3.getTotalTimeMillis());
  644. stopWatch.stop();
  645. log.info("角标查询总耗时: {}", stopWatch.getTotalTimeMillis());
  646. return statusList;
  647. }
  648. @Override
  649. public List<WaimaiOrderDetail> productInfo(Integer waimaiOrderId) {
  650. // List<WaimaiOrderDetail> list = iWaimaiOrderDetailService.list(new QueryWrapper<WaimaiOrderDetail>().eq("deleted",0)
  651. // .eq("waimai_order_id",waimaiOrderId));
  652. List<WaimaiOrderDetail> list = iWaimaiOrderDetailService.selectDetailList(waimaiOrderId);
  653. return list;
  654. }
  655. @Override
  656. public void autofinish() {
  657. baseMapper.autofinish();
  658. }
  659. @Override
  660. public List<OrderDelivery> getDeliveryInfo(String orderSn) {
  661. return iOrderDeliveryService.getDeliveryInfo(orderSn);
  662. }
  663. @Override
  664. public BigDecimal totalConsume(List<Long> shopIds, ProfitsMerchant profitsMerchant) {
  665. return baseMapper.totalConsume(shopIds, profitsMerchant);
  666. }
  667. @Override
  668. public BigDecimal totalConsumeByMemberId(Long memberId) {
  669. return baseMapper.totalConsumeByMemberId(memberId);
  670. }
  671. @Override
  672. public Boolean cancelOrder(Order order) {
  673. List<Order> list = new ArrayList<>();
  674. order.setCancelReason(CancelOrderEnum.getNameById(order.getCancelOrderId()).getName());
  675. list.add(order);
  676. rabbitSender.send(JSONObject.toJSONString(list), "order.cancel");
  677. return true;
  678. }
  679. @Override
  680. public Page<OrderListDto> getOrderList(OrderListRequest request, IPage<OrderListDto> pageArt) {
  681. return baseMapper.getOrderList(request, pageArt);
  682. }
  683. @Override
  684. public List<OrderListDto> getOrderListByShopIdsAndMemberIds(List<Long> shopIds, Long memberId, Integer memberType, boolean hasPersonalOrder) {
  685. return baseMapper.getOrderListByShopIdsAndMemberIds(shopIds, memberId, memberType, hasPersonalOrder);
  686. }
  687. @Override
  688. public Order getOrderByMemberIdAndOrderId(Long memberId, Integer orderId) {
  689. Member member = iMemberService.getById(memberId);
  690. if (Objects.isNull(member)) {
  691. throw new CustomException("用户不存在!");
  692. }
  693. QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
  694. queryWrapper.eq("id", orderId);
  695. if (MemberTypeEnum.MERCHANT.type.equals(member.getMemberType())) {
  696. queryWrapper.eq("merchant_id", member.getMerchantId());
  697. } else if (MemberTypeEnum.SHOP.type.equals(member.getMemberType())) {
  698. queryWrapper.eq("shop_id", member.getShopId());
  699. } else {
  700. queryWrapper.eq("member_id", memberId);
  701. }
  702. return getOne(queryWrapper);
  703. }
  704. @Override
  705. public Boolean finishOrder(Order order) {
  706. if (order.getId() != null) {
  707. // 更新order表
  708. Order finishOrder = baseMapper.selectById(order.getId());
  709. finishOrder.setDeliveryStatus(OrderStatusEnum.FINISH.getStatus());
  710. this.updateById(finishOrder);
  711. // 更新waimai_order表
  712. // if (finishOrder.getWaimaiOrderId() != null) {
  713. //
  714. // }
  715. // order_log插入完成记录
  716. OrderLog orderLog = new OrderLog();
  717. orderLog.setOrderId(order.getId());
  718. orderLog.setOrderStatus(OrderStatusEnum.FINISH.getStatus());
  719. iOrderLogService.save(orderLog);
  720. // 更新分佣
  721. if (finishOrder.getDadaDspType() == null) {
  722. iProfitsDetailService.getCommission(finishOrder);
  723. } else {
  724. if (OrderDadaDspTypeEnum.DELIVERY_RAP.type.equals(order.getDadaDspType())) {
  725. iProfitsDetailService.getDadaDspCommission(finishOrder);
  726. }
  727. }
  728. return true;
  729. }
  730. return false;
  731. }
  732. @Override
  733. public void workOrderData(Long orderId, Integer type) throws IOException {
  734. Order order = baseMapper.selectById(orderId);
  735. ProfitsSystemOrderDto dto = new ProfitsSystemOrderDto();
  736. if (order != null) {
  737. dto = baseMapper.selectOrderData(orderId);
  738. } else {
  739. throw new CustomAppException("该订单不存在!");
  740. }
  741. if (type == 0) {
  742. // 添加数据到文档
  743. IndexRequest request = new IndexRequest("profits_system", "_doc");
  744. request.timeout("3s");
  745. request.source(JSON.toJSONString(dto), XContentType.JSON);
  746. IndexResponse response = restHighLevelClient.index(request, RequestOptions.DEFAULT);
  747. if (response.status() != RestStatus.CREATED) {
  748. throw new CustomAppException("插入失败!");
  749. }
  750. } else {
  751. // 查询要修改的数据
  752. SearchRequest request = new SearchRequest("profits_system");
  753. SearchSourceBuilder builder = new SearchSourceBuilder();
  754. TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("orderId", orderId);
  755. builder.query(termQueryBuilder);
  756. builder.timeout(new TimeValue(60, TimeUnit.SECONDS));
  757. request.source(builder);
  758. SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
  759. JSONArray array = new JSONArray();
  760. if (response.getHits() != null && response.getHits().getHits() != null) {
  761. array = JSONArray.parseArray(JSON.toJSONString(response.getHits().getHits()));
  762. }
  763. String id = null;
  764. if (array != null && array.size() > 0) {
  765. id = (String) array.getJSONObject(0).get("id");
  766. }
  767. // 修改数据到文档
  768. UpdateRequest request1 = new UpdateRequest("profits_system", "_doc", id);
  769. request1.doc(JSON.toJSONString(dto), XContentType.JSON);
  770. UpdateResponse response1 = restHighLevelClient.update(request1, RequestOptions.DEFAULT);
  771. if (response1.status() != RestStatus.CREATED) {
  772. throw new CustomAppException("修改失败!");
  773. }
  774. }
  775. restHighLevelClient.close();
  776. }
  777. /**
  778. * 根据订单号查找订单
  779. *
  780. * @param orderSn
  781. * @return
  782. */
  783. @Override
  784. public Order getByOrderSn(String orderSn) {
  785. return baseMapper.getByOrderSn(orderSn);
  786. }
  787. /**
  788. * 根据订单号查找订单(包括异常单)
  789. * @param orderSn
  790. * @return
  791. */
  792. @Override
  793. public List<Order> getAllOrderByOrderSn(String orderSn) {
  794. return baseMapper.getAllOrderByOrderSn(orderSn);
  795. }
  796. @Override
  797. @Transactional(rollbackFor = Exception.class)
  798. public Boolean orderRefund(SystemOrderDto order1) {
  799. if (StringUtils.isEmpty(order1.getRefundReason())) {
  800. throw new CustomException("退款理由不能为空!");
  801. }
  802. Order order = baseMapper.selectById(order1.getRefundId());
  803. BigDecimal deductFee = new BigDecimal(BigInteger.ZERO);
  804. // BigDecimal result = redisCache.getCacheObject(order.getOrderSn());
  805. // if (result != null) {
  806. // deductFee = result;
  807. // redisCache.deleteObject(order.getOrderSn());
  808. // }
  809. if (order.getRefundMoney().compareTo(BigDecimal.ZERO) == 0) {
  810. order.setRefundMoney(order.getPayAmount().subtract(deductFee));
  811. List<OrderTip> orderTips = iOrderTipService.list(new QueryWrapper<OrderTip>().eq("order_no", order.getOrderSn()).eq("status", PayStatusEnum.PAYED.status));
  812. BigDecimal refundMoney = order.getPayAmount().subtract(deductFee);
  813. BigDecimal tips = orderTips.stream().map(OrderTip::getAmount).reduce(BigDecimal.ZERO, BigDecimalUtils::sum);
  814. refundMoney = refundMoney.subtract(tips);
  815. refundTip(orderTips, LogSourceEnum.BACK_REFUND.name + "加小费退款", order.getMemberId(), order.getMerchantId());
  816. refund(order.getOrderSn(), refundMoney, order1.getRefundReason(), order.getMemberId(), order.getMerchantId());
  817. }
  818. if (order.getCouponId() != null) {
  819. CouponDto couponDto = iCouponService.findDetailBack(order.getCouponId().intValue());
  820. couponDto.setStatus(MemberCouponStatusEnum.NOT_USED.getStatus());
  821. order.setCouponId(null);
  822. if (couponDto != null) {
  823. MemberCoupon memberCoupon = new MemberCoupon();
  824. memberCoupon.setId(couponDto.getId());
  825. memberCoupon.setStatus(couponDto.getStatus());
  826. iMemberCouponService.updateById(memberCoupon);
  827. }
  828. }
  829. List<ProfitsDetail> profitsDetails = iProfitsDetailService.getByOrderId(order.getId().longValue());
  830. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  831. // 分佣时间
  832. String detailTime = sdf.format(profitsDetails.get(0).getCreateTime());
  833. // 当前时间
  834. String now = sdf.format(new Date());
  835. // 如果是当天退款:删除分佣,订单状态变为取消
  836. if (detailTime.equals(now)) {
  837. // 删除分佣
  838. if (order.getDeliveryStatus().equals(OrderStatusEnum.FINISH.getStatus())) {
  839. // order.setCommission(BigDecimal.ZERO);
  840. iProfitsDetailService.remove(new QueryWrapper<ProfitsDetail>().eq("order_id", order.getId()));
  841. }
  842. // 订单状态变为取消
  843. order.setDeliveryStatus(OrderStatusEnum.CANCEL.getStatus());
  844. }
  845. // 如果是隔天取消,不变
  846. baseMapper.updateById(order);
  847. return true;
  848. }
  849. public void refundTip(List<OrderTip> orderTips, String remark, Long memberId, Long merchantId) {
  850. BigDecimal tips = orderTips.stream().map(OrderTip::getAmount).reduce(BigDecimal.ZERO, BigDecimalUtils::sum);
  851. Member member = iMemberService.getById(memberId);
  852. if (member.getMemberType().equals(MemberTypeEnum.SHOP.type)) {
  853. member = iMemberService.getOne(new QueryWrapper<Member>().eq("member_type", MemberTypeEnum.MERCHANT.type).eq("merchant_id", member.getMerchantId()));
  854. }
  855. for (OrderTip orderTip : orderTips) {
  856. if (PaymentTypeEnum.BALANCE.type.equals(orderTip.getPayType())) {
  857. iMemberService.updateAmount(member.getId(), orderTip.getAmount());
  858. } else if (PaymentTypeEnum.ZHI_FU_BAO.type.equals(orderTip.getPayType())) {
  859. aliPayService.alipayRefundRequest(orderTip.getChildOrderNo(), orderTip.getAmount().doubleValue());
  860. } else if (PaymentTypeEnum.WEI_XIN.type.equals(orderTip.getPayType())) {
  861. wechatPayService.refund(orderTip.getChildOrderNo(), orderTip.getTotalAmout(), orderTip.getAmount(), "");
  862. }
  863. }
  864. if (tips.compareTo(BigDecimal.ZERO) > 0) {
  865. iMemberBalanceLogService.saveLog(memberId, LogTypeEnum.INCREASE.type, remark, LogSourceEnum.REFUND.status, tips, merchantId, Long.valueOf(orderTips.get(0).getOrderId()), orderTips.get(0).getPayType());
  866. }
  867. }
  868. public void refund(String orderNo, BigDecimal refundMoney, String remark, Long memberId, Long merchantId) {
  869. Order order = baseMapper.selectOne(new QueryWrapper<Order>().eq("order_sn", orderNo).eq("deleted", IsDeleteEnum.NORMAL.status));
  870. Member member = iMemberService.getById(memberId);
  871. if (member.getMemberType().equals(MemberTypeEnum.SHOP.type)) {
  872. member = iMemberService.getOne(new QueryWrapper<Member>().eq("member_type", MemberTypeEnum.MERCHANT.type).eq("merchant_id", member.getMerchantId()));
  873. }
  874. if (PaymentTypeEnum.BALANCE.type.equals(order.getPaymentType())) {
  875. iMemberService.updateAmount(member.getId(), refundMoney);
  876. } else if (PaymentTypeEnum.ZHI_FU_BAO.type.equals(order.getPaymentType())) {
  877. aliPayService.alipayRefundRequest(orderNo, refundMoney.doubleValue());
  878. } else if (PaymentTypeEnum.WEI_XIN.type.equals(order.getPaymentType())) {
  879. Payment payment = paymentService.getOne(new QueryWrapper<Payment>().eq("child_order_sn", orderNo).eq("payment_type", PaymentTypeEnum.WEI_XIN.type));
  880. wechatPayService.refund(orderNo, payment.getTotalAmount(), refundMoney, "");
  881. }
  882. iMemberBalanceLogService.saveLog(memberId, LogTypeEnum.INCREASE.type, remark, LogSourceEnum.BACK_REFUND.status, refundMoney, merchantId, order.getId(), order.getPaymentType());
  883. // 是否需要退服务费-绑定三方运力下单
  884. // if (order.getBindFee().compareTo(BigDecimal.ZERO) == 1){
  885. // iMemberService.updateAmount(member.getId(), order.getBindFee());
  886. // iMemberBalanceLogService.saveLog(memberId, LogTypeEnum.INCREASE.type, "订单取消,服务费退款", LogSourceEnum.REFUND.status, order.getBindFee(), merchantId,order.getId());
  887. // }
  888. }
  889. @Override
  890. public PageResult queryDadaPageList(Page page, DadaOrderListQuery orderQuery, SysUser user) {
  891. StopWatch stopWatch1 = new StopWatch();
  892. stopWatch1.start();
  893. if (!this.handleDadaStatusSearchCondition(orderQuery, user.getDadaDspId())) {
  894. page.setRecords(Lists.newArrayList());
  895. return new PageResult(page);
  896. }
  897. StopWatch stopWatch5 = new StopWatch();
  898. stopWatch5.start();
  899. List<DadaOrderListDto> dadaOrderList = baseMapper.queryDadaPageList(page, orderQuery);
  900. stopWatch5.stop();
  901. log.info("达达订单列表查询耗时: {} ms", stopWatch5.getTotalTimeMillis());
  902. List<Long> dadaOrderIds = dadaOrderList.stream().map(DadaOrderListDto::getId).collect(Collectors.toList());
  903. if (CollectionUtils.isEmpty(dadaOrderIds)) {
  904. page.setRecords(Lists.newArrayList());
  905. return new PageResult(page);
  906. }
  907. StopWatch stopWatch2 = new StopWatch();
  908. stopWatch2.start();
  909. List<Long> dadaMerchantIds = dadaOrderList.stream().map(DadaOrderListDto::getMerchantId).collect(Collectors.toList());
  910. List<Long> dadaShopIds = dadaOrderList.stream().map(DadaOrderListDto::getShopId).collect(Collectors.toList());
  911. // 获取商户名称
  912. List<Merchant> merchantList = iMerchantService.list(new QueryWrapper<Merchant>()
  913. .in("id", dadaMerchantIds)
  914. .eq("deleted", 0));
  915. Map<Long, Merchant> merchantMap = Optional.ofNullable(merchantList).map(list -> list.stream().collect(Collectors.toMap(Merchant::getId, v -> v, (v1, v2) -> v1))).orElse(new HashMap<>());
  916. // 获取门店名称
  917. List<Shop> shopList = iShopService.list(new QueryWrapper<Shop>()
  918. .in("id", dadaShopIds)
  919. .eq("deleted", 0));
  920. Map<Long, Shop> shopMap = Optional.ofNullable(shopList).map(list -> list.stream().collect(Collectors.toMap(Shop::getId, v -> v, (v1, v2) -> v1))).orElse(new HashMap<>());
  921. // 获取订单运费包
  922. List<OrderFreight> orderFreightList = iOrderFreightService.list(new QueryWrapper<OrderFreight>()
  923. .in("order_id", dadaOrderIds)
  924. .eq("deleted", 0));
  925. List<Long> freightPackageIds = orderFreightList.stream().map(OrderFreight::getFreightPackageId).distinct().collect(Collectors.toList());
  926. Map<Long, OrderFreight> orderFreightMap = Optional.of(orderFreightList).map(list -> list.stream().collect(Collectors.toMap(OrderFreight::getOrderId, v -> v, (v1, v2) -> v1))).orElse(new HashMap<>());
  927. // 获取运费包名称
  928. Map<Long, PackageFreight> packageFreightMap = new HashMap<>();
  929. if (CollectionUtils.isNotEmpty(freightPackageIds)) {
  930. List<PackageFreight> packageFreightList = iPackageFreightService.list(new QueryWrapper<PackageFreight>()
  931. .in("id", freightPackageIds)
  932. .eq("deleted", 0));
  933. packageFreightMap = Optional.of(packageFreightList).map(list -> list.stream().collect(Collectors.toMap(PackageFreight::getId, v -> v, (v1, v2) -> v1))).orElse(new HashMap<>());
  934. }
  935. // 获取订单日志
  936. List<OrderLog> dadaOrderLogList = iOrderLogService.list(new QueryWrapper<OrderLog>()
  937. .in("order_id", dadaOrderIds)
  938. .eq("deleted", 0));
  939. Map<Long, List<OrderLog>> orderLogListMap = dadaOrderLogList.stream().collect(Collectors.groupingBy(OrderLog::getOrderId));
  940. // 获取分佣
  941. List<ProfitsDetail> profitsDetailList = iProfitsDetailService.list(new QueryWrapper<ProfitsDetail>()
  942. .in("order_id", dadaOrderIds)
  943. .eq("deleted", 0));
  944. Map<Long, List<ProfitsDetail>> profitsDetailListMap = profitsDetailList.stream().collect(Collectors.groupingBy(ProfitsDetail::getOrderId));
  945. // 获取用户
  946. List<Long> memberIds = dadaOrderList.stream().map(DadaOrderListDto::getMemberId).collect(Collectors.toList());
  947. List<Member> memberList = iMemberService.list(new QueryWrapper<Member>().in("id", memberIds));
  948. Map<Long, Member> memberMap = Optional.of(memberList).map(list -> list.stream().collect(Collectors.toMap(Member::getId, v -> v, (v1, v2) -> v1))).orElse(new HashMap<>());
  949. stopWatch2.stop();
  950. log.info("达达订单列表查询前置耗时: {} ms", stopWatch2.getTotalTimeMillis());
  951. StopWatch stopWatch3 = new StopWatch();
  952. stopWatch3.start();
  953. for (DadaOrderListDto o : dadaOrderList) {
  954. // 设置商户名称
  955. if (merchantMap.get(o.getMerchantId()) != null) {
  956. o.setMerchantName(merchantMap.get(o.getMerchantId()).getMerchantName());
  957. }
  958. // 设置门店名称
  959. if (shopMap.get(o.getShopId()) != null) {
  960. o.setShopName(shopMap.get(o.getShopId()).getName());
  961. }
  962. // 设置运费包名称
  963. if (orderFreightMap.get(o.getId()) != null) {
  964. OrderFreight orderFreight = orderFreightMap.get(o.getId());
  965. if (packageFreightMap.get(orderFreight.getFreightPackageId()) != null) {
  966. o.setPackageFreightName(packageFreightMap.get(orderFreight.getFreightPackageId()).getName());
  967. }
  968. }
  969. // 设置门牌号,兼容app改版、老版本
  970. if (StringUtils.isNotBlank(o.getSendStreet()) && StringUtils.isNotBlank(o.getSendAddress()) && !o.getSendAddress().endsWith(o.getSendStreet())) {
  971. o.setSendAddress(o.getSendAddress() + o.getSendStreet());
  972. }
  973. if (StringUtils.isNotBlank(o.getReceiptStreet()) && StringUtils.isNotBlank(o.getReceiptAddress()) && !o.getReceiptAddress().endsWith(o.getReceiptStreet())) {
  974. o.setReceiptAddress(o.getReceiptAddress() + o.getReceiptStreet());
  975. }
  976. if (o.getPlatformType() != 0) {
  977. // 手动发单外卖单
  978. DspWaimai dspWaimai = iDspWaimaiService.selectNameByType(o.getPlatformType());
  979. o.setDspWaimaiName(dspWaimai == null ? null : dspWaimai.getName());
  980. }
  981. // 设置用户手机号
  982. Member member = memberMap.get(o.getMemberId());
  983. o.setMemberMobile(member == null ? null : member.getMobile());
  984. // 设置订单时间
  985. List<OrderLog> orderLogList = orderLogListMap.get(o.getId());
  986. this.setOrderTime(o, orderLogList);
  987. // 设置配送商名称
  988. DadaDsp dadaDsp = iDadaDspService.getById(o.getDadaDspId());
  989. o.setDadaDspName(dadaDsp == null ? "" : dadaDsp.getName());
  990. // 设置分佣
  991. List<ProfitsDetail> profitsDetails = profitsDetailListMap.get(o.getId());
  992. BigDecimal deliveryFee = BigDecimal.ZERO;
  993. if (CollectionUtils.isNotEmpty(profitsDetails)) {
  994. for (ProfitsDetail profitsDetail : profitsDetails) {
  995. if (UserTypeEnums.DADA_DELIVERY_RAP.getCode().equals(user.getType()) && profitsDetail.getDspId() != null) {
  996. deliveryFee = deliveryFee.add(profitsDetail.getCommission());
  997. }
  998. }
  999. }
  1000. o.setDeliveryFee(deliveryFee);
  1001. if (o.getWaimaiDeliveryTime() != null && o.getWaimaiDeliveryTime() != 0) {
  1002. o.setWaimaiDeliveryDate(new Date(o.getWaimaiDeliveryTime() * 1000));
  1003. }
  1004. // 设置原始订单号
  1005. if (o.getDeleted() == 1) {
  1006. String originalOrderSn = baseMapper.selectOriginalOrderSn1(o.getWaimaiOrderId());
  1007. if (originalOrderSn != null) {
  1008. o.setOriginalOrderSn(originalOrderSn);
  1009. }
  1010. }
  1011. }
  1012. stopWatch3.stop();
  1013. log.info("达达订单列表, 循环耗时: {} ms", stopWatch3.getTotalTimeMillis());
  1014. stopWatch1.stop();
  1015. log.info("达达订单列表接口, 总耗时: {} ms", stopWatch1.getTotalTimeMillis());
  1016. page.setRecords(dadaOrderList);
  1017. return new PageResult(page);
  1018. }
  1019. private void setOrderTime(DadaOrderListDto o, List<OrderLog> orderLogList) {
  1020. if (CollectionUtils.isNotEmpty(orderLogList)) {
  1021. // 接单时间
  1022. List<OrderLog> deliveryTimeList = orderLogList.stream().filter(item -> OrderStatusEnum.TO_BE_DELIVERED.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  1023. if (deliveryTimeList.size() > 0) {
  1024. o.setDeliveryTime(deliveryTimeList.get(0).getCreateTime());
  1025. } else {
  1026. o.setDeliveryTime(null);
  1027. }
  1028. // 取货时间
  1029. List<OrderLog> pickUpTimeList = orderLogList.stream().filter(item -> OrderStatusEnum.IN_DELIVERY.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  1030. if (pickUpTimeList.size() > 0) {
  1031. o.setPickUpTime(pickUpTimeList.get(0).getCreateTime());
  1032. }
  1033. // 完成时间
  1034. List<OrderLog> finishTimeList = orderLogList.stream().filter(item -> OrderStatusEnum.FINISH.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  1035. if (finishTimeList.size() > 0) {
  1036. o.setFinishTime(finishTimeList.get(0).getCreateTime());
  1037. } else {
  1038. o.setFinishTime(null);
  1039. }
  1040. // 取消时间
  1041. if (o.getDeliveryStatus() == -1) {
  1042. List<OrderLog> cancelTimeList = orderLogList.stream().filter(item -> OrderStatusEnum.CANCEL.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  1043. if (cancelTimeList.size() > 0) {
  1044. o.setCancelTime(cancelTimeList.get(0).getCreateTime());
  1045. }
  1046. } else if (o.getDeliveryStatus() == -2) {
  1047. List<OrderLog> cancelTimeList = orderLogList.stream().filter(item -> OrderStatusEnum.ABNORMAL.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  1048. if (cancelTimeList.size() > 0) {
  1049. o.setCancelTime(cancelTimeList.get(0).getCreateTime());
  1050. }
  1051. }
  1052. } else {
  1053. o.setDeliveryTime(null);
  1054. o.setFinishTime(null);
  1055. o.setPickUpTime(null);
  1056. o.setCancelTime(null);
  1057. }
  1058. }
  1059. @Override
  1060. public List<SystemOrderDto.DeliveryStatus> sumDadaByStatus(DadaOrderListQuery orderQuery, SysUser user, List<SystemOrderDto.DeliveryStatus> deliveryStatusList) {
  1061. if (!this.handleDadaStatusSearchCondition(orderQuery, user.getDadaDspId())) {
  1062. deliveryStatusList.forEach(deliveryStatus -> deliveryStatus.setLabel(deliveryStatus.getLabel() + " " + 0));
  1063. return deliveryStatusList;
  1064. }
  1065. List<SystemOrderDto> systemOrderList = baseMapper.selectDadaCountByStatus(orderQuery);
  1066. deliveryStatusList.forEach(deliveryStatus -> {
  1067. long count;
  1068. if (!DeliveryStatusEnum.FINISH.getStatus().equals(deliveryStatus.getDeliveryStatus())) {
  1069. // 其它状态
  1070. count = systemOrderList.stream().filter(item -> ((item.getWmstatus() == null || item.getWmstatus() != 4)
  1071. && deliveryStatus.getDeliveryStatus().equals(item.getDeliveryStatus()))).count();
  1072. } else {
  1073. // 平台完成
  1074. count = systemOrderList.stream().filter(item -> DeliveryStatusEnum.FINISH.getStatus().equals(item.getDeliveryStatus())).count();
  1075. }
  1076. deliveryStatus.setLabel(deliveryStatus.getLabel() + " " + count);
  1077. });
  1078. return deliveryStatusList;
  1079. }
  1080. private boolean handleDadaStatusSearchCondition(DadaOrderListQuery orderQuery, Long dadaDspId) {
  1081. List<Long> merchantIds = Lists.newArrayList();
  1082. if (StringUtils.isNotBlank(orderQuery.getMerchantName())) {
  1083. merchantIds = iMerchantService.list(new QueryWrapper<Merchant>()
  1084. .like("merchant_name", orderQuery.getMerchantName())
  1085. .eq("deleted", 0)
  1086. .eq(dadaDspId != null, "dada_dsp_id", dadaDspId))
  1087. .stream()
  1088. .map(Merchant::getId)
  1089. .collect(Collectors.toList());
  1090. if (CollectionUtils.isEmpty(merchantIds)) {
  1091. return false;
  1092. }
  1093. orderQuery.setMerchantIds(merchantIds);
  1094. }
  1095. if (StringUtils.isNotBlank(orderQuery.getShopName())) {
  1096. List<Long> shopIds = iShopService.list(new QueryWrapper<Shop>()
  1097. .in(CollectionUtils.isNotEmpty(merchantIds), "merchant_id", merchantIds)
  1098. .like("name", orderQuery.getShopName())
  1099. .eq("deleted", 0))
  1100. .stream()
  1101. .map(Shop::getId)
  1102. .collect(Collectors.toList());
  1103. if (CollectionUtils.isEmpty(shopIds)) {
  1104. return false;
  1105. }
  1106. orderQuery.setShopIds(shopIds);
  1107. }
  1108. return true;
  1109. }
  1110. @Override
  1111. public PageResult queryPageListNew(Page page, SystemOrderDto order, SysUser user, Integer merchantId) {
  1112. StopWatch stopWatch = new StopWatch();
  1113. stopWatch.start();
  1114. StopWatch stopWatch1 = new StopWatch();
  1115. stopWatch1.start();
  1116. boolean result = this.handleListSearchCondition(order, user);
  1117. stopWatch1.stop();
  1118. log.info("列表查询条件处理,耗时: {} ms", stopWatch1.getTotalTimeMillis());
  1119. if (!result) {
  1120. page.setRecords(Lists.newArrayList());
  1121. return new PageResult(page);
  1122. }
  1123. StopWatch stopWatch3 = new StopWatch();
  1124. stopWatch3.start();
  1125. List<SystemOrderDto> orderList = baseMapper.queryPageListNew(page, order);
  1126. stopWatch3.stop();
  1127. log.info("列表查询,耗时: {} ms", stopWatch3.getTotalTimeMillis());
  1128. List<Long> orderIds = orderList.stream().map(SystemOrderDto::getId).collect(Collectors.toList());
  1129. if (CollectionUtils.isEmpty(orderIds)) {
  1130. page.setRecords(Lists.newArrayList());
  1131. return new PageResult(page);
  1132. }
  1133. StopWatch stopWatch2 = new StopWatch();
  1134. stopWatch2.start();
  1135. List<Long> merchantIds = orderList.stream().map(SystemOrderDto::getMerchantId).collect(Collectors.toList());
  1136. List<Long> shopIds = orderList.stream().map(SystemOrderDto::getShopId).collect(Collectors.toList());
  1137. // 获取商户名称
  1138. List<Merchant> merchantList = iMerchantService.list(new QueryWrapper<Merchant>()
  1139. .in("id", merchantIds)
  1140. .eq("deleted", 0));
  1141. Map<Long, Merchant> merchantMap = Optional.ofNullable(merchantList).map(list -> list.stream().collect(Collectors.toMap(Merchant::getId, v -> v, (v1, v2) -> v1))).orElse(new HashMap<>());
  1142. // 获取门店名称
  1143. List<Shop> shopList = iShopService.list(new QueryWrapper<Shop>()
  1144. .in("id", shopIds)
  1145. .eq("deleted", 0));
  1146. Map<Long, Shop> shopMap = Optional.ofNullable(shopList).map(list -> list.stream().collect(Collectors.toMap(Shop::getId, v -> v, (v1, v2) -> v1))).orElse(new HashMap<>());
  1147. // 获取订单日志
  1148. List<OrderLog> orderLogList = iOrderLogService.list(new QueryWrapper<OrderLog>()
  1149. .in("order_id", orderIds)
  1150. .eq("deleted", 0));
  1151. Map<Long, List<OrderLog>> orderLogListMap = orderLogList.stream().collect(Collectors.groupingBy(OrderLog::getOrderId));
  1152. // 获取分佣
  1153. List<ProfitsDetail> profitsDetailList = iProfitsDetailService.list(new QueryWrapper<ProfitsDetail>()
  1154. .in("order_id", orderIds)
  1155. .eq("deleted", 0));
  1156. Map<Long, List<ProfitsDetail>> profitsDetailListMap = profitsDetailList.stream().collect(Collectors.groupingBy(ProfitsDetail::getOrderId));
  1157. // 获取用户
  1158. List<Long> memberIds = orderList.stream().map(SystemOrderDto::getMemberId).filter(Objects::nonNull).collect(Collectors.toList());
  1159. Map<Long, Member> memberMap = new HashMap<>();
  1160. if (CollectionUtils.isNotEmpty(memberIds)) {
  1161. List<Member> memberList = iMemberService.list(new QueryWrapper<Member>().in("id", memberIds));
  1162. memberMap = Optional.of(memberList).map(list -> list.stream().collect(Collectors.toMap(Member::getId, v -> v, (v1, v2) -> v1))).orElse(new HashMap<>());
  1163. }
  1164. // 员工信息
  1165. List<Long> personnelIds = orderList.stream().map(SystemOrderDto::getPersonnelId).filter(Objects::nonNull).collect(Collectors.toList());
  1166. Map<Long, Personnel> personnelMap = new HashMap<>();
  1167. if (CollectionUtils.isNotEmpty(personnelIds)) {
  1168. List<Personnel> personnelList = iPersonnelService.list(new QueryWrapper<Personnel>().in("id", personnelIds));
  1169. personnelMap = Optional.of(personnelList).map(list -> list.stream().collect(Collectors.toMap(Personnel::getId, v -> v, (v1, v2) -> v1))).orElse(new HashMap<>());
  1170. }
  1171. // 外卖平台
  1172. List<Integer> orderTypes = orderList.stream().map(SystemOrderDto::getOrderType).collect(Collectors.toList());
  1173. List<DspWaimai> dspWaimaiList = iDspWaimaiService.list(new QueryWrapper<DspWaimai>().in("type", orderTypes));
  1174. Map<Integer, DspWaimai> dspWaimaiMap = Optional.of(dspWaimaiList).map(list -> list.stream().collect(Collectors.toMap(DspWaimai::getType, v -> v, (v1, v2) -> v1))).orElse(new HashMap<>());
  1175. // 配送商名称
  1176. List<Long> dadaDspIds = orderList.stream().map(SystemOrderDto::getDadaDspId).filter(Objects::nonNull).collect(Collectors.toList());
  1177. Map<Long, DadaDsp> dadaDspMap = new HashMap<>();
  1178. if (CollectionUtils.isNotEmpty(dadaDspIds)) {
  1179. List<DadaDsp> dadaDspList = iDadaDspService.list(new QueryWrapper<DadaDsp>().in("id", dadaDspIds));
  1180. dadaDspMap = Optional.of(dadaDspList).map(list -> list.stream().collect(Collectors.toMap(DadaDsp::getId, v -> v, (v1, v2) -> v1))).orElse(new HashMap<>());
  1181. }
  1182. // 代理商名称
  1183. List<Long> agentIds = orderList.stream().map(SystemOrderDto::getAgentId).collect(Collectors.toList());
  1184. List<Agent> agentList = iAgentService.list(new QueryWrapper<Agent>().in("id", agentIds));
  1185. Map<Long, Agent> agentMap = Optional.of(agentList).map(list -> list.stream().collect(Collectors.toMap(Agent::getId, v -> v, (v1, v2) -> v1))).orElse(new HashMap<>());
  1186. stopWatch2.stop();
  1187. log.info("订单列表查询前置耗时: {} ms", stopWatch2.getTotalTimeMillis());
  1188. StopWatch stopWatch4 = new StopWatch();
  1189. stopWatch4.start();
  1190. for (SystemOrderDto o : orderList) {
  1191. // 查询所有订单记录
  1192. List<OrderLog> orderLogs = orderLogListMap.get(o.getId());
  1193. if (CollectionUtils.isNotEmpty(orderLogs)) {
  1194. // 接单时间
  1195. List<OrderLog> deliveryTimeList = orderLogs.stream().filter(item -> OrderStatusEnum.TO_BE_DELIVERED.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  1196. if (deliveryTimeList.size() > 0) {
  1197. o.setDeliveryTime(deliveryTimeList.get(0).getCreateTime());
  1198. } else {
  1199. o.setDeliveryTime(null);
  1200. }
  1201. // 取货时间
  1202. List<OrderLog> pickUpTimeList = orderLogs.stream().filter(item -> OrderStatusEnum.IN_DELIVERY.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  1203. if (pickUpTimeList.size() > 0) {
  1204. o.setPickUpTime(pickUpTimeList.get(0).getCreateTime());
  1205. }
  1206. // 完成时间
  1207. List<OrderLog> finishTimeList = orderLogs.stream().filter(item -> OrderStatusEnum.FINISH.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  1208. if (finishTimeList.size() > 0) {
  1209. o.setFinishTime(finishTimeList.get(0).getCreateTime());
  1210. } else {
  1211. o.setFinishTime(null);
  1212. }
  1213. // 取消时间
  1214. if (o.getDeliveryStatus() == -1) {
  1215. List<OrderLog> cancelTimeList = orderLogs.stream().filter(item -> OrderStatusEnum.CANCEL.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  1216. if (cancelTimeList.size() > 0) {
  1217. o.setCancelTime(cancelTimeList.get(0).getCreateTime());
  1218. }
  1219. } else if (o.getDeliveryStatus() == -2) {
  1220. List<OrderLog> cancelTimeList = orderLogs.stream().filter(item -> OrderStatusEnum.ABNORMAL.getStatus().equals(item.getOrderStatus())).collect(Collectors.toList());
  1221. if (cancelTimeList.size() > 0) {
  1222. o.setCancelTime(cancelTimeList.get(0).getCreateTime());
  1223. }
  1224. }
  1225. }
  1226. // 设置门牌号,兼容app改版、老版本
  1227. if (StringUtils.isNotBlank(o.getSendStreet()) && StringUtils.isNotBlank(o.getSendAddress()) && !o.getSendAddress().endsWith(o.getSendStreet())) {
  1228. o.setSendAddress(o.getSendAddress() + o.getSendStreet());
  1229. }
  1230. if (StringUtils.isNotBlank(o.getReceiptStreet()) && StringUtils.isNotBlank(o.getReceiptAddress()) && !o.getReceiptAddress().endsWith(o.getReceiptStreet())) {
  1231. o.setReceiptAddress(o.getReceiptAddress() + o.getReceiptStreet());
  1232. }
  1233. // 商户名称
  1234. Merchant merchant = merchantMap.get(o.getMerchantId());
  1235. o.setMerchantName(merchant == null ? null : merchant.getMerchantName());
  1236. // 门店名称
  1237. Shop shop = shopMap.get(o.getShopId());
  1238. o.setShopName(shop == null ? null : shop.getName());
  1239. // 用户信息
  1240. Member member = memberMap.get(o.getMemberId());
  1241. o.setMemberName(member == null ? null : member.getNickname());
  1242. o.setMemberMobile(member == null ? null : member.getMobile());
  1243. // 员工信息
  1244. Personnel personnel = personnelMap.get(o.getPersonnelId());
  1245. o.setPersonnelName(personnel == null ? null : personnel.getName());
  1246. // 外卖名称
  1247. if (o.getWaimaiOrderId() != null) {
  1248. DspWaimai dspWaimai = dspWaimaiMap.get(o.getOrderType());
  1249. o.setDspWaimaiName(dspWaimai == null ? null : dspWaimai.getName());
  1250. } else if (o.getPlatformType() != 0) {
  1251. // 手动发单外卖单
  1252. DspWaimai dspWaimai = iDspWaimaiService.selectNameByType(o.getPlatformType());
  1253. o.setDspWaimaiName(dspWaimai == null ? null : dspWaimai.getName());
  1254. }
  1255. // 配送商名称
  1256. DadaDsp dadaDsp = dadaDspMap.get(o.getDadaDspId());
  1257. o.setDadaDspName(dadaDsp == null ? "" : dadaDsp.getName());
  1258. // 增加代理商名称
  1259. Agent agent = agentMap.get(o.getAgentId());
  1260. o.setAgentName(agent == null ? null : agent.getName());
  1261. // 查看自己的佣金
  1262. List<ProfitsDetail> profitsDetails = profitsDetailListMap.get(o.getId());
  1263. if (CollectionUtils.isNotEmpty(profitsDetails)) {
  1264. if (user.getType().equals(UserTypeEnums.AGENT.getCode())) {
  1265. List<ProfitsDetail> profitsDetail = profitsDetails.stream().filter(item -> user.getAgentId().equals(item.getAgentId())).collect(Collectors.toList());
  1266. if (profitsDetail.size() > 0) {
  1267. o.setGetCommission(profitsDetail.get(0).getCommission());
  1268. }
  1269. } else if (user.getType().equals(UserTypeEnums.DSP.getCode())) {
  1270. List<ProfitsDetail> profitsDetail = profitsDetails.stream().filter(item -> user.getDspId().equals(item.getDspId())).collect(Collectors.toList());
  1271. if (profitsDetail.size() > 0) {
  1272. o.setGetCommission(profitsDetail.get(0).getCommission());
  1273. }
  1274. }
  1275. }
  1276. if (o.getWaimaiDeliveryTime() != null && o.getWaimaiDeliveryTime() != 0) {
  1277. o.setWaimaiDeliveryDate(new Date(o.getWaimaiDeliveryTime() * 1000));
  1278. }
  1279. if (o.getDeleted() == 1) {
  1280. String originalOrderSn = baseMapper.selectOriginalOrderSn1(o.getWaimaiOrderId());
  1281. if (originalOrderSn != null) {
  1282. o.setOriginalOrderSn(originalOrderSn);
  1283. }
  1284. }
  1285. // 手动发单外卖平台名称
  1286. if ((o.getWaimaiOrderId() == null) && (o.getPlatformType() != null) && (o.getPlatformType() != 0)) {
  1287. Integer platformType = o.getPlatformType();
  1288. if (platformType == 1) {
  1289. // 美团
  1290. o.setPlatformName("美团");
  1291. } else if (platformType == 2) {
  1292. // 饿了么
  1293. o.setPlatformName("饿了么");
  1294. } else if (platformType == 3) {
  1295. // 饿百零售
  1296. o.setPlatformName("饿百零售");
  1297. } else if (platformType == 5) {
  1298. // 美团闪购
  1299. o.setPlatformName("美团闪购");
  1300. } else if (platformType == 6) {
  1301. // 京东到家
  1302. o.setPlatformName("京东到家");
  1303. }
  1304. }
  1305. }
  1306. stopWatch4.stop();
  1307. log.info("列表循环耗时: {} ms", stopWatch4.getTotalTimeMillis());
  1308. page.setRecords(orderList);
  1309. stopWatch.stop();
  1310. log.info("列表查询总耗时: {} ms", stopWatch.getTotalTimeMillis());
  1311. return new PageResult(page);
  1312. }
  1313. @Override
  1314. public OrderInfoDto getOrderInfoByOrderId(Long orderId) {
  1315. return baseMapper.getOrderInfoByOrderId(orderId);
  1316. }
  1317. @Override
  1318. public List<SubsidyStatisticsDto> getSubsidyList(Page page, SubsidyStatisticsQuery query) {
  1319. return baseMapper.getSubsidyList(page, query);
  1320. }
  1321. @Override
  1322. public Integer countPersonalOrder(String lastDayTime, Long memberId) {
  1323. return baseMapper.countPersonalOrder(lastDayTime, memberId);
  1324. }
  1325. }