Explorar el Código

仓库发货统计接口优化

mac hace 2 años
padre
commit
85377c6bde

+ 5 - 28
kxs-store/kxs-store-api/src/main/java/com/kxs/store/api/dto/kxsapp/storeOrder/OrderMonthTotalDetailDTO.java

@@ -1,9 +1,11 @@
 package com.kxs.store.api.dto.kxsapp.storeOrder;
 
+import com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 
 /**
@@ -12,41 +14,16 @@ import lombok.Data;
  * @author 系统
  * @date 2024-01-08 11:15:01
  */
+@EqualsAndHashCode(callSuper = true)
 @Data
-public class OrderMonthTotalDetailDTO {
-
-    /**
-     * 品牌ID
-     */
-    @Schema(description = "品牌ID")
-    @NotNull(message = "品牌ID不能为空")
-    private Integer brandId;
-
-
-    /**
-     * 仓库ID
-     */
-    @Schema(description = "仓库ID")
-    @NotNull(message = "仓库ID不能为空")
-    private Integer warehouseId;
-
+public class OrderMonthTotalDetailDTO extends OrderMonthTotalDTO {
 
     /**
      * 查询月份
      */
     @Schema(description = "查询月份")
     @NotBlank(message = "查询月份不能为空")
-    private String month;
-
-    /**
-     * 开始日期
-     */
-    private String startDate;
-
-    /**
-     * 结束日期
-     */
-    private String endDate;
+    private String totalMonth;
 
 
 }

+ 2 - 2
kxs-store/kxs-store-api/src/main/java/com/kxs/store/api/vo/kxsapp/storeOrder/OrderMonthTotalDetailVO.java

@@ -26,14 +26,14 @@ public class OrderMonthTotalDetailVO implements Serializable {
      * 日期
      */
     @Schema(description = "日期")
-    private String date;
+    private String time;
 
 
     /**
      * 数量
      */
     @Schema(description = "数量")
-    private Integer number;
+    private Integer totalNum;
 
 
     /**

+ 2 - 2
kxs-store/kxs-store-api/src/main/java/com/kxs/store/api/vo/kxsapp/storeOrder/OrderMonthTotalVO.java

@@ -25,14 +25,14 @@ public class OrderMonthTotalVO implements Serializable {
      * 月份
      */
     @Schema(description = "月份")
-    private Object month;
+    private Object time;
 
 
     /**
      * 总发货数量
      */
     @Schema(description = "总发货数量")
-    private Object totalNumber;
+    private Object totalNum;
 
 
 

+ 5 - 2
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/controller/kxsapp/StoreOrderController.java

@@ -8,6 +8,7 @@ import com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalDetailVO;
 import com.kxs.store.api.vo.kxsapp.storeOrder.StoreOrderListVO;
 import com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalVO;
 import com.kxs.store.biz.service.KxsMachineApplyService;
+import com.kxs.store.biz.service.KxsSendTotalService;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import org.springdoc.core.annotations.ParameterObject;
@@ -29,6 +30,8 @@ public class StoreOrderController {
      */
     private final KxsMachineApplyService kxsMachineApplyService;
 
+    private final KxsSendTotalService kxsSendTotalService;
+
 
     /**
      * 订单管理-划拨
@@ -93,7 +96,7 @@ public class StoreOrderController {
     @GetMapping("/orderMonthTotal")
     public R orderMonthTotal(@ParameterObject Page<OrderMonthTotalVO> page, @Valid @ParameterObject OrderMonthTotalDTO param) {
 
-        return R.ok(kxsMachineApplyService.orderMonthTotal(page, param));
+        return R.ok(kxsSendTotalService.orderMonthTotal(page, param));
     }
 
 
@@ -106,7 +109,7 @@ public class StoreOrderController {
     @GetMapping("/orderMonthTotalDetail")
     public R orderMonthTotalDetail(@ParameterObject Page<OrderMonthTotalDetailVO> page, @Valid @ParameterObject OrderMonthTotalDetailDTO param) {
 
-        return R.ok(kxsMachineApplyService.orderMonthTotalDetail(page, param));
+        return R.ok(kxsSendTotalService.orderMonthTotalDetail(page, param));
     }
 
 

+ 6 - 1
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/mapper/KxsMachineApplyDetailMapper.java

@@ -3,7 +3,9 @@ package com.kxs.store.biz.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.kxs.store.api.model.KxsMachineApplyDetail;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -24,6 +26,9 @@ public interface KxsMachineApplyDetailMapper extends BaseMapper<KxsMachineApplyD
      * @param endTime     结束时间
      * @return {@link List}<{@link String}>
      */
-    List<String> listDateQueries(Integer warehouseId, Integer brandId, String startTime, String endTime);
+    List<String> listDateQueries(@Param("warehouseId") Integer warehouseId
+            , @Param("brandId") Integer brandId
+            , @Param("startTime") LocalDateTime startTime
+            , @Param("endTime") LocalDateTime endTime);
 }
 

+ 0 - 17
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/mapper/KxsMachineApplyMapper.java

@@ -32,23 +32,6 @@ public interface KxsMachineApplyMapper extends BaseMapper<KxsMachineApply> {
      */
     IPage<StoreOrderListVO> getByPage(Page<StoreOrderListVO> page, @Param("query") StoreOrderListDTO param);
 
-    /**
-     * 发货统计
-     *
-     * @param page  页
-     * @param param 参数
-     * @return {@link IPage}<{@link OrderMonthTotalVO}>
-     */
-    IPage<OrderMonthTotalVO> orderMonthTotal(Page<OrderMonthTotalVO> page, @Param("query") OrderMonthTotalDTO param);
-
-    /**
-     * 订单月份总明细
-     *
-     * @param page  页
-     * @param param 参数
-     * @return {@link IPage}<{@link OrderMonthTotalDetailVO}>
-     */
-    IPage<OrderMonthTotalDetailVO> orderMonthTotalDetail(Page<OrderMonthTotalDetailVO> page, @Param("query") OrderMonthTotalDetailDTO param);
 
     /**
      * app 用户申请记录

+ 25 - 0
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/mapper/KxsSendTotalMapper.java

@@ -1,8 +1,15 @@
 package com.kxs.store.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.store.api.dto.kxsapp.storeOrder.OrderMonthTotalDTO;
+import com.kxs.store.api.dto.kxsapp.storeOrder.OrderMonthTotalDetailDTO;
 import com.kxs.store.api.model.KxsSendTotal;
+import com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalDetailVO;
+import com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 客小爽仓库发货统计表(KxsSendTotal)表数据库访问层
@@ -13,5 +20,23 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface KxsSendTotalMapper extends BaseMapper<KxsSendTotal> {
 
+    /**
+     * 订单管理-发货统计
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link OrderMonthTotalVO}>
+     */
+    IPage<OrderMonthTotalVO> orderMonthTotal(Page<OrderMonthTotalVO> page, @Param("param") OrderMonthTotalDTO param);
+
+    /**
+     * 订单管理-发货统计明细
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link OrderMonthTotalDetailVO}>
+     */
+    IPage<OrderMonthTotalDetailVO> orderMonthTotalDetail(Page<OrderMonthTotalDetailVO> page, @Param("param") OrderMonthTotalDetailDTO param);
+
 }
 

+ 0 - 18
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/KxsMachineApplyService.java

@@ -62,24 +62,6 @@ public interface KxsMachineApplyService extends IService<KxsMachineApply> {
      */
     R orderCancel(KxsMachineApply param);
 
-    /**
-     * 发货统计
-     *
-     * @param page  页
-     * @param param 参数
-     * @return {@link IPage}<{@link OrderMonthTotalVO}>
-     */
-    IPage<OrderMonthTotalVO> orderMonthTotal(Page<OrderMonthTotalVO> page, OrderMonthTotalDTO param);
-
-    /**
-     * 发货统计明细
-     *
-     * @param page  页
-     * @param param 参数
-     * @return {@link IPage}<{@link OrderMonthTotalDetailVO}>
-     */
-    IPage<OrderMonthTotalDetailVO> orderMonthTotalDetail(Page<OrderMonthTotalDetailVO> page, OrderMonthTotalDetailDTO param);
-
     /**
      * app 用户申请记录
      *

+ 25 - 0
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/KxsSendTotalService.java

@@ -1,7 +1,13 @@
 package com.kxs.store.biz.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.store.api.dto.kxsapp.storeOrder.OrderMonthTotalDTO;
+import com.kxs.store.api.dto.kxsapp.storeOrder.OrderMonthTotalDetailDTO;
 import com.kxs.store.api.model.KxsSendTotal;
+import com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalDetailVO;
+import com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalVO;
 
 /**
  * 客小爽仓库发货统计表(KxsSendTotal)表服务接口
@@ -19,5 +25,24 @@ public interface KxsSendTotalService extends IService<KxsSendTotal> {
      * @param brandId     品牌 ID
      */
     void shipmentStatistics(Integer count, Integer warehouseId, Integer brandId);
+
+    /**
+     * 订单管理-发货统计
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link OrderMonthTotalVO}>
+     */
+    IPage<OrderMonthTotalVO> orderMonthTotal(Page<OrderMonthTotalVO> page, OrderMonthTotalDTO param);
+
+    /**
+     * 订单管理-发货统计明细
+     *
+     * @param page  页
+     * @param param 参数
+     * @return {@link IPage}<{@link OrderMonthTotalDetailVO}>
+     */
+    IPage<OrderMonthTotalDetailVO> orderMonthTotalDetail(Page<OrderMonthTotalDetailVO> page, OrderMonthTotalDetailDTO param);
+
 }
 

+ 7 - 42
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/impl/KxsMachineApplyServiceImpl.java

@@ -1,7 +1,5 @@
 package com.kxs.store.biz.service.impl;
 
-import cn.hutool.core.date.DatePattern;
-import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.lang.Snowflake;
 import cn.hutool.core.util.EnumUtil;
 import cn.hutool.core.util.IdUtil;
@@ -20,17 +18,20 @@ import com.kxs.product.api.model.KxsBrand;
 import com.kxs.product.api.model.KxsMachine;
 import com.kxs.product.api.model.KxsMachineCirculationLog;
 import com.kxs.product.api.model.KxsTicket;
-import com.kxs.store.api.dto.kxsapp.storeOrder.*;
+import com.kxs.store.api.dto.kxsapp.storeOrder.ApplyMachineDTO;
+import com.kxs.store.api.dto.kxsapp.storeOrder.StoreOrderListDTO;
+import com.kxs.store.api.dto.kxsapp.storeOrder.StoreOrderTransferUserDTO;
 import com.kxs.store.api.model.*;
-import com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalDetailVO;
-import com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalVO;
 import com.kxs.store.api.vo.kxsapp.storeOrder.StoreOrderDetailVO;
 import com.kxs.store.api.vo.kxsapp.storeOrder.StoreOrderListVO;
 import com.kxs.store.api.vo.kxsapp.userOrder.UserApplyMachineDetailVO;
 import com.kxs.store.api.vo.kxsapp.userOrder.UserApplyMahineListVO;
 import com.kxs.store.biz.constant.StoreConstants;
 import com.kxs.store.biz.constant.enums.*;
-import com.kxs.store.biz.mapper.*;
+import com.kxs.store.biz.mapper.KxsMachineAdvanceInfoMapper;
+import com.kxs.store.biz.mapper.KxsMachineApplyDetailMapper;
+import com.kxs.store.biz.mapper.KxsMachineApplyMapper;
+import com.kxs.store.biz.mapper.KxsWarehouseMapper;
 import com.kxs.store.biz.service.*;
 import com.kxs.system.api.feign.RemoteUserMsgService;
 import com.kxs.system.api.model.KxsUserMsg;
@@ -44,11 +45,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
-import java.time.temporal.TemporalAdjusters;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
@@ -486,38 +483,6 @@ public class KxsMachineApplyServiceImpl extends ServiceImpl<KxsMachineApplyMappe
         return R.ok();
     }
 
-    @Override
-    public IPage<OrderMonthTotalVO> orderMonthTotal(Page<OrderMonthTotalVO> page, OrderMonthTotalDTO param) {
-
-        return baseMapper.orderMonthTotal(page, param);
-    }
-
-    @Override
-    public IPage<OrderMonthTotalDetailVO> orderMonthTotalDetail(Page<OrderMonthTotalDetailVO> page, OrderMonthTotalDetailDTO param) {
-
-        //组装本月日期
-        String month = param.getMonth() + "-01";
-        //根据月份获取本月开始时间和结束时间
-        LocalDate monthDate = LocalDate.parse(month, DatePattern.NORM_DATE_FORMATTER);
-        LocalDateTime monthStartTime = LocalDateTime.of(monthDate, LocalTime.MIN);
-        LocalDateTime monthEndTime = LocalDateTime.of(monthDate.plusMonths(1), LocalTime.MIN);
-
-        param.setStartDate(String.valueOf(monthStartTime));
-        param.setEndDate(String.valueOf(monthEndTime));
-        IPage<OrderMonthTotalDetailVO> byPage = baseMapper.orderMonthTotalDetail(page, param);
-
-        for (OrderMonthTotalDetailVO record : byPage.getRecords()) {
-            String startTime = record.getDate() + " 00:00:00";
-            String endTime = record.getDate() + " 23:59:59";
-            //查询当天发出的机器
-            List<String> snList = kxsMachineApplyDetailMapper.listDateQueries(param.getWarehouseId(), param.getBrandId(),
-                    startTime, endTime);
-            record.setSnList(snList);
-        }
-
-        return byPage;
-    }
-
     @Override
     public IPage<UserApplyMahineListVO> userApplyMachineList(Page<UserApplyMahineListVO> page) {
 

+ 42 - 0
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/impl/KxsSendTotalServiceImpl.java

@@ -1,14 +1,26 @@
 package com.kxs.store.biz.service.impl;
 
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kxs.common.core.util.TotalDateUtil;
+import com.kxs.store.api.dto.kxsapp.storeOrder.OrderMonthTotalDTO;
+import com.kxs.store.api.dto.kxsapp.storeOrder.OrderMonthTotalDetailDTO;
 import com.kxs.store.api.model.KxsSendTotal;
+import com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalDetailVO;
+import com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalVO;
+import com.kxs.store.biz.mapper.KxsMachineApplyDetailMapper;
 import com.kxs.store.biz.mapper.KxsSendTotalMapper;
 import com.kxs.store.biz.service.KxsSendTotalService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * 客小爽仓库发货统计表(KxsSendTotal)表服务实现类
@@ -17,8 +29,11 @@ import java.time.LocalDate;
  * @since 2024-01-08 09:46:02
  */
 @Service("kxsSendTotalService")
+@RequiredArgsConstructor
 public class KxsSendTotalServiceImpl extends ServiceImpl<KxsSendTotalMapper, KxsSendTotal> implements KxsSendTotalService {
 
+    private final KxsMachineApplyDetailMapper kxsMachineApplyDetailMapper;
+
     @Override
     public void shipmentStatistics(Integer count, Integer warehouseId, Integer brandId) {
 
@@ -45,5 +60,32 @@ public class KxsSendTotalServiceImpl extends ServiceImpl<KxsSendTotalMapper, Kxs
         }
 
     }
+
+    @Override
+    public IPage<OrderMonthTotalVO> orderMonthTotal(Page<OrderMonthTotalVO> page, OrderMonthTotalDTO param) {
+
+        return baseMapper.orderMonthTotal(page, param);
+    }
+
+    @Override
+    public IPage<OrderMonthTotalDetailVO> orderMonthTotalDetail(Page<OrderMonthTotalDetailVO> page, OrderMonthTotalDetailDTO param) {
+
+        IPage<OrderMonthTotalDetailVO> detailList = baseMapper.orderMonthTotalDetail(page, param);
+
+        for (OrderMonthTotalDetailVO record : detailList.getRecords()) {
+
+            LocalDateTime parse = LocalDateTimeUtil.parse(record.getTime(), DatePattern.PURE_DATE_PATTERN);
+
+            LocalDateTime startTime = LocalDateTimeUtil.beginOfDay(parse);
+            LocalDateTime endTime = LocalDateTimeUtil.endOfDay(parse);
+
+            //查询当天发出的机器
+            List<String> snList = kxsMachineApplyDetailMapper.listDateQueries(param.getWarehouseId(), param.getBrandId(),
+                    startTime, endTime);
+            record.setSnList(snList);
+        }
+
+        return detailList;
+    }
 }
 

+ 0 - 31
kxs-store/kxs-store-biz/src/main/resources/mapper/KxsMachineApplyMapper.xml

@@ -51,37 +51,6 @@
         </where>
         order by a.create_time desc
     </select>
-    <select id="orderMonthTotal" resultType="com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalVO">
-        select * from
-        (
-        select sum(apply_num) as totalNumber, DATE_FORMAT(create_time,'%Y-%m') AS `month`
-        from kxs_machine_apply a
-        <where>
-            and a.brand_id = #{query.brandId}
-            and a.warehouse_id = #{query.warehouseId}
-            and a.status = 1
-        </where>
-        GROUP BY `month`
-        ) as tmp
-        ORDER BY `month` desc
-    </select>
-    <select id="orderMonthTotalDetail" resultType="com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalDetailVO">
-        SELECT *
-        FROM (
-        SELECT sum(apply_num) as number, DATE_FORMAT(create_time,'%Y-%m-%d') AS `date`
-        FROM kxs_machine_apply a
-        <where>
-            and a.brand_id = #{query.brandId}
-            and a.warehouse_id = #{query.warehouseId}
-            and a.status = 1
-            <if test="query.startDate != null and query.endDate != null">
-                and a.create_time between #{query.startDate} and #{query.endDate}
-            </if>
-        </where>
-        GROUP BY `date`
-        ) AS tmp
-        ORDER BY `date` desc
-    </select>
     <select id="userApplyMachineList" resultType="com.kxs.store.api.vo.kxsapp.userOrder.UserApplyMahineListVO">
         select a.id, a.create_time, a.order_sn, a.apply_num, a.address, a.status from kxs_machine_apply a
         <where>

+ 22 - 0
kxs-store/kxs-store-biz/src/main/resources/mapper/KxsSendTotalMapper.xml

@@ -15,5 +15,27 @@
         <result column="brand_id" property="brandId" />
 
     </resultMap>
+    <select id="orderMonthTotal" resultType="com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalVO">
+        SELECT SUM(total_num) as total_num, total_month as time
+        FROM kxs_send_total
+        <where>
+            and brand_id = #{param.brandId}
+            and warehouse_id = #{param.warehouseId}
+        </where>
+        group by total_month
+        order by total_month desc
+    </select>
+    <select id="orderMonthTotalDetail"
+            resultType="com.kxs.store.api.vo.kxsapp.storeOrder.OrderMonthTotalDetailVO">
+
+        SELECT total_num, total_date as time
+        FROM kxs_send_total
+        <where>
+            and brand_id = #{param.brandId}
+            and warehouse_id = #{param.warehouseId}
+            and total_month = #{param.totalMonth}
+        </where>
+        order by total_date desc
+    </select>
 
 </mapper>