自动化立体仓库 - WMS系统
1
zc
2024-09-28 f72196e318b1ee30db5add4b36e4e4102d7cd88a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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;
        }
 
    }
 
 
}