Browse Source

fix: 平台端库存添加合计功能,添加日期区间查询条件

luofeiyun 2 weeks ago
parent
commit
4efd6f344b

+ 8 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestock/VoyageStockController.java

@@ -87,6 +87,14 @@ public class VoyageStockController {
         return success(pageResult);
     }
 
+    @GetMapping("/total")
+    @Operation(summary = "获得航次库存合计")
+    @PreAuthorize("@ss.hasPermission('product:voyage-stock:query')")
+    public CommonResult<VoyageStockTotalVO> getVoyageStockTotal(@Valid VoyageStockPageReqVO pageReqVO) {
+        VoyageStockTotalVO totalVO = voyageStockService.getVoyageStockTotal(pageReqVO);
+        return success(totalVO);
+    }
+
     @GetMapping("/export-excel")
     @Operation(summary = "导出航次库存 Excel")
     @PreAuthorize("@ss.hasPermission('product:voyage-stock:export')")

+ 3 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestock/vo/VoyageStockPageReqVO.java

@@ -24,4 +24,7 @@ public class VoyageStockPageReqVO extends PageParam {
     @Schema(description = "航次ID列表", example = "1,2")
     private List<Long> voyageIds;
 
+    @Schema(description = "航次时间")
+    private String[] voyageTime;
+
 }

+ 29 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestock/vo/VoyageStockTotalVO.java

@@ -0,0 +1,29 @@
+package com.yc.ship.module.product.controller.admin.voyagestock.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 航次库存合计
+ *
+ * @author yc
+ * @since 2023-04-09
+ */
+@Data
+public class VoyageStockTotalVO {
+    /**
+     * 航次库存数量
+     */
+    private BigDecimal canSaleNum;
+
+    /**
+     * 航次库存预订数量
+     */
+    private BigDecimal bookNum;
+
+    /**
+     * 航次库存总数量
+     */
+    private BigDecimal totalNum;
+}

+ 17 - 2
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestock/VoyageStockMapper.java

@@ -5,6 +5,9 @@ import java.util.*;
 import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
+import com.yc.ship.framework.mybatis.core.query.MPJLambdaWrapperX;
+import com.yc.ship.module.product.dal.dataobject.productBase.ProductBaseDO;
+import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
 import com.yc.ship.module.product.dal.dataobject.voyagestock.VoyageStockDO;
 import org.apache.ibatis.annotations.Mapper;
 import com.yc.ship.module.product.controller.admin.voyagestock.vo.*;
