#
Junjie
2024-08-02 e83dacb5066a86db29dbdc232218d8aba6adc95f
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
67
68
69
70
71
72
73
74
75
76
77
78
package com.zy.asrs.wms.asrs.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wms.asrs.entity.Order;
import com.zy.asrs.wms.asrs.entity.OrderType;
import com.zy.asrs.wms.asrs.mapper.OrderNoRuleMapper;
import com.zy.asrs.wms.asrs.entity.OrderNoRule;
import com.zy.asrs.wms.asrs.service.OrderNoRuleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zy.asrs.wms.asrs.service.OrderService;
import com.zy.asrs.wms.asrs.service.OrderTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
@Service("orderNoRuleService")
public class OrderNoRuleServiceImpl extends ServiceImpl<OrderNoRuleMapper, OrderNoRule> implements OrderNoRuleService {
 
    @Autowired
    private OrderService orderService;
    @Autowired
    private OrderTypeService orderTypeService;
 
    @Override
    public String getOrderNo(Integer orderType) {
        List<OrderNoRule> list = this.list(new LambdaQueryWrapper<OrderNoRule>().eq(OrderNoRule::getOrderType, orderType).eq(OrderNoRule::getStatus, 1));
        if (list.isEmpty()) {
            throw new CoolException("订单类型无规则");
        }
 
        OrderNoRule orderNoRule = list.get(0);
        StringBuffer buffer = new StringBuffer();
        buffer.append(orderNoRule.getOrderConst());//订单常量
 
        String pattern = "yyyyMMddHHmmss";
        if (orderNoRule.getTimeRule() == 0) {
            pattern = "yyyyMMdd";
        }
 
        SimpleDateFormat format = new SimpleDateFormat(pattern);
        buffer.append(format.format(new Date()));//订单时间
 
 
        if(orderType == 1 || orderType == 2) {
            //查当天订单数量
            List<OrderType> list1 = orderTypeService.list(new LambdaQueryWrapper<OrderType>().eq(OrderType::getType, orderType));
            ArrayList<Long> longs = new ArrayList<>();
            for (OrderType orderType1 : list1) {
                longs.add(orderType1.getId());
            }
 
            LocalDateTime startOfDay = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
            LocalDateTime endOfDay = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
            List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getOrderType, longs).between(Order::getCreateTime, startOfDay, endOfDay));
            int size = orders.size();
            String sizeStr = String.valueOf(size);
            StringBuilder sizeBuilder = new StringBuilder(sizeStr);
            if (sizeStr.length() < orderNoRule.getIncreaseNum()) {
                for (int i = 0; i < orderNoRule.getIncreaseNum() - sizeStr.length(); i++) {
                    sizeBuilder.insert(0, "0");
                }
            }
            buffer.append(sizeBuilder);
        }else {
            //查当天波次订单数量
            //todo..
        }
        return buffer.toString();
    }
}