瀏覽代碼

调仓,库存盘点,待入库

yzc 2 年之前
父節點
當前提交
f1ab338da1
共有 39 個文件被更改,包括 1265 次插入63 次删除
  1. 17 0
      code/src/test/java/wmsDataSource.java
  2. 71 0
      hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockCheckController.java
  3. 71 0
      hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockCheckDetailsController.java
  4. 13 6
      hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockController.java
  5. 8 3
      hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockJournalController.java
  6. 71 0
      hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockWaitController.java
  7. 17 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockCheckDetailsDto.java
  8. 17 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockCheckDetailsSelectDto.java
  9. 25 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockCheckDto.java
  10. 17 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockCheckSelectDto.java
  11. 13 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockDto.java
  12. 17 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockWaitDto.java
  13. 20 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockWaitSelectDto.java
  14. 32 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/StockCheck.java
  15. 42 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/StockCheckDetails.java
  16. 13 1
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/StockJournal.java
  17. 58 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/StockWait.java
  18. 19 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockCheckDetailsVo.java
  19. 28 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockCheckVo.java
  20. 2 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockJournalVo.java
  21. 22 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockWaitVo.java
  22. 26 0
      hx-wms/src/main/java/com/fjhx/wms/mapper/stock/StockCheckDetailsMapper.java
  23. 30 0
      hx-wms/src/main/java/com/fjhx/wms/mapper/stock/StockCheckMapper.java
  24. 26 0
      hx-wms/src/main/java/com/fjhx/wms/mapper/stock/StockWaitMapper.java
  25. 46 0
      hx-wms/src/main/java/com/fjhx/wms/service/stock/StockCheckDetailsService.java
  26. 46 0
      hx-wms/src/main/java/com/fjhx/wms/service/stock/StockCheckService.java
  27. 1 1
      hx-wms/src/main/java/com/fjhx/wms/service/stock/StockJournalService.java
  28. 9 6
      hx-wms/src/main/java/com/fjhx/wms/service/stock/StockService.java
  29. 46 0
      hx-wms/src/main/java/com/fjhx/wms/service/stock/StockWaitService.java
  30. 57 0
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockCheckDetailsServiceImpl.java
  31. 108 0
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockCheckServiceImpl.java
  32. 27 1
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockJournalServiceImpl.java
  33. 74 45
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java
  34. 87 0
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java
  35. 19 0
      hx-wms/src/main/resources/mapper/stock/StockCheckDetailsMapper.xml
  36. 42 0
      hx-wms/src/main/resources/mapper/stock/StockCheckMapper.xml
  37. 5 0
      hx-wms/src/main/resources/mapper/stock/StockJournalMapper.xml
  38. 22 0
      hx-wms/src/main/resources/mapper/stock/StockWaitMapper.xml
  39. 1 0
      pom.xml

+ 17 - 0
code/src/test/java/wmsDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class wmsDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_wms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("hx-wms")
+                .parent("com.fjhx.wms")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 71 - 0
hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockCheckController.java

