| package com.zy.third.erp.task; | 
|   | 
| import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
| import com.zy.asrs.entity.Order; | 
| import com.zy.asrs.entity.OrderDetl; | 
| import com.zy.asrs.service.OrderDetlService; | 
| import com.zy.asrs.service.OrderService; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Component; | 
|   | 
| import java.util.Date; | 
| import java.util.List; | 
| import java.util.Optional; | 
|   | 
| @Slf4j | 
| @Component | 
| public class ERPInOrOutCancelService { | 
|   | 
|     @Autowired | 
|     private OrderService orderService; | 
|   | 
|     @Autowired | 
|     private OrderDetlService orderDetlService; | 
|   | 
|   | 
|     public com.zy.third.lk.entity.InCancelTB tryCancel(String orderNo) { | 
|         com.zy.third.lk.entity.InCancelTB lkCancel = new com.zy.third.lk.entity.InCancelTB(); | 
|   | 
|         List<Order> targets = orderService.selectList(new EntityWrapper<Order>() | 
|                 .eq("order_no",orderNo)); | 
|         log.info("要取消的订单:{}", targets); | 
|         if (targets.isEmpty()) { | 
|             lkCancel.setBillNo(orderNo); | 
|             //erp方要求,订单找不到,返回1 | 
|             lkCancel.setOpFlag(1); | 
|             lkCancel.setMakeDate(new Date()); | 
|             return lkCancel; | 
|         } else { | 
|             //默认订单id不能重复 | 
|             Order order = targets.get(0); | 
|             List<OrderDetl> detlList = orderDetlService.selectItem(order.getOrderNo()); | 
|             log.info("要取消的订单详情:{}", detlList); | 
|             Optional<OrderDetl> any = detlList.stream().filter(s -> s.getQty().compareTo(0D) > 0).findAny(); | 
|             if (order.getSettle() > 1L || any.isPresent()) { | 
|                 lkCancel.setBillNo(orderNo); | 
|                 lkCancel.setOpFlag(2); | 
|                 lkCancel.setMakeDate(new Date()); | 
|                 return lkCancel; | 
|             } | 
|             orderService.addToLogTable(order); | 
|             orderService.delete(new EntityWrapper<Order>() | 
|                     .eq("order_no", order.getOrderNo())); | 
|             detlList.stream().forEach(d -> orderDetlService.addToLogTable(d)); | 
|             orderDetlService.delete(new EntityWrapper<OrderDetl>() | 
|                     .eq("order_no", order.getOrderNo())); | 
|             lkCancel.setBillNo(orderNo); | 
|             lkCancel.setOpFlag(1); | 
|             lkCancel.setMakeDate(new Date()); | 
|             return lkCancel; | 
|         } | 
|   | 
|     } | 
|   | 
|   | 
| } |