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 implements OrderNoRuleService { @Autowired private OrderService orderService; @Autowired private OrderTypeService orderTypeService; @Override public String getOrderNo(Integer orderType) { List list = this.list(new LambdaQueryWrapper().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 list1 = orderTypeService.list(new LambdaQueryWrapper().eq(OrderType::getType, orderType)); ArrayList 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 orders = orderService.list(new LambdaQueryWrapper().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(); } }