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 targets = orderService.selectList(new EntityWrapper() .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 detlList = orderDetlService.selectItem(order.getOrderNo()); log.info("要取消的订单详情:{}", detlList); Optional 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() .eq("order_no", order.getOrderNo())); detlList.stream().forEach(d -> orderDetlService.addToLogTable(d)); orderDetlService.delete(new EntityWrapper() .eq("order_no", order.getOrderNo())); lkCancel.setBillNo(orderNo); lkCancel.setOpFlag(1); lkCancel.setMakeDate(new Date()); return lkCancel; } } }