Browse Source

no message

FengChaoYu 2 weeks ago
parent
commit
afca3a7c3c

+ 1 - 1
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/common/OrderPickTimeConfigBean.java

@@ -14,5 +14,5 @@ import java.util.List;
 public class OrderPickTimeConfigBean extends OrderPickTimeConfig {
 
     @ApiModelProperty(value = "天数时间段订单数")
-    List<OrderPickTimeCount> countList;
+    List<OrderPickTimeCountBean> countList;
 }

+ 3 - 6
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/common/OrderPickTimeCount.java → mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/common/OrderPickTimeCountBean.java

@@ -9,14 +9,11 @@ import java.util.List;
 
 @Data
 @ApiModel
-public class OrderPickTimeCount {
-
-    @ApiModelProperty(value = "配置id")
-    String configId;
+public class OrderPickTimeCountBean {
 
     @ApiModelProperty(value = "日期 yyyy-MM-dd")
-    String date;
+    private String date;
 
     @ApiModelProperty(value = "订单数量")
-    int count;
+    private int count;
 }

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

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.miniapp.annotation.ApiNotAuth;
+import com.gree.mall.miniapp.bean.common.OrderPickTimeConfigBean;
 import com.gree.mall.miniapp.bean.user.CurrentCompanyWechat;
 import com.gree.mall.miniapp.constant.Constant;
 import com.gree.mall.miniapp.exception.RemoteServiceException;
@@ -223,11 +224,11 @@ public class CommonController {
     }
 
     @PostMapping("/order/pick/time/list")
-    @ApiParam(value ="列表")
-    public ResponseHelper<List<OrderPickTimeConfig>> orderPickTimeList(
+    @ApiParam(value ="提货时间配置列表")
+    public ResponseHelper<List<OrderPickTimeConfigBean>> orderPickTimeList(
             @ApiParam(required = true, value = "仓储id") @RequestParam String storageId
     ) {
-        List<OrderPickTimeConfig> list = commonLogic.orderPickTimeList(storageId);
+        List<OrderPickTimeConfigBean> list = commonLogic.orderPickTimeList(storageId);
         return ResponseHelper.success(list);
     }
 

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

@@ -1,14 +1,18 @@
 package com.gree.mall.miniapp.logic.common;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
+import com.gree.mall.miniapp.bean.common.OrderPickTimeConfigBean;
+import com.gree.mall.miniapp.bean.common.OrderPickTimeCountBean;
 import com.gree.mall.miniapp.bean.user.CurrentCompanyWechat;
 import com.gree.mall.miniapp.constant.Constant;
+import com.gree.mall.miniapp.enums.OrderStatusEnum;
 import com.gree.mall.miniapp.exception.RemoteServiceException;
 import com.gree.mall.miniapp.plus.entity.*;
 import com.gree.mall.miniapp.plus.service.*;
@@ -59,6 +63,8 @@ public class CommonLogic {
     UserCompanyAttrService userCompanyAttrService;
     @Resource
     UserCompanyDeliveryService userCompanyDeliveryService;
+    @Resource
+    OrderInfoService orderInfoService;
     @Value("${spring.profiles.active}")
     private String profiles;
     @Value("${inf.url}")
@@ -382,7 +388,7 @@ public class CommonLogic {
         return infUrl;
     }
 
-    public List<OrderPickTimeConfig> orderPickTimeList(String storageId) {
+    public List<OrderPickTimeConfigBean> orderPickTimeList(String storageId) {
         CurrentCompanyWechat currentCompanyWechat = getCurrentCompanyWechat();
         final List<OrderPickTimeConfig> list = orderPickTimeConfigService.lambdaQuery()
                 .eq(OrderPickTimeConfig::getCompanyWechatId, currentCompanyWechat.getCompanyWechatId())
@@ -390,10 +396,46 @@ public class CommonLogic {
                 .orderByDesc(OrderPickTimeConfig::getId)
                 .list();
 
+        List<OrderPickTimeConfigBean> beanList = new ArrayList<>();
 
+        for (OrderPickTimeConfig config : list) {
+            OrderPickTimeConfigBean bean = new OrderPickTimeConfigBean();
+            BeanUtils.copyProperties(config, bean);
+            DateTime curDate = DateUtil.date();
+            int queryDayCount = 7;
 
+            List<OrderPickTimeCountBean> countBeanList = new ArrayList<>();
+            while (queryDayCount > 0) {
+                if (queryDayCount < 7) {
+                    curDate = DateUtil.offsetDay(curDate, 1);
+                }
+                OrderPickTimeCountBean countBean = new OrderPickTimeCountBean();
+                String date = DateUtil.formatDateTime(curDate);
+
+                Date startTime = DateUtil.parseDateTime(date + " " + config.getStartTime() + ":00");
+                Date endTime = DateUtil.parseDateTime(date + " " + config.getEndTime() + ":00");
+                // 统计时间段的订单数量
+                final Integer count = orderInfoService.lambdaQuery()
+                        .select(OrderInfo::getOrderId)
+                        .eq(OrderInfo::getCompanyWechatId, currentCompanyWechat.getCompanyWechatId())
+                        .eq(OrderInfo::getPickStorageId, storageId)
+                        .le(OrderInfo::getAppointmentPickStartTime, endTime)
+                        .ge(OrderInfo::getAppointmentPickEndTime, startTime)
+                        .in(OrderInfo::getOrderStatus, OrderStatusEnum.DQR.toString(), OrderStatusEnum.DJH.toString(), OrderStatusEnum.JHZ.toString())
+                        .count();
+
+                countBean.setDate(date);
+                countBean.setCount(count);
+
+                countBeanList.add(countBean);
+
+                queryDayCount--;
+            }
+            bean.setCountList(countBeanList);
+            beanList.add(bean);
 
+        }
 
-        return list;
+        return beanList;
     }
 }

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

@@ -66,7 +66,6 @@ public class OrderInfoAddBean {
     @ApiModelProperty("商品明细(只用传 物料编号,数量,单价)")
     private List<OrderDetail> orderDetails;
 
-    @NotBlank(message = "提货时间段不能为空")
     @ApiModelProperty("提货开始时间")
     private String pickTimeId;
 

+ 7 - 4
mall-server-api/src/main/java/com/gree/mall/manager/logic/order/OrderLogic.java

@@ -53,6 +53,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Service
@@ -363,7 +364,9 @@ public class OrderLogic {
         }
 
         // 授权支付不需要确认退款
-        String changeOrderStatus = orderInfo.getPayType().equals(PayTypeEnum.CREDIT.getKey()) ? OrderStatusEnum.CLOSE.toString() : OrderStatusEnum.DTK.toString();
+        String changeOrderStatus = orderInfo.getPayType().equals(PayTypeEnum.CREDIT.getKey())
+                || orderInfo.getOrderStatus().equals(OrderStatusEnum.DQR.toString()) ? OrderStatusEnum.CLOSE.toString()
+                : OrderStatusEnum.DTK.toString();
         orderInfoService.lambdaUpdate()
                 .set(OrderInfo::getOrderStatus, changeOrderStatus)
                 .set(OrderInfo::getLastOrderStatus, orderInfo.getOrderStatus())
@@ -822,7 +825,7 @@ public class OrderLogic {
     /**
      * 订单详情
      */
-    public OrderDetailBeanVO detail(String orderId,String storageId) {
+    public OrderDetailBeanVO detail(String orderId, String storageId) {
         OrderInfo orderInfo = orderInfoService.getById(orderId);
         //查询订单详情
         List<OrderDetail> orderDetails = orderDetailService.lambdaQuery()
@@ -845,13 +848,13 @@ public class OrderLogic {
                             .collect(Collectors.toList()))
                     .list();
 
-            Map<String, String> stringMap = materialList.stream()
+            Map<String, String> goodsMaterialMap = materialList.stream()
                     .collect(Collectors.toMap(GoodsMaterial::getId, GoodsMaterial::getFactoryNo));
 
             List<GoodsMaterialStorage> list = goodsMaterialStorageService.lambdaQuery().eq(GoodsMaterialStorage::getCompanyWechatId, orderInfo.getCompanyWechatId()).list();
 
             for (OrderDetail orderDetail : orderDetails) {
-                String factoryNo = stringMap.get(orderDetail.getGoodsMaterialId());
+                String factoryNo = goodsMaterialMap.get(orderDetail.getGoodsMaterialId());
                 if (StringUtils.isNotBlank(factoryNo)) {
                     orderDetail.setGoodsName(orderDetail.getGoodsName() + "(" + factoryNo + ")");
                 }

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

@@ -107,7 +107,7 @@ public class OrderOfflineLogic {
             orderInfo = new OrderInfo();
         }
         // 检查时间段有没限制
-        if (orderInfoAddBean.getTakeGoodsType().equals(TakeGoodsTypeEnum.Z.getKey())) {
+        if (StringUtils.isBlank(orderInfo.getOrderId()) && orderInfoAddBean.getTakeGoodsType().equals(TakeGoodsTypeEnum.Z.getKey())) {
             if (StringUtils.isBlank(orderInfoAddBean.getPickTimeId())) {
                 throw new RemoteServiceException("未检查到选择的提货时间段");
             }
@@ -125,8 +125,9 @@ public class OrderOfflineLogic {
                 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())
+                        .le(OrderInfo::getAppointmentPickStartTime, orderInfoAddBean.getPickEndTime())
+                        .ge(OrderInfo::getAppointmentPickEndTime, orderInfoAddBean.getPickStartTime())
+                        .in(OrderInfo::getOrderStatus, OrderStatusEnum.DQR.toString(), OrderStatusEnum.DJH.toString(), OrderStatusEnum.JHZ.toString())
                         .count();
                 if (orderCount > pickTimeConfig.getLimitNum()) {
                     throw new RemoteServiceException("仓储此时间段提货的订单数量超过限制" + pickTimeConfig.getLimitNum());