@@ -0,0 +1,71 @@
+package com.fjhx.wms.controller.stock;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.vo.StockCheckVo;
+import com.fjhx.wms.entity.stock.dto.StockCheckSelectDto;
+import com.fjhx.wms.entity.stock.dto.StockCheckDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.wms.service.stock.StockCheckService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 库存盘点 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@DS(SourceConstant.WMS)
+@RestController
+@RequestMapping("/stockCheck")
+public class StockCheckController {
+
+    @Autowired
+    private StockCheckService stockCheckService;
+
+    /**
+     * 库存盘点分页
+     */
+    @PostMapping("/page")
+    public Page<StockCheckVo> page(@RequestBody StockCheckSelectDto dto) {
+        return stockCheckService.getPage(dto);
+    }
+
+    /**
+     * 库存盘点明细
+     */
+    @PostMapping("/detail")
+    public StockCheckVo detail(@RequestBody BaseSelectDto dto) {
+        return stockCheckService.detail(dto.getId());
+    }
+
+    /**
+     * 库存盘点新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody StockCheckDto stockCheckDto) {
+        stockCheckService.add(stockCheckDto);
+    }
+
+    /**
+     * 库存盘点编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody StockCheckDto stockCheckDto) {
+        stockCheckService.edit(stockCheckDto);
+    }
+
+    /**
+     * 库存盘点删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        stockCheckService.delete(dto.getId());
+    }
+
+}

+ 71 - 0
hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockCheckDetailsController.java

@@ -0,0 +1,71 @@
+package com.fjhx.wms.controller.stock;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.vo.StockCheckDetailsVo;
+import com.fjhx.wms.entity.stock.dto.StockCheckDetailsSelectDto;
+import com.fjhx.wms.entity.stock.dto.StockCheckDetailsDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.wms.service.stock.StockCheckDetailsService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 库存盘点明细 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@DS(SourceConstant.WMS)
+@RestController
+@RequestMapping("/stockCheckDetails")
+public class StockCheckDetailsController {
+
+    @Autowired
+    private StockCheckDetailsService stockCheckDetailsService;
+
+    /**
+     * 库存盘点明细分页
+     */
+    @PostMapping("/page")
+    public Page<StockCheckDetailsVo> page(@RequestBody StockCheckDetailsSelectDto dto) {
+        return stockCheckDetailsService.getPage(dto);
+    }
+
+    /**
+     * 库存盘点明细明细
+     */
+    @PostMapping("/detail")
+    public StockCheckDetailsVo detail(@RequestBody BaseSelectDto dto) {
+        return stockCheckDetailsService.detail(dto.getId());
+    }
+
+    /**
+     * 库存盘点明细新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody StockCheckDetailsDto stockCheckDetailsDto) {
+        stockCheckDetailsService.add(stockCheckDetailsDto);
+    }
+
+    /**
+     * 库存盘点明细编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody StockCheckDetailsDto stockCheckDetailsDto) {
+        stockCheckDetailsService.edit(stockCheckDetailsDto);
+    }
+
+    /**
+     * 库存盘点明细删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        stockCheckDetailsService.delete(dto.getId());
+    }
+
+}

+ 13 - 6
hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockController.java

@@ -3,6 +3,7 @@ package com.fjhx.wms.controller.stock;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.wms.entity.stock.dto.StockSelectDto;
+import com.fjhx.wms.entity.stock.po.Stock;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.wms.entity.stock.vo.StockVo;
@@ -11,8 +12,6 @@ import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.fjhx.wms.service.stock.StockService;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import java.util.List;
-
 
 /**
  * <p>
@@ -31,7 +30,7 @@ public class StockController {
     private StockService stockService;
 
     /**
-     * 库存分页
+     * 库存查询
      */
     @PostMapping("/page")
     public Page<StockVo> page(@RequestBody StockSelectDto dto) {
@@ -42,12 +41,12 @@ public class StockController {
      * 库存明细
      */
     @PostMapping("/detail")
-    public List<StockVo> detail(@RequestBody BaseSelectDto dto) {
+    public Stock detail(@RequestBody StockDto dto) {
         return stockService.detail(dto);
     }
 
     /**
-     * 手动入库添加
+     * 手动入库
      */
     @PostMapping("/add")
     public void add(@RequestBody StockDto stockDto) {
@@ -55,7 +54,7 @@ public class StockController {
     }
 
     /**
-     * 库存编辑
+     * 手动出
      */
     @PostMapping("/edit")
     public void edit(@RequestBody StockDto stockDto) {
@@ -63,6 +62,14 @@ public class StockController {
     }
 
     /**
+     * 调仓
+     */
+    @PostMapping("/stockTransfer")
+    public void stockTransfer(@RequestBody StockDto stockDto) {
+        stockService.stockTransfer(stockDto);
+    }
+
+    /**
      * 库存删除
      */
     @PostMapping("/delete")

+ 8 - 3
hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockJournalController.java

@@ -4,6 +4,8 @@ import com.baomidou.dynamic.datasource.annotation.DS;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.wms.entity.stock.dto.StockJournalDto;
 import com.fjhx.wms.entity.stock.dto.StockJournalSelectDto;
+import com.fjhx.wms.entity.warehouse.po.Warehouse;
+import com.fjhx.wms.service.warehouse.WarehouseService;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.wms.entity.stock.vo.StockJournalVo;
@@ -17,7 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
  * 出入库记录 前端控制器
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-03-20
  */
 @DS(SourceConstant.WMS)
@@ -28,8 +30,11 @@ public class StockJournalController {
     @Autowired
     private StockJournalService stockJournalService;
 
+    @Autowired
+    private WarehouseService warehouseService;
+
     /**
-     * 出入库记录分页
+     * 出入库调仓记录分页
      */
     @PostMapping("/page")
     public Page<StockJournalVo> page(@RequestBody StockJournalSelectDto dto) {
@@ -37,7 +42,7 @@ public class StockJournalController {
     }
 
     /**
-     * 出入库记录明细
+     * 出入库 调仓记录明细
      */
     @PostMapping("/detail")
     public StockJournalVo detail(@RequestBody BaseSelectDto dto) {

+ 71 - 0
hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockWaitController.java

@@ -0,0 +1,71 @@
+package com.fjhx.wms.controller.stock;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.vo.StockWaitVo;
+import com.fjhx.wms.entity.stock.dto.StockWaitSelectDto;
+import com.fjhx.wms.entity.stock.dto.StockWaitDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.wms.service.stock.StockWaitService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 待出入库 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@DS(SourceConstant.WMS)
+@RestController
+@RequestMapping("/stockWait")
+public class StockWaitController {
+
+    @Autowired
+    private StockWaitService stockWaitService;
+
+    /**
+     * 待出入库分页
+     */
+    @PostMapping("/page")
+    public Page<StockWaitVo> page(@RequestBody StockWaitSelectDto dto) {
+        return stockWaitService.getPage(dto);
+    }
+
+    /**
+     * 待出入库明细
+     */
+    @PostMapping("/detail")
+    public StockWaitVo detail(@RequestBody BaseSelectDto dto) {
+        return stockWaitService.detail(dto.getId());
+    }
+
+    /**
+     * 待出入库新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody StockWaitDto stockWaitDto) {
+        stockWaitService.add(stockWaitDto);
+    }
+
+    /**
+     * 待出入库编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody StockWaitDto stockWaitDto) {
+        stockWaitService.edit(stockWaitDto);
+    }
+
+    /**
+     * 待出入库删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        stockWaitService.delete(dto.getId());
+    }
+
+}

+ 17 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockCheckDetailsDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.wms.entity.stock.dto;
+
+import com.fjhx.wms.entity.stock.po.StockCheckDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 库存盘点明细新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@Getter
+@Setter
+public class StockCheckDetailsDto extends StockCheckDetails {
+
+}

+ 17 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockCheckDetailsSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.wms.entity.stock.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 库存盘点明细列表查询入参实体
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@Getter
+@Setter
+public class StockCheckDetailsSelectDto extends BaseSelectDto {
+
+}

+ 25 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockCheckDto.java

@@ -0,0 +1,25 @@
+package com.fjhx.wms.entity.stock.dto;
+
+import com.fjhx.wms.entity.stock.po.StockCheck;
+import com.fjhx.wms.entity.stock.po.StockCheckDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 库存盘点新增编辑入参实体
+ *
+ * @author
+ * @since 2023-03-22
+ */
+@Getter
+@Setter
+public class StockCheckDto extends StockCheck {
+
+    /**
+     * 库存盘点明细
+     */
+    List<StockCheckDetails> list;
+
+}

+ 17 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockCheckSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.wms.entity.stock.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 库存盘点列表查询入参实体
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@Getter
+@Setter
+public class StockCheckSelectDto extends BaseSelectDto {
+
+}

+ 13 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockDto.java

@@ -17,7 +17,20 @@ import java.util.List;
 public class StockDto extends Stock {
 
     /**
+     * 目标仓库id
+     */
+    private Long toWarehouseId;
+
+    /**
      * 添加库存商品列表
      */
     private List<Stock> list;
+
+    /**业务类型*/
+    private Integer type;
+
+    /**
+     * 业务id
+     */
+    private Long businessId;
 }

+ 17 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockWaitDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.wms.entity.stock.dto;
+
+import com.fjhx.wms.entity.stock.po.StockWait;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 待出入库新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@Getter
+@Setter
+public class StockWaitDto extends StockWait {
+
+}

+ 20 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockWaitSelectDto.java

@@ -0,0 +1,20 @@
+package com.fjhx.wms.entity.stock.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 待出入库列表查询入参实体
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@Getter
+@Setter
+public class StockWaitSelectDto extends BaseSelectDto {
+
+    /**数据类型 1入库 2出库*/
+    private String type;
+
+}

+ 32 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/StockCheck.java

@@ -0,0 +1,32 @@
+package com.fjhx.wms.entity.stock.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 库存盘点
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@Getter
+@Setter
+@TableName("stock_check")
+public class StockCheck extends BasePo {
+
+    /**
+     * 仓库id
+     */
+    private Long warehouseId;
+
+    /**
+     * 盘点结果 0正常 1异常
+     */
+    private Integer result;
+
+}

+ 42 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/StockCheckDetails.java

@@ -0,0 +1,42 @@
+package com.fjhx.wms.entity.stock.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 库存盘点明细
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@Getter
+@Setter
+@TableName("stock_check_details")
+public class StockCheckDetails extends BasePo {
+
+    /**
+     * 库存盘点id
+     */
+    private Long stockCheckId;
+
+    /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
+     * 库存数量
+     */
+    private Long quantity;
+
+    /**
+     * 盘点数量
+     */
+    private Long checkQuantity;
+
+}

+ 13 - 1
hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/StockJournal.java

@@ -2,7 +2,9 @@ package com.fjhx.wms.entity.stock.po;
 
 import com.ruoyi.common.core.domain.BasePo;
 import com.baomidou.mybatisplus.annotation.TableName;
+
 import java.util.Date;
+
 import lombok.Getter;
 import lombok.Setter;
 
@@ -11,7 +13,7 @@ import lombok.Setter;
  * 出入库记录
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-03-20
  */
 @Getter
@@ -29,4 +31,14 @@ public class StockJournal extends BasePo {
      */
     private Long warehouseId;
 
+    /**
+     * 调仓目标仓库id
+     */
+    private Long toWarehouseId;
+
+    /**
+     * 业务id
+     */
+    private Long businessId;
+
 }

+ 58 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/StockWait.java

@@ -0,0 +1,58 @@
+package com.fjhx.wms.entity.stock.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 待出入库
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@Getter
+@Setter
+@TableName("stock_wait")
+public class StockWait extends BasePo {
+
+    /**
+     * 类型 1入库 2出库
+     */
+    private Integer type;
+
+    /**
+     * 业务id
+     */
+    private Long businessId;
+
+    /**
+     * 业务编码
+     */
+    private String businessCode;
+
+    /**
+     * 商品id
+     */
+    private Long productId;
+
+    /**
+     * 数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 已入库数量
+     */
+    private BigDecimal receiptQuantity;
+
+    /**
+     * 入库状态 0待入库 1部分入库 2入库完成
+     */
+    private Integer status;
+
+}

+ 19 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockCheckDetailsVo.java

@@ -0,0 +1,19 @@
+package com.fjhx.wms.entity.stock.vo;
+
+import com.fjhx.wms.entity.stock.po.StockCheckDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 库存盘点明细列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@Getter
+@Setter
+public class StockCheckDetailsVo extends StockCheckDetails {
+    /**产品名称*/
+    private String productName;
+
+}

+ 28 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockCheckVo.java

@@ -0,0 +1,28 @@
+package com.fjhx.wms.entity.stock.vo;
+
+import com.fjhx.wms.entity.stock.po.StockCheck;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 库存盘点列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@Getter
+@Setter
+public class StockCheckVo extends StockCheck {
+
+    /**盘点人名称*/
+    private String userName;
+
+    /**仓库名称*/
+    private String warehouseName;
+
+    /**盘点明细*/
+    List<StockCheckDetailsVo> list;
+
+}

+ 2 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockJournalVo.java

@@ -20,6 +20,8 @@ public class StockJournalVo extends StockJournal {
      * 仓库名称
      */
     private String warehouseName;
+    /**调仓库目标仓库名称*/
+    private String toWarehouseName;
 
     /**
      * 操作人名称

+ 22 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockWaitVo.java

@@ -0,0 +1,22 @@
+package com.fjhx.wms.entity.stock.vo;
+
+import com.fjhx.wms.entity.stock.po.StockWait;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 待出入库列表查询返回值实体
+ *
+ * @author
+ * @since 2023-03-22
+ */
+@Getter
+@Setter
+public class StockWaitVo extends StockWait {
+
+    /**
+     * 商品名称
+     */
+    private String productName;
+
+}

+ 26 - 0
hx-wms/src/main/java/com/fjhx/wms/mapper/stock/StockCheckDetailsMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.wms.mapper.stock;
+
+import com.fjhx.wms.entity.stock.po.StockCheckDetails;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.vo.StockCheckDetailsVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 库存盘点明细 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+public interface StockCheckDetailsMapper extends BaseMapper<StockCheckDetails> {
+
+    /**
+     * 库存盘点明细分页
+     */
+    Page<StockCheckDetailsVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<StockCheckDetails> wrapper);
+
+}

+ 30 - 0
hx-wms/src/main/java/com/fjhx/wms/mapper/stock/StockCheckMapper.java

@@ -0,0 +1,30 @@
+package com.fjhx.wms.mapper.stock;
+
+import com.fjhx.wms.entity.stock.po.StockCheck;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.vo.StockCheckVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 库存盘点 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-03-22
+ */
+public interface StockCheckMapper extends BaseMapper<StockCheck> {
+
+    /**
+     * 库存盘点分页
+     */
+    Page<StockCheckVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<StockCheck> wrapper);
+
+    /**
+     * 库存盘点明细
+     */
+    StockCheckVo detail(Long id);
+}

+ 26 - 0
hx-wms/src/main/java/com/fjhx/wms/mapper/stock/StockWaitMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.wms.mapper.stock;
+
+import com.fjhx.wms.entity.stock.po.StockWait;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.vo.StockWaitVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 待出入库 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+public interface StockWaitMapper extends BaseMapper<StockWait> {
+
+    /**
+     * 待出入库分页
+     */
+    Page<StockWaitVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<StockWait> wrapper);
+
+}

+ 46 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/StockCheckDetailsService.java

@@ -0,0 +1,46 @@
+package com.fjhx.wms.service.stock;
+
+import com.fjhx.wms.entity.stock.po.StockCheckDetails;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.vo.StockCheckDetailsVo;
+import com.fjhx.wms.entity.stock.dto.StockCheckDetailsSelectDto;
+import com.fjhx.wms.entity.stock.dto.StockCheckDetailsDto;
+
+
+/**
+ * <p>
+ * 库存盘点明细 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+public interface StockCheckDetailsService extends BaseService<StockCheckDetails> {
+
+    /**
+     * 库存盘点明细分页
+     */
+    Page<StockCheckDetailsVo> getPage(StockCheckDetailsSelectDto dto);
+
+    /**
+     * 库存盘点明细明细
+     */
+    StockCheckDetailsVo detail(Long id);
+
+    /**
+     * 库存盘点明细新增
+     */
+    void add(StockCheckDetailsDto stockCheckDetailsDto);
+
+    /**
+     * 库存盘点明细编辑
+     */
+    void edit(StockCheckDetailsDto stockCheckDetailsDto);
+
+    /**
+     * 库存盘点明细删除
+     */
+    void delete(Long id);
+
+}

+ 46 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/StockCheckService.java

@@ -0,0 +1,46 @@
+package com.fjhx.wms.service.stock;
+
+import com.fjhx.wms.entity.stock.po.StockCheck;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.vo.StockCheckVo;
+import com.fjhx.wms.entity.stock.dto.StockCheckSelectDto;
+import com.fjhx.wms.entity.stock.dto.StockCheckDto;
+
+
+/**
+ * <p>
+ * 库存盘点 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+public interface StockCheckService extends BaseService<StockCheck> {
+
+    /**
+     * 库存盘点分页
+     */
+    Page<StockCheckVo> getPage(StockCheckSelectDto dto);
+
+    /**
+     * 库存盘点明细
+     */
+    StockCheckVo detail(Long id);
+
+    /**
+     * 库存盘点新增
+     */
+    void add(StockCheckDto stockCheckDto);
+
+    /**
+     * 库存盘点编辑
+     */
+    void edit(StockCheckDto stockCheckDto);
+
+    /**
+     * 库存盘点删除
+     */
+    void delete(Long id);
+
+}

+ 1 - 1
hx-wms/src/main/java/com/fjhx/wms/service/stock/StockJournalService.java

@@ -19,7 +19,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 public interface StockJournalService extends BaseService<StockJournal> {
 
     /**
-     * 出入库记录分页
+     * 出入库调参记录分页
      */
     Page<StockJournalVo> getPage(StockJournalSelectDto dto);
 

+ 9 - 6
hx-wms/src/main/java/com/fjhx/wms/service/stock/StockService.java

@@ -8,8 +8,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.wms.entity.stock.vo.StockVo;
 import com.fjhx.wms.entity.stock.dto.StockDto;
 
-import java.util.List;
-
 
 /**
  * <p>
@@ -22,26 +20,31 @@ import java.util.List;
 public interface StockService extends BaseService<Stock> {
 
     /**
-     * 库存分页
+     * 库存查询
      */
     Page<StockVo> getPage(StockSelectDto dto);
 
     /**
      * 库存明细
      */
-    List<StockVo> detail(BaseSelectDto dto);
+    Stock detail(StockDto dto);
 
     /**
-     * 库存新增
+     * 手动入
      */
     void add(StockDto stockDto);
 
     /**
-     * 库存编辑
+     * 手动出
      */
     void edit(StockDto stockDto);
 
     /**
+     * 调仓
+     */
+    void stockTransfer(StockDto stockDto);
+
+    /**
      * 库存删除
      */
     void delete(Long id);

+ 46 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/StockWaitService.java

@@ -0,0 +1,46 @@
+package com.fjhx.wms.service.stock;
+
+import com.fjhx.wms.entity.stock.po.StockWait;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.vo.StockWaitVo;
+import com.fjhx.wms.entity.stock.dto.StockWaitSelectDto;
+import com.fjhx.wms.entity.stock.dto.StockWaitDto;
+
+
+/**
+ * <p>
+ * 待出入库 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+public interface StockWaitService extends BaseService<StockWait> {
+
+    /**
+     * 待出入库分页
+     */
+    Page<StockWaitVo> getPage(StockWaitSelectDto dto);
+
+    /**
+     * 待出入库明细
+     */
+    StockWaitVo detail(Long id);
+
+    /**
+     * 待出入库新增
+     */
+    void add(StockWaitDto stockWaitDto);
+
+    /**
+     * 待出入库编辑
+     */
+    void edit(StockWaitDto stockWaitDto);
+
+    /**
+     * 待出入库删除
+     */
+    void delete(Long id);
+
+}

+ 57 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockCheckDetailsServiceImpl.java

@@ -0,0 +1,57 @@
+package com.fjhx.wms.service.stock.impl;
+
+import com.fjhx.wms.entity.stock.po.StockCheckDetails;
+import com.fjhx.wms.mapper.stock.StockCheckDetailsMapper;
+import com.fjhx.wms.service.stock.StockCheckDetailsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.vo.StockCheckDetailsVo;
+import com.fjhx.wms.entity.stock.dto.StockCheckDetailsSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.wms.entity.stock.dto.StockCheckDetailsDto;
+import cn.hutool.core.bean.BeanUtil;
+
+
+/**
+ * <p>
+ * 库存盘点明细 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@Service
+public class StockCheckDetailsServiceImpl extends ServiceImpl<StockCheckDetailsMapper, StockCheckDetails> implements StockCheckDetailsService {
+
+    @Override
+    public Page<StockCheckDetailsVo> getPage(StockCheckDetailsSelectDto dto) {
+        IWrapper<StockCheckDetails> wrapper = getWrapper();
+        wrapper.orderByDesc("scd", StockCheckDetails::getId);
+        Page<StockCheckDetailsVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public StockCheckDetailsVo detail(Long id) {
+        StockCheckDetails StockCheckDetails = this.getById(id);
+        StockCheckDetailsVo result = BeanUtil.toBean(StockCheckDetails, StockCheckDetailsVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(StockCheckDetailsDto stockCheckDetailsDto) {
+        this.save(stockCheckDetailsDto);
+    }
+
+    @Override
+    public void edit(StockCheckDetailsDto stockCheckDetailsDto) {
+        this.updateById(stockCheckDetailsDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 108 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockCheckServiceImpl.java

@@ -0,0 +1,108 @@
+package com.fjhx.wms.service.stock.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.wms.entity.stock.po.Stock;
+import com.fjhx.wms.entity.stock.po.StockCheck;
+import com.fjhx.wms.entity.stock.po.StockCheckDetails;
+import com.fjhx.wms.entity.stock.vo.StockCheckDetailsVo;
+import com.fjhx.wms.entity.stock.vo.StockJournalVo;
+import com.fjhx.wms.entity.stock.vo.StockVo;
+import com.fjhx.wms.mapper.stock.StockCheckMapper;
+import com.fjhx.wms.service.stock.StockCheckDetailsService;
+import com.fjhx.wms.service.stock.StockCheckService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.system.utils.UserUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.vo.StockCheckVo;
+import com.fjhx.wms.entity.stock.dto.StockCheckSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.wms.entity.stock.dto.StockCheckDto;
+import cn.hutool.core.bean.BeanUtil;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 库存盘点 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-03-22
+ */
+@Service
+public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCheck> implements StockCheckService {
+
+    @Autowired
+    StockCheckDetailsService stockCheckDetailsService;
+    @Autowired
+    ProductInfoService productInfoService;
+
+    @Override
+    public Page<StockCheckVo> getPage(StockCheckSelectDto dto) {
+        IWrapper<StockCheck> wrapper = getWrapper();
+        wrapper.like("sc",StockCheckVo::getCreateTime,dto.getKeyword());
+        wrapper.orderByDesc("sc", StockCheck::getId);
+        Page<StockCheckVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        //根据id赋值操作人名称
+        UserUtil.assignmentNickName(page.getRecords(), StockCheckVo::getCreateUser, StockCheckVo::setUserName);
+        return page;
+    }
+
+    @Override
+    public StockCheckVo detail(Long id) {
+        StockCheckVo stockCheckVo = baseMapper.detail(id);
+
+        List<StockCheckDetailsVo> list = stockCheckVo.getList();
+
+        List<Long> productIds = list.stream().map(StockCheckDetailsVo::getProductId).collect(Collectors.toList());
+        if (ObjectUtil.isNotEmpty(productIds)) {
+            List<ProductInfo> productInfos = productInfoService.listByIds(productIds);
+            Map<Long, ProductInfo> productInfoMap = productInfos.stream().collect(Collectors.groupingBy(ProductInfo::getId,
+                    Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
+            for (StockCheckDetailsVo stockVo : list) {
+                ProductInfo productInfo = productInfoMap.get(stockVo.getProductId());
+                stockVo.setProductName(productInfo.getName());
+            }
+        }
+        return stockCheckVo;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void add(StockCheckDto stockCheckDto) {
+        stockCheckDto.setId(IdWorker.getId());
+        List<StockCheckDetails> list = stockCheckDto.getList();
+        for (StockCheckDetails stockCheckDetails : list){
+            stockCheckDetails.setStockCheckId(stockCheckDto.getId());
+            stockCheckDto.setResult(0);
+            //判断盘点数量与库存是否相同,不同将盘点结果设置为异常
+            if(stockCheckDetails.getQuantity()!=stockCheckDetails.getCheckQuantity()){
+                stockCheckDto.setResult(1);
+                break;
+            }
+        }
+        //保存盘点记录以及明细
+        save(stockCheckDto);
+        stockCheckDetailsService.saveBatch(list);
+    }
+
+    @Override
+    public void edit(StockCheckDto stockCheckDto) {
+        this.updateById(stockCheckDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 27 - 1
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockJournalServiceImpl.java

@@ -4,11 +4,13 @@ import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.wms.entity.stock.po.StockJournal;
 import com.fjhx.wms.entity.stock.vo.StockVo;
+import com.fjhx.wms.entity.warehouse.po.Warehouse;
 import com.fjhx.wms.mapper.stock.StockJournalMapper;
 import com.fjhx.wms.service.stock.StockJournalService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.wms.entity.stock.dto.StockJournalDto;
 import com.fjhx.wms.entity.stock.dto.StockJournalSelectDto;
+import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.obs.services.internal.ServiceException;
 import com.ruoyi.system.utils.UserUtil;
 import org.apache.ibatis.javassist.compiler.ast.Keyword;
@@ -23,6 +25,7 @@ import cn.hutool.core.bean.BeanUtil;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 
 /**
@@ -39,6 +42,9 @@ public class StockJournalServiceImpl extends ServiceImpl<StockJournalMapper, Sto
     @Autowired
     ProductInfoService productInfoService;
 
+    @Autowired
+    WarehouseService warehouseService;
+
     @Override
     public Page<StockJournalVo> getPage(StockJournalSelectDto dto) {
         IWrapper<StockJournal> wrapper = getWrapper();
@@ -46,8 +52,20 @@ public class StockJournalServiceImpl extends ServiceImpl<StockJournalMapper, Sto
         wrapper.eq("sj", StockJournal::getType, dto.getType());
         wrapper.like("w", StockJournalSelectDto::getKeywords, dto.getKeywords());
         Page<StockJournalVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<StockJournalVo> records = page.getRecords();
         //根据id赋值操作人名称
-        UserUtil.assignmentNickName(page.getRecords(), StockJournalVo::getCreateUser, StockJournalVo::setUserName);
+        UserUtil.assignmentNickName(records, StockJournalVo::getCreateUser, StockJournalVo::setUserName);
+        //如果为调参类型记录赋值目标仓库名称
+        if(dto.getType()==3){
+            List<Long> toWarehouseIds = records.stream().map(StockJournalVo::getToWarehouseId).collect(Collectors.toList());
+            List<Warehouse> warehouses = warehouseService.listByIds(toWarehouseIds);
+            Map<Long, Warehouse> warehouseMap = warehouses.stream().collect(Collectors.groupingBy(Warehouse::getId,
+                    Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
+            for (StockJournalVo stockJournalVo:records){
+                Warehouse warehouse = warehouseMap.get(stockJournalVo.getToWarehouseId());
+                stockJournalVo.setToWarehouseName(warehouse.getName());
+            }
+        }
         return page;
     }
 
@@ -70,6 +88,14 @@ public class StockJournalServiceImpl extends ServiceImpl<StockJournalMapper, Sto
             }
             stockVo.setProductName(productInfo.getName());
         }
+
+        //如果为调参记录
+        if(result.getType()==3){
+            //赋值目标仓库名称
+            Warehouse byId = warehouseService.getById(result.getToWarehouseId());
+            result.setToWarehouseName(byId.getName());
+        }
+
         return result;
     }
 

+ 74 - 45
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -3,7 +3,6 @@ package com.fjhx.wms.service.stock.impl;
 import cn.hutool.core.util.ObjectUtil;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
-import com.fjhx.item.service.product.impl.ProductInfoServiceImpl;
 import com.fjhx.wms.entity.stock.dto.StockJournalDetailsDto;
 import com.fjhx.wms.entity.stock.po.Stock;
 import com.fjhx.wms.entity.stock.po.StockJournal;
@@ -16,14 +15,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.wms.entity.stock.dto.StockSelectDto;
 import com.obs.services.internal.ServiceException;
 import com.ruoyi.common.core.domain.BaseSelectDto;
-import org.apache.logging.log4j.core.util.Assert;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.wms.entity.stock.vo.StockVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.wms.entity.stock.dto.StockDto;
-import cn.hutool.core.bean.BeanUtil;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
@@ -54,53 +51,79 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     public Page<StockVo> getPage(StockSelectDto dto) {
         IWrapper<Stock> wrapper = getWrapper();
         wrapper.orderByDesc("s", Stock::getId);
-        wrapper.eq(Stock::getWarehouseId,dto.getId());
-        wrapper.like(Stock::getQuantity,dto.getKeyword());
+        wrapper.eq(Stock::getWarehouseId, dto.getId());
+        wrapper.like(Stock::getQuantity, dto.getKeyword());
 
         Page<StockVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<StockVo> stockVos = page.getRecords();
         //获取产品id列表
         List<Long> productIds = stockVos.stream().map(Stock::getProductId).collect(Collectors.toList());
-        List<ProductInfo> productInfos = productInfoService.listByIds(productIds);
-        Map<Long, ProductInfo> productInfoMap = productInfos.stream().collect(Collectors.groupingBy(ProductInfo::getId,
-                Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
-        for (StockVo stockVo : stockVos){
-            ProductInfo productInfo = productInfoMap.get(stockVo.getProductId());
-            stockVo.setType(productInfo.getType());
-            stockVo.setProductName(productInfo.getName());
+        if (ObjectUtil.isNotEmpty(productIds)) {
+            List<ProductInfo> productInfos = productInfoService.listByIds(productIds);
+            Map<Long, ProductInfo> productInfoMap = productInfos.stream().collect(Collectors.groupingBy(ProductInfo::getId,
+                    Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
+            for (StockVo stockVo : stockVos) {
+                ProductInfo productInfo = productInfoMap.get(stockVo.getProductId());
+                stockVo.setType(productInfo.getType());
+                stockVo.setProductName(productInfo.getName());
+            }
         }
 
         return page;
-        //库存查询改到这
     }
 
     @Override
-    public List<StockVo> detail(BaseSelectDto dto) {
-        List<Stock> list = list(q->q.eq(ObjectUtil.isNotEmpty(dto.getId()),Stock::getWarehouseId,dto.getId()).like(ObjectUtil.isNotEmpty(dto.getKeyword()),Stock::getQuantity,dto.getKeyword()));
-        List<StockVo> stockVos = BeanUtil.copyToList(list, StockVo.class);
-        //获取产品id列表
-        List<Long> productIds = list.stream().map(Stock::getProductId).collect(Collectors.toList());
-        List<ProductInfo> productInfos = productInfoService.listByIds(productIds);
-        Map<Long, ProductInfo> productInfoMap = productInfos.stream().collect(Collectors.groupingBy(ProductInfo::getId,
-                Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
-        for (StockVo stockVo : stockVos){
-            ProductInfo productInfo = productInfoMap.get(stockVo.getProductId());
-            stockVo.setType(productInfo.getType());
-            stockVo.setProductName(productInfo.getName());
-        }
-        return stockVos;
+    public Stock detail(StockDto dto) {
+        return getOne(q->q.eq(Stock::getWarehouseId,dto.getWarehouseId()).eq(Stock::getProductId,dto.getProductId()));
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void add(StockDto stockDto) {
-        ModifyInventory(1, stockDto);
+        //创建出入库记录
+        StockJournal stockJournal = new StockJournal();
+        stockJournal.setType(stockDto.getType());
+        stockJournal.setWarehouseId(stockDto.getWarehouseId());
+        stockJournal.setBusinessId(stockDto.getBusinessId());
+        //保存出入库记录
+        stockJournalService.save(stockJournal);
+        //操作库存
+        List<StockJournalDetails> stockJournalDetailsList = ModifyInventory(stockJournal.getId(), 1, stockDto.getList(), stockDto.getWarehouseId());
+        //保存出入库明细
+        stockJournalDetailsService.saveBatch(stockJournalDetailsList);
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void edit(StockDto stockDto) {
-        ModifyInventory(2, stockDto);
+        //创建出入库记录
+        StockJournal stockJournal = new StockJournal();
+        stockJournal.setType(stockDto.getType());
+        stockJournal.setWarehouseId(stockDto.getWarehouseId());
+        stockJournal.setBusinessId(stockDto.getBusinessId());
+        //保存出入库记录
+        stockJournalService.save(stockJournal);
+        //操作库存
+        List<StockJournalDetails> stockJournalDetailsList = ModifyInventory(stockJournal.getId(), 2, stockDto.getList(), stockDto.getWarehouseId());
+        //保存出入库明细
+        stockJournalDetailsService.saveBatch(stockJournalDetailsList);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void stockTransfer(StockDto stockDto) {
+        //创建出入库记录
+        StockJournal stockJournal = new StockJournal();
+        stockJournal.setType(3);
+        stockJournal.setWarehouseId(stockDto.getWarehouseId());
+        stockJournal.setToWarehouseId(stockDto.getToWarehouseId());
+        //保存出入库记录
+        stockJournalService.save(stockJournal);
+        //操作库存
+        List<StockJournalDetails> stockJournalDetailsList = ModifyInventory(stockJournal.getId(), 2, stockDto.getList(), stockDto.getWarehouseId());
+        ModifyInventory(stockJournal.getId(), 1, stockDto.getList(), stockDto.getToWarehouseId());
+        //保存出入库明细
+        stockJournalDetailsService.saveBatch(stockJournalDetailsList);
     }
 
     @Override
@@ -111,27 +134,28 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     /**
      * 操作库存通用方法
      *
-     * @param type 1为手动入库操作 2为手动出库操作
+     * @param stockJournalId 出入库记录id
+     * @param type           1入库 2出库
      */
-    public void ModifyInventory(int type, StockDto stockDto) {
-        //创建出入库记录
-        StockJournal stockJournal = new StockJournal();
-        stockJournal.setType(type);
-        stockJournal.setWarehouseId(stockDto.getWarehouseId());
-        stockJournalService.save(stockJournal);
+    public List<StockJournalDetails> ModifyInventory(Long stockJournalId, int type, List<Stock> list, Long warehouseId) {
+        List<Stock> data = new ArrayList<>();
 
         //获取现有库存
-        List<Long> productIds = stockDto.getList().stream().map(Stock::getProductId).collect(Collectors.toList());
-        List<Stock> stockList = list(q->q.in(Stock::getProductId,productIds).eq(Stock::getWarehouseId,stockDto.getWarehouseId()));
+        List<Long> productIds = list.stream().map(Stock::getProductId).collect(Collectors.toList());
+        List<Stock> stockList = list(q -> q.in(Stock::getProductId, productIds).eq(Stock::getWarehouseId, warehouseId));
         Map<Long, Stock> stockMap = stockList.stream().collect(Collectors.groupingBy(Stock::getProductId,
                 Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
 
         List<StockJournalDetails> stockJournalDetailsList = new ArrayList<>();
-        for (Stock stock : stockDto.getList()) {
-            stock.setWarehouseId(stockDto.getWarehouseId());
+        for (Stock stock : list) {
+            Stock newStocks = new Stock();
+            newStocks.setWarehouseId(warehouseId);
+            newStocks.setProductId(stock.getProductId());
+            newStocks.setQuantity(stock.getQuantity());
 
             //合并库存数量
             Stock oldStocks = stockMap.get(stock.getProductId());
+            //用来存储操作数据
             if (ObjectUtil.isNotEmpty(oldStocks)) {
                 BigDecimal quantity = oldStocks.getQuantity();
                 if (type == 1) {
@@ -146,21 +170,26 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                 } else {
                     throw new ServiceException("未知库存操作类型");
                 }
-                stock.setId(oldStocks.getId());
-                stock.setQuantity(quantity);
+                newStocks.setId(oldStocks.getId());
+                newStocks.setQuantity(quantity);
             } else if (type == 2) {
                 throw new ServiceException("以下商品库存不存在,无法出库:" + stock.getProductId());
             }
+
+            data.add(newStocks);
             //创建出入库明细
             StockJournalDetails stockJournalDetails = new StockJournalDetailsDto();
-            stockJournalDetails.setStockJournalId(stockJournal.getId());
+            stockJournalDetails.setStockJournalId(stockJournalId);
             stockJournalDetails.setProductId(stock.getProductId());
             stockJournalDetails.setQuantity(stock.getQuantity());
             stockJournalDetailsList.add(stockJournalDetails);
         }
-        stockJournalDetailsService.saveBatch(stockJournalDetailsList);
         //操作库存
-        saveOrUpdateBatch(stockDto.getList());
+        saveOrUpdateBatch(data);
+
+        //返回库存操作明细列表
+        return stockJournalDetailsList;
     }
 
+
 }

+ 87 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

@@ -0,0 +1,87 @@
+package com.fjhx.wms.service.stock.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.wms.entity.stock.po.Stock;
+import com.fjhx.wms.entity.stock.po.StockWait;
+import com.fjhx.wms.entity.stock.vo.StockVo;
+import com.fjhx.wms.mapper.stock.StockWaitMapper;
+import com.fjhx.wms.service.stock.StockWaitService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.vo.StockWaitVo;
+import com.fjhx.wms.entity.stock.dto.StockWaitSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.wms.entity.stock.dto.StockWaitDto;
+import cn.hutool.core.bean.BeanUtil;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 待出入库 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-22
+ */
+@Service
+public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait> implements StockWaitService {
+    @Autowired
+    ProductInfoService productInfoService;
+
+    @Override
+    public Page<StockWaitVo> getPage(StockWaitSelectDto dto) {
+        IWrapper<StockWait> wrapper = getWrapper();
+        wrapper.orderByDesc("sw", StockWait::getId);
+        //过滤入库/出库
+        wrapper.eq(StockWait::getType,dto.getType());
+        wrapper.eq(StockWait::getBusinessCode,dto.getKeyword());
+        Page<StockWaitVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+
+        List<StockWaitVo> records = page.getRecords();
+        List<Long> productIds = records.stream().map(StockWaitVo::getProductId).collect(Collectors.toList());
+        if (ObjectUtil.isNotEmpty(productIds)) {
+            List<ProductInfo> productInfos = productInfoService.listByIds(productIds);
+            Map<Long, ProductInfo> productInfoMap = productInfos.stream().collect(Collectors.groupingBy(ProductInfo::getId,
+                    Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
+            for (StockWaitVo stockWaitVo : records) {
+                ProductInfo productInfo = productInfoMap.get(stockWaitVo.getProductId());
+                stockWaitVo.setProductName(productInfo.getName());
+            }
+        }
+
+        return page;
+    }
+
+    @Override
+    public StockWaitVo detail(Long id) {
+        StockWait stockWait = this.getById(id);
+        StockWaitVo result = BeanUtil.toBean(stockWait, StockWaitVo.class);
+        ProductInfo byId = productInfoService.getById(result.getProductId());
+        result.setProductName(byId.getName());
+        return result;
+    }
+
+    @Override
+    public void add(StockWaitDto stockWaitDto) {
+        this.save(stockWaitDto);
+    }
+
+    @Override
+    public void edit(StockWaitDto stockWaitDto) {
+        this.updateById(stockWaitDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 19 - 0
hx-wms/src/main/resources/mapper/stock/StockCheckDetailsMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.wms.mapper.stock.StockCheckDetailsMapper">
+    <select id="getPage" resultType="com.fjhx.wms.entity.stock.vo.StockCheckDetailsVo">
+        select
+            scd.id,
+            scd.stock_check_id,
+            scd.product_id,
+            scd.quantity,
+            scd.check_quantity,
+            scd.create_user,
+            scd.create_time,
+            scd.update_user,
+            scd.update_time
+        from stock_check_details scd
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 42 - 0
hx-wms/src/main/resources/mapper/stock/StockCheckMapper.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.wms.mapper.stock.StockCheckMapper">
+    <select id="getPage" resultType="com.fjhx.wms.entity.stock.vo.StockCheckVo">
+        select
+            sc.id,
+            sc.warehouse_id,
+            sc.result,
+            sc.create_user,
+            sc.create_time,
+            sc.update_user,
+            sc.update_time
+        from stock_check sc
+            ${ew.customSqlSegment}
+    </select>
+
+    <resultMap id="detail" type="com.fjhx.wms.entity.stock.vo.StockCheckVo">
+        <id property="id" column="id"/>
+        <result property="warehouseName" column="warehouseName"/>
+        <collection property="list" javaType="java.util.ArrayList" ofType="com.fjhx.wms.entity.stock.vo.StockCheckDetailsVo">
+            <id property="id" column="stockCheckDetails"/>
+            <result property="productId" column="product_id"/>
+            <result property="quantity" column="quantity"/>
+            <result property="checkQuantity" column="check_quantity"/>
+        </collection>
+    </resultMap>
+    <select id="detail" resultMap="detail">
+        SELECT
+            sc.id,
+            sc.warehouse_id,
+            w.`name` warehouseName,
+            scd.id stockCheckDetails,
+            scd.product_id,
+            scd.quantity,
+            scd.check_quantity
+        FROM
+            stock_check sc
+                JOIN stock_check_details scd ON scd.stock_check_id = sc.id
+                JOIN warehouse w ON sc.warehouse_id = w.id where sc.id = #{id}
+    </select>
+
+</mapper>

+ 5 - 0
hx-wms/src/main/resources/mapper/stock/StockJournalMapper.xml

@@ -7,6 +7,7 @@
             sj.type,
             sj.warehouse_id,
             w.NAME warehouseName,
+            sj.to_warehouse_id,
             sj.create_user,
             sj.create_time,
             sj.update_user,
@@ -19,6 +20,8 @@
     <resultMap id="detail" type="com.fjhx.wms.entity.stock.vo.StockJournalVo">
         <id property="id" column="id"/>
         <result property="warehouseName" column="warehouseName"/>
+        <result property="type" column="type"/>
+        <result property="toWarehouseId" column="to_warehouse_id"/>
         <collection property="list" javaType="java.util.ArrayList" ofType="com.fjhx.wms.entity.stock.vo.StockVo">
             <id property="id" column="stockJournalDetailsId"/>
             <result property="productId" column="product_id"/>
@@ -28,6 +31,8 @@
     <select id="detail" resultMap="detail">
         SELECT
             sj.id,
+            sj.type,
+            sj.to_warehouse_id,
             w.`name` warehouseName,
             sjd.id stockJournalDetailsId,
             sjd.product_id,

+ 22 - 0
hx-wms/src/main/resources/mapper/stock/StockWaitMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.wms.mapper.stock.StockWaitMapper">
+    <select id="getPage" resultType="com.fjhx.wms.entity.stock.vo.StockWaitVo">
+        select
+            sw.id,
+            sw.type,
+            sw.business_id,
+            sw.business_code,
+            sw.product_id,
+            sw.quantity,
+            sw.receipt_quantity,
+            sw.status,
+            sw.create_user,
+            sw.create_time,
+            sw.update_user,
+            sw.update_time
+        from stock_wait sw
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 1 - 0
pom.xml

@@ -11,6 +11,7 @@
     <packaging>pom</packaging>
 
     <modules>
+        <module>code</module>
         <module>hx-admin</module>
         <module>hx-customer</module>
         <module>hx-ehsd</module>