@@ -20,11 +23,21 @@ import org.apache.ibatis.annotations.Select;
 public interface VoyageStockMapper extends BaseMapperX<VoyageStockDO> {
 
     default PageResult<VoyageStockDO> selectPage(VoyageStockPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<VoyageStockDO>()
+        /*return selectPage(reqVO, new LambdaQueryWrapperX<VoyageStockDO>()
                 .likeIfPresent(VoyageStockDO::getVoyageName, reqVO.getVoyageName())
                 .eqIfPresent(VoyageStockDO::getShipId, reqVO.getShipId())
                 .inIfPresent(VoyageStockDO::getVoyageId, reqVO.getVoyageIds())
-                .orderByAsc(VoyageStockDO::getVoyageId));
+                .betweenIfPresent(VoyageStockDO::getCreateTime, reqVO.getVoyageTime()[0], reqVO.getVoyageTime()[1]+" 23:59:59")
+                .orderByAsc(VoyageStockDO::getVoyageId));*/
+        MPJLambdaWrapperX<VoyageStockDO> wrapperX = new MPJLambdaWrapperX<>();
+        wrapperX.selectAll(VoyageStockDO.class);
+        wrapperX.leftJoin(VoyageDO.class, VoyageDO::getId, VoyageStockDO::getVoyageId);
+        wrapperX.likeIfPresent(VoyageStockDO::getVoyageName, reqVO.getVoyageName())
+                .eqIfPresent(VoyageStockDO::getShipId, reqVO.getShipId())
+                .inIfPresent(VoyageStockDO::getVoyageId, reqVO.getVoyageIds())
+                .betweenIfPresent(VoyageDO::getStartTime, reqVO.getVoyageTime()[0], reqVO.getVoyageTime()[1])
+                .orderByDesc(VoyageStockDO::getVoyageId);
+        return selectJoinPage(reqVO, VoyageStockDO.class, wrapperX);
     }
 
     default void deleteByVoyageId(Long id) {
@@ -43,4 +56,6 @@ public interface VoyageStockMapper extends BaseMapperX<VoyageStockDO> {
      * @return
      */
     List<Long> selectNoShelfdNumVoyageIdsByVoyageIds(@Param("voyageIds") List<Long> voyageIds);
+
+    VoyageStockTotalVO selectTotal(@Param("pageReqVO") VoyageStockPageReqVO pageReqVO);
 }

+ 7 - 1
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestock/VoyageStockService.java

@@ -49,5 +49,11 @@ public interface VoyageStockService {
      * @return 航次库存分页
      */
     PageResult<VoyageStockRespVO> getVoyageStockPage(VoyageStockPageReqVO pageReqVO);
-
+    /**
+     * 获得航次库存统计
+     *
+     * @param pageReqVO 分页查询
+     * @return 航次库存统计
+     */
+    VoyageStockTotalVO getVoyageStockTotal(VoyageStockPageReqVO pageReqVO);
 }

+ 13 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestock/VoyageStockServiceImpl.java

@@ -69,6 +69,10 @@ public class VoyageStockServiceImpl implements VoyageStockService {
 
     @Override
     public PageResult<VoyageStockRespVO> getVoyageStockPage(VoyageStockPageReqVO pageReqVO) {
+        String[] voyageTime = pageReqVO.getVoyageTime();
+        if(voyageTime == null && voyageTime.length > 0) {
+            voyageTime[1] += " 23:59:59";
+        }
         PageResult<VoyageStockDO> pageResult = voyageStockMapper.selectPage(pageReqVO);
         PageResult<VoyageStockRespVO> page = BeanUtils.toBean(pageResult, VoyageStockRespVO.class);
         List<VoyageStockRespVO> list = page.getList();
@@ -80,4 +84,13 @@ public class VoyageStockServiceImpl implements VoyageStockService {
         return page;
     }
 
+    @Override
+    public VoyageStockTotalVO getVoyageStockTotal(VoyageStockPageReqVO pageReqVO) {
+        String[] voyageTime = pageReqVO.getVoyageTime();
+        if(voyageTime != null && voyageTime.length > 0) {
+            voyageTime[1] += " 23:59:59";
+        }
+        return voyageStockMapper.selectTotal(pageReqVO);
+    }
+
 }

+ 17 - 0
ship-module-product/ship-module-product-biz/src/main/resources/mapper/voyagestock/VoyageStockMapper.xml

@@ -18,4 +18,21 @@
             #{item}
          </foreach>
     </select>
+    <select id="selectTotal"
+            resultType="com.yc.ship.module.product.controller.admin.voyagestock.vo.VoyageStockTotalVO">
+        select sum(t1.total_num) total_num, sum(t1.can_sell_num) can_sale_num, sum(t1.book_num) book_num from product_voyage_stock t1 LEFT JOIN product_voyage t2 on t1.voyage_id = t2.id
+        where 1=1
+              <if test="pageReqVO.shipId != null">
+                  and t1.ship_id = #{pageReqVO.shipId}
+              </if>
+              <if test="pageReqVO.voyageIds != null">
+                  and t1.voyage_id in
+                  <foreach item="item" collection="pageReqVO.voyageIds" open="(" separator="," close=")">
+                      #{item}
+                  </foreach>
+              </if>
+          <if test="pageReqVO.voyageTime != null">
+              and t2.start_time BETWEEN #{pageReqVO.voyageTime[0]} and #{pageReqVO.voyageTime[1]}
+          </if>
+    </select>
 </mapper>