Преглед изворни кода

线下销售单增加提货时间检查单量

FengChaoYu пре 3 недеља
родитељ
комит
cda4a6e091

+ 4 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/order/OrderBuyBean.java

@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotEmpty;
 import java.math.BigDecimal;
 import java.util.Date;
@@ -50,4 +51,7 @@ public class OrderBuyBean {
     @ApiModelProperty("预约提货结束时间")
     private Date appointmentPickEndTime;
 
+    @ApiModelProperty("提货开始时间")
+    private String pickTimeId;
+
 }

+ 4 - 2
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/controller/common/CommonController.java

@@ -224,8 +224,10 @@ public class CommonController {
 
     @PostMapping("/order/pick/time/list")
     @ApiParam(value ="列表")
-    public ResponseHelper<List<OrderPickTimeConfig>> orderPickTimeList() {
-        List<OrderPickTimeConfig> list = commonLogic.orderPickTimeList();
+    public ResponseHelper<List<OrderPickTimeConfig>> orderPickTimeList(
+            @ApiParam(required = true, value = "仓储id") @RequestParam String storageId
+    ) {
+        List<OrderPickTimeConfig> list = commonLogic.orderPickTimeList(storageId);
         return ResponseHelper.success(list);
     }
 

+ 2 - 1
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/common/CommonLogic.java

@@ -382,10 +382,11 @@ public class CommonLogic {
         return infUrl;
     }
 
-    public List<OrderPickTimeConfig> orderPickTimeList() {
+    public List<OrderPickTimeConfig> orderPickTimeList(String storageId) {
         CurrentCompanyWechat currentCompanyWechat = getCurrentCompanyWechat();
         return orderPickTimeConfigService.lambdaQuery()
                 .eq(OrderPickTimeConfig::getCompanyWechatId, currentCompanyWechat.getCompanyWechatId())
+                .eq(OrderPickTimeConfig::getStorageId, storageId)
                 .list();
     }
 }

+ 27 - 1
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/order/OrderLogic.java

@@ -2,6 +2,7 @@ package com.gree.mall.miniapp.logic.order;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -150,7 +151,8 @@ public class OrderLogic {
     GoodsMaterialStorageService goodsMaterialStorageService;
     @Resource
     StorageService storageService;
-
+    @Resource
+    OrderPickTimeConfigService orderPickTimeConfigService;
 
     /**
      * 立即购买
@@ -179,6 +181,30 @@ public class OrderLogic {
         }
         CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat(request);
 
+        // 检查时间段有没单量限制
+        if (orderBuyBean.getTakeGoodsType().equals(TakeGoodsTypeEnum.Z.getKey())) {
+            final OrderPickTimeConfig pickTimeConfig = orderPickTimeConfigService.getById(orderBuyBean.getPickTimeId());
+            if (Objects.isNull(pickTimeConfig)) {
+                throw new RemoteServiceException("仓储未配置此时间段");
+            }
+
+            if (DateUtil.date().getTime() > orderBuyBean.getAppointmentPickStartTime().getTime()) {
+                throw new RemoteServiceException("提交的时间不能大于选择的自提开始时间");
+            }
+
+            if (pickTimeConfig.getLimitNum() > 0) {
+                final Integer orderCount = orderInfoService.lambdaQuery()
+                        .eq(OrderInfo::getCompanyWechatId, currentCompanyWechat.getCompanyWechatId())
+                        .eq(OrderInfo::getPickStorageId, orderBuyBean.getStorageId())
+                        .eq(OrderInfo::getExamineStatus, ExamineStatusEnum.OK.getKey())
+                        .between(OrderInfo::getCreateTime, orderBuyBean.getAppointmentPickStartTime(), orderBuyBean.getAppointmentPickEndTime())
+                        .count();
+                if (orderCount > pickTimeConfig.getLimitNum()) {
+                    throw new RemoteServiceException("仓储此时间段提货的订单数量超过限制" + pickTimeConfig.getLimitNum());
+                }
+            }
+        }
+
         final Storage storage = storageService.getById(orderBuyBean.getStorageId());
         //订单
         OrderInfo orderInfo = new OrderInfo();

+ 4 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/order/OrderInfoAddBean.java

@@ -66,6 +66,10 @@ public class OrderInfoAddBean {
     @ApiModelProperty("商品明细(只用传 物料编号,数量,单价)")
     private List<OrderDetail> orderDetails;
 
+    @NotBlank(message = "提货时间段不能为空")
+    @ApiModelProperty("提货开始时间")
+    private String pickTimeId;
+
     @NotBlank(message = "提货时间不能为空")
     @Pattern(regexp = "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$", message = "提货时间格式有误")
     @ApiModelProperty("提货开始时间")

+ 43 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/order/OrderPickTimeConfigVO.java

@@ -0,0 +1,43 @@
+package com.gree.mall.manager.bean.order;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.gree.mall.manager.annotation.ZfireField;
+import com.gree.mall.manager.plus.entity.OrderPickTimeConfig;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel
+@Data
+@ZfireField(tbName = "a")
+public class OrderPickTimeConfigVO {
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "id")
+    private String id;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "企业微信id")
+    private String companyWechatId;
+
+    @ApiModelProperty(value = "企业名称")
+    private String companyWechatName;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "仓储id")
+    private String storageId;
+
+    @ZfireField(tbName = "b")
+    @ApiModelProperty(value = "仓储名称")
+    private String storageName;
+
+    @ApiModelProperty(value = "限制数量")
+    private Integer limitNum;
+
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+}

+ 9 - 0
mall-server-api/src/main/java/com/gree/mall/manager/commonmapper/CommonMapper.java

@@ -17,6 +17,7 @@ import com.gree.mall.manager.bean.listvo.workorder.*;
 import com.gree.mall.manager.bean.member.UserCompanyAttrBean;
 import com.gree.mall.manager.bean.member.UserCompanyDeliveryBean;
 import com.gree.mall.manager.bean.order.LeaseOrderVO;
+import com.gree.mall.manager.bean.order.OrderPickTimeConfigVO;
 import com.gree.mall.manager.bean.order.refund.OrderOfflineRefundVO;
 import com.gree.mall.manager.bean.settle.SettleExpenseItemVO;
 import com.gree.mall.manager.bean.settle.SettleExpenseVO;
@@ -574,4 +575,12 @@ public interface CommonMapper {
                                              @Param("companyWechatId") String companyWechatId,
                                              @Param("nickName") String nickName,
                                              @Param("mobile") String mobile);
+
+    /**
+     * 仓储提货时间配置
+     * @param page
+     * @param zfireParamBean
+     * @return
+     */
+    IPage<OrderPickTimeConfigVO> orderPickTimeConfigList2(Page page, @Param("ex") ZfireParamBean zfireParamBean);
 }

+ 51 - 5
mall-server-api/src/main/java/com/gree/mall/manager/controller/common/OrderPickTimeConfigController.java

@@ -1,16 +1,28 @@
 package com.gree.mall.manager.controller.common;
 
+import cn.hutool.core.lang.TypeReference;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gree.mall.manager.annotation.ZfireList;
+import com.gree.mall.manager.bean.listvo.User2VO;
+import com.gree.mall.manager.bean.material.vender.WebsitVenderVO;
+import com.gree.mall.manager.bean.order.OrderPickTimeConfigVO;
+import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.helper.ResponseHelper;
 import com.gree.mall.manager.logic.common.OrderPickTimeConfigLogic;
 import com.gree.mall.manager.plus.entity.OrderPickTimeConfig;
+import com.gree.mall.manager.plus.entity.WebsitVender;
+import com.gree.mall.manager.zfire.bean.ZfireParamBean;
+import com.gree.mall.manager.zfire.util.FieldUtils;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @Slf4j
@@ -24,9 +36,43 @@ public class OrderPickTimeConfigController {
 
     @PostMapping("/list")
     @ApiParam(value ="列表")
-    public ResponseHelper<List<OrderPickTimeConfig>> list() {
-        List<OrderPickTimeConfig> list = orderPickTimeConfigLogic.list();
+    public ResponseHelper<List<OrderPickTimeConfig>> list(
+            @ApiParam(required = true, value = "仓储id") @RequestParam String storageId
+    ) {
+        List<OrderPickTimeConfig> list = orderPickTimeConfigLogic.list(storageId);
         return ResponseHelper.success(list);
     }
 
+    @ZfireList
+    @PostMapping("/list2")
+    @ApiOperation(value = "仓储时间配置-列表")
+    public ResponseHelper<Page<OrderPickTimeConfigVO>> list2(
+            @RequestBody ZfireParamBean zfireParamBean
+    ) throws RemoteServiceException {
+        IPage<OrderPickTimeConfigVO> page = orderPickTimeConfigLogic.list2(zfireParamBean);
+        return ResponseHelper.success(page, new TypeReference<OrderPickTimeConfigVO>() {
+        });
+    }
+
+    @PostMapping("/list2/export")
+    @ApiOperation("仓储时间配置-导出")
+    public void listExport(
+            @RequestBody ZfireParamBean zfireParamBean,
+            HttpServletRequest request,
+            HttpServletResponse response
+    ) throws Exception {
+        //2.查询要导出的内容
+        IPage<OrderPickTimeConfigVO> baseVOIPage = orderPickTimeConfigLogic.list2(zfireParamBean);
+        //3.导出
+        FieldUtils.exportData(baseVOIPage.getRecords(), zfireParamBean.getExportFields(), request, response);
+    }
+
+    @PostMapping("/save")
+    @ApiOperation(value = "仓储时间配置-保存")
+    public ResponseHelper add(
+            @RequestBody List<OrderPickTimeConfig> configList
+    ) throws Exception {
+        orderPickTimeConfigLogic.save(configList);
+        return ResponseHelper.success();
+    }
 }

+ 19 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/StorageLogic.java

@@ -13,6 +13,7 @@ import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
 import com.gree.mall.manager.plus.entity.AdminUser;
 import com.gree.mall.manager.plus.entity.AdminUserStorageRela;
+import com.gree.mall.manager.plus.entity.OrderPickTimeConfig;
 import com.gree.mall.manager.plus.entity.Storage;
 import com.gree.mall.manager.plus.service.AdminUserService;
 import com.gree.mall.manager.plus.service.AdminUserStorageRelaService;
@@ -108,6 +109,15 @@ public class StorageLogic {
         storage.setStorageId(IdWorker.getIdStr());
         storageService.save(storage);
 
+        // 初始化一个仓储提货时间配置
+        OrderPickTimeConfig config = new OrderPickTimeConfig()
+                .setCompanyWechatId(storage.getCompanyWechatId())
+                .setCompanyWechatName(storage.getCompanyName())
+                .setStorageId(storage.getStorageId())
+                .setStartTime("09:00")
+                .setEndTime("03:00");
+        config.insert();
+
         initCompanyAccountAndStorageRela(adminUser.getCompanyWechatId(), Collections.singletonList(storage.getStorageId()));
     }
 
@@ -212,6 +222,15 @@ public class StorageLogic {
                 .setType("商品")
                 .setIsDefault(true);
         storage.insert();
+        // 初始化一个仓储提货时间配置
+        OrderPickTimeConfig config = new OrderPickTimeConfig()
+                .setCompanyWechatId(adminCompanyWechat.getCompanyWechatId())
+                .setCompanyWechatName(adminCompanyWechat.getCompanyName())
+                .setStorageId(storage.getStorageId())
+                .setStartTime("09:00")
+                .setEndTime("03:00");
+        config.insert();
+
         initCompanyAccountAndStorageRela(adminCompanyWechat.getCompanyWechatId(), Collections.singletonList(storage.getStorageId()));
     }
 

+ 138 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/common/OrderPickTimeConfigLogic.java

@@ -1,14 +1,23 @@
 package com.gree.mall.manager.logic.common;
 
 import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
+import com.gree.mall.manager.bean.material.vender.WebsitVenderVO;
+import com.gree.mall.manager.bean.order.OrderPickTimeConfigVO;
+import com.gree.mall.manager.commonmapper.CommonMapper;
+import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.plus.entity.OrderPickTimeConfig;
 import com.gree.mall.manager.plus.service.OrderPickTimeConfigService;
+import com.gree.mall.manager.zfire.bean.ZfireParamBean;
+import com.gree.mall.manager.zfire.util.FieldUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @RequiredArgsConstructor
@@ -18,14 +27,142 @@ public class OrderPickTimeConfigLogic {
 
     private final CommonLogic commonLogic;
     private final OrderPickTimeConfigService orderPickTimeConfigService;
+    private final CommonMapper commonMapper;
 
 
-    public List<OrderPickTimeConfig> list() {
+    public List<OrderPickTimeConfig> list(String storageId) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
         return orderPickTimeConfigService.lambdaQuery()
                 .eq(StringUtils.isNotBlank(adminUser.getCompanyWechatId()), OrderPickTimeConfig::getCompanyWechatId, adminUser.getCompanyWechatId())
                 .in(StringUtils.isBlank(adminUser.getCompanyWechatId())
                         && CollectionUtil.isNotEmpty(adminUser.getCompanyWechatIds()), OrderPickTimeConfig::getCompanyWechatId, adminUser.getCompanyWechatIds())
+                .eq(OrderPickTimeConfig::getStorageId, storageId)
+                .orderByDesc(OrderPickTimeConfig::getId)
                 .list();
     }
+
+    public IPage<OrderPickTimeConfigVO> list2(ZfireParamBean zfireParamBean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        if (CollectionUtil.isEmpty(zfireParamBean.getParams())) {
+            zfireParamBean.setParams(new ArrayList<>());
+        }
+
+        FieldUtils.supplyParam(zfireParamBean, OrderPickTimeConfigVO.class, adminUser);
+        return commonMapper.orderPickTimeConfigList2(new Page(zfireParamBean.getPageNum(), zfireParamBean.getPageSize()), zfireParamBean);
+    }
+
+    /**
+     * 验证时间格式是否为HH:mm,并确保时间在00:00至23:59的区间内
+     */
+    private void validateTimeFormat(String time, String fieldName, OrderPickTimeConfig config) {
+        if (StringUtils.isBlank(time)) {
+            throw new RemoteServiceException(config.getStartTime() + " 至 " + config.getEndTime() + "提货时间配置的" + fieldName + "不能为空");
+        }
+        
+        // 验证时间格式是否为HH:mm,且时间在00:00至23:59的区间内
+        if (!time.matches("^([01]?[0-9]|2[0-3]):[0-5][0-9]$") ) {
+            throw new RemoteServiceException(config.getStartTime() + " 至 " + config.getEndTime() + "提货时间配置的" + fieldName + "格式不正确,请使用HH:mm格式,且时间范围必须在00:00至23:59之间");
+        }
+        
+        try {
+            // 验证小时和分钟的范围(额外的安全检查)
+            String[] parts = time.split(":");
+            int hour = Integer.parseInt(parts[0]);
+            int minute = Integer.parseInt(parts[1]);
+            
+            if (hour < 0 || hour > 23) {
+                throw new RemoteServiceException(config.getStartTime() + " 至 " + config.getEndTime() + "提货时间配置的" + fieldName + "小时部分必须在0-23之间");
+            }
+            
+            if (minute < 0 || minute > 59) {
+                throw new RemoteServiceException(config.getStartTime() + " 至 " + config.getEndTime() + "提货时间配置的" + fieldName + "分钟部分必须在0-59之间");
+            }
+        } catch (NumberFormatException e) {
+            throw new RemoteServiceException(config.getStartTime() + " 至 " + config.getEndTime() + "提货时间配置的" + fieldName + "格式不正确,请使用HH:mm格式");
+        }
+    }
+    
+    /**
+     * 将HH:mm格式的时间转换为分钟数
+     */
+    private int convertTimeToMinutes(String time) {
+        String[] parts = time.split(":");
+        return Integer.parseInt(parts[0]) * 60 + Integer.parseInt(parts[1]);
+    }
+    
+    public void save(List<OrderPickTimeConfig> configList) {
+        // 1. 检查configList不能为空,必须至少有一个对象
+        if (CollectionUtil.isEmpty(configList)) {
+            throw new RemoteServiceException("提货时间配置列表不能为空");
+        }
+        
+        // 2. 按照startTime进行倒序排序
+        configList.sort((o1, o2) -> {
+            try {
+                // 转换为分钟数进行比较,取反实现倒序
+                return Integer.compare(convertTimeToMinutes(o2.getStartTime()), convertTimeToMinutes(o1.getStartTime()));
+            } catch (Exception e) {
+                throw new RemoteServiceException(e.getMessage());
+            }
+        });
+        
+        // 3. 检查时间范围是否有重叠和格式验证
+        String lastEndTime = null;
+        for (int i = 0; i < configList.size(); i++) {
+            OrderPickTimeConfig config = configList.get(i);
+            
+            // 验证时间格式
+            validateTimeFormat(config.getStartTime(), "开始时间", config);
+            validateTimeFormat(config.getEndTime(), "结束时间", config);
+            
+            
+            // 验证开始时间必须小于结束时间
+            int startTimeMinutes = convertTimeToMinutes(config.getStartTime());
+            int endTimeMinutes = convertTimeToMinutes(config.getEndTime());
+            
+            if (startTimeMinutes >= endTimeMinutes) {
+                throw new RemoteServiceException(config.getStartTime() + " 至 " + config.getEndTime() + "提货时间配置的开始时间必须小于结束时间");
+            }
+            
+            // 验证当前配置的开始时间必须大于等于上一个配置的结束时间+1分钟
+            if (i > 0 && lastEndTime != null) {
+                // 确保当前配置的开始时间至少比上一个配置的结束时间晚1分钟
+                int lastEndMinutes = convertTimeToMinutes(lastEndTime);
+                if (startTimeMinutes <= lastEndMinutes) {
+                    throw new RemoteServiceException(config.getStartTime() + " 至 " + config.getEndTime() + "的提货时间配置的开始时间必须在上一个配置结束时间之后至少1分钟");
+                }
+            }
+            
+            // 保存当前配置的结束时间,用于下一个配置的比较
+            lastEndTime = config.getEndTime();
+        }
+        
+        // 4. 获取当前登录用户信息
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        if (StringUtils.isBlank(adminUser.getCompanyWechatId())) {
+            throw new RemoteServiceException("管理员账号不可操作");
+        }
+        
+        // 5. 保存配置(先删除旧配置,再保存新配置)
+        // 假设同一个storageId下的配置是唯一的,先删除旧的配置
+        OrderPickTimeConfig firstConfig = configList.get(0);
+        String storageId = firstConfig.getStorageId();
+        
+        orderPickTimeConfigService.lambdaUpdate()
+                .eq(OrderPickTimeConfig::getCompanyWechatId, adminUser.getCompanyWechatId())
+                .eq(OrderPickTimeConfig::getStorageId, storageId)
+                .remove();
+        
+        // 6. 保存新的配置
+        for (OrderPickTimeConfig config : configList) {
+            // 设置企业微信信息
+            if (StringUtils.isNotBlank(adminUser.getCompanyWechatId())) {
+                config.setCompanyWechatId(adminUser.getCompanyWechatId());
+                config.setCompanyWechatName(adminUser.getCompanyName());
+            }
+            // 保存配置
+            orderPickTimeConfigService.save(config);
+        }
+    }
 }

+ 31 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/order/OrderOfflineLogic.java

@@ -1,6 +1,7 @@
 package com.gree.mall.manager.logic.order;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
@@ -61,6 +62,7 @@ public class OrderOfflineLogic {
     private final GoodsSpecService goodsSpecService;
     private final GoodsMaterialStorageService goodsMaterialStorageService;
     private final GoodsMaterialStockLogic goodsMaterialStockLogic;
+    private final OrderPickTimeConfigService orderPickTimeConfigService;
 
     /**
      * 线下销售单列表
@@ -104,6 +106,35 @@ public class OrderOfflineLogic {
         if (orderInfo == null) {
             orderInfo = new OrderInfo();
         }
+        // 检查时间段有没限制
+        if (orderInfoAddBean.getTakeGoodsType().equals(TakeGoodsTypeEnum.Z.getKey())) {
+            if (StringUtils.isBlank(orderInfoAddBean.getPickTimeId())) {
+                throw new RemoteServiceException("未检查到选择的提货时间段");
+            }
+            final OrderPickTimeConfig pickTimeConfig = orderPickTimeConfigService.getById(orderInfoAddBean.getPickTimeId());
+            if (Objects.isNull(pickTimeConfig)) {
+                throw new RemoteServiceException("仓储未配置此时间段");
+            }
+
+            final DateTime parseDate = DateUtil.parseDateTime(orderInfoAddBean.getPickStartTime());
+            if (DateUtil.date().getTime() > parseDate.getTime()) {
+                throw new RemoteServiceException("提交的时间不能大于选择的自提开始时间");
+            }
+
+            if (pickTimeConfig.getLimitNum() > 0) {
+                final Integer orderCount = orderInfoService.lambdaQuery()
+                        .eq(OrderInfo::getCompanyWechatId, adminUser.getCompanyWechatId())
+                        .eq(OrderInfo::getPickStorageId, orderInfoAddBean.getPickStorageId())
+                        .eq(OrderInfo::getExamineStatus, ExamineStatusEnum.OK.getKey())
+                        .between(OrderInfo::getCreateTime, orderInfoAddBean.getPickStartTime(), orderInfoAddBean.getPickEndTime())
+                        .count();
+                if (orderCount > pickTimeConfig.getLimitNum()) {
+                    throw new RemoteServiceException("仓储此时间段提货的订单数量超过限制" + pickTimeConfig.getLimitNum());
+                }
+            }
+        }
+        
+        // 订单开始处理
         BeanUtil.copyProperties(orderInfoAddBean, orderInfo, "orderId");
         if (StringUtils.isBlank(orderInfo.getOrderId())) {
             orderInfo.setOrderId(commonLogic.generateNo(adminUser.getAdminCompanyWechat().getOrderPrefix(), "MALL_ORDER", 13));

+ 12 - 0
mall-server-api/src/main/resources/mapper/CommonMapper.xml

@@ -1098,4 +1098,16 @@
         ${ex.orderBy}
     </select>
 
+    <select id="orderPickTimeConfigList2" resultType="com.gree.mall.manager.bean.order.OrderPickTimeConfigVO">
+        SELECT
+            ${ex.selected},
+            b.storage_name
+        FROM order_pick_time_config a LEFT JOIN storage b ON a.storage_id = b.storage_id
+        ${ex.query}
+        <if test="ex.orderBy == null or ex.orderBy ==''">
+            ORDER BY a.id DESC
+        </if>
+        ${ex.orderBy}
+    </select>
+
 </mapper>