Przeglądaj źródła

[insert] 挂起

miajio 1 miesiąc temu
rodzic
commit
0b97c7131b
30 zmienionych plików z 846 dodań i 18 usunięć
  1. 34 0
      warehouse-admin-component/src/main/java/com/yr/warehouse/admin/component/redis/RedisCacheKeys.java
  2. 55 0
      warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/bo/WarehouseReceiptCreateBo.java
  3. 44 0
      warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/bo/WarehouseReceiptDetailCreateBo.java
  4. 124 0
      warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/entity/WarehouseReceiptDetail.java
  5. 134 0
      warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/entity/WarehouseReceiptInfo.java
  6. 16 0
      warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/mapper/WarehouseReceiptDetailMapper.java
  7. 16 0
      warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/mapper/WarehouseReceiptInfoMapper.java
  8. 42 0
      warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/menu/InboundTypeEnum.java
  9. 22 0
      warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/menu/WarehouseReceiptBusinessTypeEnum.java
  10. 30 0
      warehouse-admin-data/src/main/resources/mapper/warehouse/WarehouseReceiptDetailMapper.xml
  11. 32 0
      warehouse-admin-data/src/main/resources/mapper/warehouse/WarehouseReceiptInfoMapper.xml
  12. 2 3
      warehouse-admin-data/src/main/test/com/warehouse/admin/CodeGenerator.java
  13. 7 0
      warehouse-admin-server/src/main/java/com/yr/warehouse/admin/server/WarehouseInfoService.java
  14. 15 0
      warehouse-admin-server/src/main/java/com/yr/warehouse/admin/server/WarehouseReceiptService.java
  15. 9 0
      warehouse-admin-server/src/main/java/com/yr/warehouse/admin/server/impl/WarehouseInfoServiceImpl.java
  16. 74 0
      warehouse-admin-server/src/main/java/com/yr/warehouse/admin/server/impl/WarehouseReceiptServiceImpl.java
  17. 20 0
      warehouse-admin-server/src/main/java/com/yr/warehouse/admin/server/mapstruct/WarehouseReceiptMapStruct.java
  18. 3 3
      warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/controller/WarehouseController.java
  19. 38 0
      warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/controller/WarehouseReceiptController.java
  20. 5 5
      warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/mapstruct/WarehouseMapStruct.java
  21. 14 0
      warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/mapstruct/WarehouseReceiptMapStruct.java
  22. 55 0
      warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/receipt/WarehouseReceiptCreateRequest.java
  23. 48 0
      warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/receipt/WarehouseReceiptDetailCreateRequest.java
  24. 1 1
      warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/warehouse/WarehouseAddRequest.java
  25. 1 1
      warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/warehouse/WarehouseDeleteRequest.java
  26. 1 1
      warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/warehouse/WarehouseOperatorListRequest.java
  27. 1 1
      warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/warehouse/WarehouseSearchForPageRequest.java
  28. 1 1
      warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/warehouse/WarehouseStatusSettingRequest.java
  29. 1 1
      warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/warehouse/WarehouseUpdateRequest.java
  30. 1 1
      warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/response/warehouse/WarehouseInfoSearchForPageResponse.java

+ 34 - 0
warehouse-admin-component/src/main/java/com/yr/warehouse/admin/component/redis/RedisCacheKeys.java

@@ -0,0 +1,34 @@
+package com.yr.warehouse.admin.component.redis;
+
+import lombok.Getter;
+
+@Getter
+public enum RedisCacheKeys {
+
+    WAREHOUSE_RECEIPT_NUMBER("warehouse receipt number", "WR", "入库单号");
+
+    /**
+     * 业务名称-非必要
+     */
+    private final String businessName;
+    /**
+     * key format
+     */
+    private final String format;
+    /**
+     * 描述
+     */
+    private final String description;
+
+
+    RedisCacheKeys(String businessName, String format, String description) {
+        this.businessName = businessName;
+        this.format = format;
+        this.description = description;
+    }
+
+    public String getKey(Object... args) {
+        return String.format(format, args);
+    }
+
+}

+ 55 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/bo/WarehouseReceiptCreateBo.java

@@ -0,0 +1,55 @@
+package com.yr.warehouse.admin.data.bo;
+
+import com.yr.warehouse.admin.data.common.bo.BaseBo;
+import com.yr.warehouse.admin.data.menu.WarehouseReceiptBusinessTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 仓库入库单创建bo
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class WarehouseReceiptCreateBo extends BaseBo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 仓库id
+     */
+    private Long warehouseInfoId;
+
+    /**
+     * 情况说明
+     */
+    private String overview;
+
+    /**
+     * 业务类型
+     */
+    private WarehouseReceiptBusinessTypeEnum businessType;
+
+    /**
+     * 入库类型
+     */
+    private String inboundType;
+    /**
+     * 业务单号
+     */
+    private String businessNumber;
+    /**
+     * 入库商品详情
+     */
+    private List<WarehouseReceiptDetailCreateBo> details;
+
+    /**
+     * 实物图片
+     */
+    private List<String> physicalImages;
+
+}

+ 44 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/bo/WarehouseReceiptDetailCreateBo.java

@@ -0,0 +1,44 @@
+package com.yr.warehouse.admin.data.bo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * 仓库入库单详情创建bo
+ */
+@Data
+public class WarehouseReceiptDetailCreateBo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 商品id
+     */
+    private Integer productSpecId;
+
+    /**
+     * 规格/个
+     */
+    private Integer specificationQuantity;
+
+    /**
+     * 入库件数
+     */
+    private BigDecimal inboundPiecesQuantity;
+
+    /**
+     * 入库数量
+     */
+    private Integer inboundQuantity;
+
+    /**
+     * 商品生产日期
+     * 格式:yyyy-MM-dd
+     */
+    private LocalDate goodsProductionDate;
+}

+ 124 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/entity/WarehouseReceiptDetail.java

@@ -0,0 +1,124 @@
+package com.yr.warehouse.admin.data.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 仓库入库单详单
+ * </p>
+ *
+ * @author 
+ * @since 2025-09-15 17:34:34
+ */
+@Getter
+@Setter
+@TableName("yr_warehouse_receipt_detail")
+public class WarehouseReceiptDetail implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 自增长id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 入库单号
+     */
+    @TableField("receiptOrderNumber")
+    private String receiptOrderNumber;
+
+    /**
+     * 商品id
+     */
+    @TableField("productSpecId")
+    private Integer productSpecId;
+
+    /**
+     * 需入库总数-入库数量
+     */
+    @TableField("totalInboundQuantity")
+    private Long totalInboundQuantity;
+
+    /**
+     * 已入库数-实际入库数
+     */
+    @TableField("actualInboundQuantity")
+    private Long actualInboundQuantity;
+
+    /**
+     * 每件个数
+     */
+    @TableField("specificationQuantity")
+    private Integer specificationQuantity;
+
+    /**
+     * 入库件数
+     */
+    @TableField("inboundPiecesQuantity")
+    private BigDecimal inboundPiecesQuantity;
+
+    /**
+     * 实际入库件数
+     */
+    @TableField("actualInboundPiecesQuantity")
+    private BigDecimal actualInboundPiecesQuantity;
+
+    /**
+     * 入库数量(个)
+     */
+    @TableField("inboundQuantity")
+    private Integer inboundQuantity;
+
+    /**
+     * 商品生产日期
+     */
+    @TableField("goodsProductionDate")
+    private LocalDate goodsProductionDate;
+
+    /**
+     * 创建用户名称
+     */
+    @TableField("createUserName")
+    private String createUserName;
+
+    /**
+     * 创建用户id
+     */
+    @TableField("createUserId")
+    private Long createUserId;
+
+    /**
+     * 创建时间
+     */
+    @TableField("createTime")
+    private LocalDateTime createTime;
+
+    /**
+     * 修改用户名称
+     */
+    @TableField("updateUserName")
+    private String updateUserName;
+
+    /**
+     * 修改用户id
+     */
+    @TableField("updateUserId")
+    private Long updateUserId;
+
+    /**
+     * 修改时间
+     */
+    @TableField("updateTime")
+    private LocalDateTime updateTime;
+}

+ 134 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/entity/WarehouseReceiptInfo.java

@@ -0,0 +1,134 @@
+package com.yr.warehouse.admin.data.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 仓库入库单 - 入库总数 - 已入库数查详单
+ * </p>
+ *
+ * @author 
+ * @since 2025-09-15 17:34:34
+ */
+@Getter
+@Setter
+@TableName("yr_warehouse_receipt_info")
+public class WarehouseReceiptInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 自增长id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 仓库id
+     */
+    @TableField("warehouseInfoId")
+    private Long warehouseInfoId;
+
+    /**
+     * 入库单号
+     */
+    @TableField("receiptOrderNumber")
+    private String receiptOrderNumber;
+
+    /**
+     * 业务类型 OTHER_IN_BOUND 其它入库单
+     */
+    @TableField("businessType")
+    private String businessType;
+
+    /**
+     * 业务单号
+     */
+    @TableField("businessNumber")
+    private String businessNumber;
+
+    /**
+     * 入库类型
+     */
+    @TableField("inboundType")
+    private String inboundType;
+
+    /**
+     * 情况说明
+     */
+    @TableField("overview")
+    private String overview;
+
+    /**
+     * 审批人
+     */
+    @TableField("approvalUserName")
+    private String approvalUserName;
+
+    /**
+     * 审批状态 NOT_STARTED 未开始 IN_PROGRESS 进行中 COMPLETED 已完成 REJECT 已拒绝 CANCELLED 已取消 DELETED 已删除
+     */
+    @TableField("approvalStatus")
+    private String approvalStatus;
+
+    /**
+     * 审核时间
+     */
+    @TableField("approvalTime")
+    private LocalDateTime approvalTime;
+
+    /**
+     * 入库状态 NOT_STARTED 未开始 PART 部分入库 COMPLETED 入库完成
+     */
+    @TableField("receiptStatus")
+    private String receiptStatus;
+
+    /**
+     * 单据状态 NOT_STARTED 未开始 IN_PROGRESS 进行中 COMPLETED 已完成 CANCELLED 已取消 DELETED 已删除
+     */
+    @TableField("status")
+    private String status;
+
+    /**
+     * 创建用户名称
+     */
+    @TableField("createUserName")
+    private String createUserName;
+
+    /**
+     * 创建用户id
+     */
+    @TableField("createUserId")
+    private Long createUserId;
+
+    /**
+     * 创建时间
+     */
+    @TableField("createTime")
+    private LocalDateTime createTime;
+
+    /**
+     * 修改用户名称
+     */
+    @TableField("updateUserName")
+    private String updateUserName;
+
+    /**
+     * 修改用户id
+     */
+    @TableField("updateUserId")
+    private Long updateUserId;
+
+    /**
+     * 修改时间
+     */
+    @TableField("updateTime")
+    private LocalDateTime updateTime;
+}

+ 16 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/mapper/WarehouseReceiptDetailMapper.java

@@ -0,0 +1,16 @@
+package com.yr.warehouse.admin.data.mapper;
+
+import com.yr.warehouse.admin.data.entity.WarehouseReceiptDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 仓库入库单详单 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-09-15 17:34:34
+ */
+public interface WarehouseReceiptDetailMapper extends BaseMapper<WarehouseReceiptDetail> {
+
+}

+ 16 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/mapper/WarehouseReceiptInfoMapper.java

@@ -0,0 +1,16 @@
+package com.yr.warehouse.admin.data.mapper;
+
+import com.yr.warehouse.admin.data.entity.WarehouseReceiptInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 仓库入库单 - 入库总数 - 已入库数查详单 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-09-15 17:34:34
+ */
+public interface WarehouseReceiptInfoMapper extends BaseMapper<WarehouseReceiptInfo> {
+
+}

+ 42 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/menu/InboundTypeEnum.java

@@ -0,0 +1,42 @@
+/**
+ * 湖南有人网络有限公司
+ **/
+package com.yr.warehouse.admin.data.menu;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @ClassName InboundTypeEnum
+ * @Description: 类描述
+ * @Author: pete
+ * @CreateDate: 2025/5/20 10:57
+ * @Version: 1.0
+ */
+@AllArgsConstructor
+@Getter
+public enum InboundTypeEnum {
+    /**
+     * 其它入库采购单
+     */
+    OTHER_IN_PURCHASE("其它入库采购单"),
+    OTHER_IN_OTHER("其它入库单"),
+    OTHER_IN_RETURN("退回单"),
+    OTHER_IN_JIAN("少拣单");
+
+
+    private final String desc;
+
+    public static String getDescByName(String name) {
+        for (InboundTypeEnum inboundTypeEnum : InboundTypeEnum.values()) {
+            if (inboundTypeEnum.name().equals(name)) {
+                return inboundTypeEnum.desc;
+            }
+        }
+        return null;
+    }
+
+    public static Boolean isOtherInPurchase(String inboundType) {
+        return OTHER_IN_PURCHASE.name().equals(inboundType);
+    }
+}

+ 22 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/data/menu/WarehouseReceiptBusinessTypeEnum.java

@@ -0,0 +1,22 @@
+package com.yr.warehouse.admin.data.menu;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 仓库入库业务类型
+ */
+@AllArgsConstructor
+@Getter
+public enum WarehouseReceiptBusinessTypeEnum {
+    /**
+     * 其它入库单
+     */
+    OTHER_IN_BOUND("OTHER_IN_BOUND", "其它入库单");
+
+
+    private final String name;
+
+    private final String desc;
+
+}

+ 30 - 0
warehouse-admin-data/src/main/resources/mapper/warehouse/WarehouseReceiptDetailMapper.xml

@@ -0,0 +1,30 @@
+<?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.yr.warehouse.admin.data.mapper.WarehouseReceiptDetailMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.yr.warehouse.admin.data.entity.WarehouseReceiptDetail">
+        <id column="id" property="id" />
+        <result column="receiptOrderNumber" property="receiptOrderNumber" />
+        <result column="productSpecId" property="productSpecId" />
+        <result column="totalInboundQuantity" property="totalInboundQuantity" />
+        <result column="actualInboundQuantity" property="actualInboundQuantity" />
+        <result column="specificationQuantity" property="specificationQuantity" />
+        <result column="inboundPiecesQuantity" property="inboundPiecesQuantity" />
+        <result column="actualInboundPiecesQuantity" property="actualInboundPiecesQuantity" />
+        <result column="inboundQuantity" property="inboundQuantity" />
+        <result column="goodsProductionDate" property="goodsProductionDate" />
+        <result column="createUserName" property="createUserName" />
+        <result column="createUserId" property="createUserId" />
+        <result column="createTime" property="createTime" />
+        <result column="updateUserName" property="updateUserName" />
+        <result column="updateUserId" property="updateUserId" />
+        <result column="updateTime" property="updateTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, receiptOrderNumber, productSpecId, totalInboundQuantity, actualInboundQuantity, specificationQuantity, inboundPiecesQuantity, actualInboundPiecesQuantity, inboundQuantity, goodsProductionDate, createUserName, createUserId, createTime, updateUserName, updateUserId, updateTime
+    </sql>
+
+</mapper>

+ 32 - 0
warehouse-admin-data/src/main/resources/mapper/warehouse/WarehouseReceiptInfoMapper.xml

@@ -0,0 +1,32 @@
+<?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.yr.warehouse.admin.data.mapper.WarehouseReceiptInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.yr.warehouse.admin.data.entity.WarehouseReceiptInfo">
+        <id column="id" property="id" />
+        <result column="warehouseInfoId" property="warehouseInfoId" />
+        <result column="receiptOrderNumber" property="receiptOrderNumber" />
+        <result column="businessType" property="businessType" />
+        <result column="businessNumber" property="businessNumber" />
+        <result column="inboundType" property="inboundType" />
+        <result column="overview" property="overview" />
+        <result column="approvalUserName" property="approvalUserName" />
+        <result column="approvalStatus" property="approvalStatus" />
+        <result column="approvalTime" property="approvalTime" />
+        <result column="receiptStatus" property="receiptStatus" />
+        <result column="status" property="status" />
+        <result column="createUserName" property="createUserName" />
+        <result column="createUserId" property="createUserId" />
+        <result column="createTime" property="createTime" />
+        <result column="updateUserName" property="updateUserName" />
+        <result column="updateUserId" property="updateUserId" />
+        <result column="updateTime" property="updateTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, warehouseInfoId, receiptOrderNumber, businessType, businessNumber, inboundType, overview, approvalUserName, approvalStatus, approvalTime, receiptStatus, status, createUserName, createUserId, createTime, updateUserName, updateUserId, updateTime
+    </sql>
+
+</mapper>

+ 2 - 3
warehouse-admin-data/src/main/test/com/warehouse/admin/CodeGenerator.java

@@ -53,9 +53,8 @@ public class CodeGenerator {
      * 需要生成的表名,必填
      */
     private static final List<String> TABLES = List.of(
-            "yr_warehouse_info",
-            "yr_warehouse_product",
-            "yr_warehouse_device"
+            "yr_warehouse_receipt_info",
+            "yr_warehouse_receipt_detail"
             );
 
 

+ 7 - 0
warehouse-admin-server/src/main/java/com/yr/warehouse/admin/server/WarehouseInfoService.java

@@ -32,4 +32,11 @@ public interface WarehouseInfoService extends IService<WarehouseInfo> {
      * @param warehouseInfo 仓库信息
      */
     void update(WarehouseInfo warehouseInfo);
+
+    /**
+     * 根据id查询仓库信息
+     * @param warehouseId 仓库信息id
+     * @return 仓库信息
+     */
+    WarehouseInfo selectById(Long warehouseId);
 }

+ 15 - 0
warehouse-admin-server/src/main/java/com/yr/warehouse/admin/server/WarehouseReceiptService.java

@@ -0,0 +1,15 @@
+package com.yr.warehouse.admin.server;
+
+import com.yr.warehouse.admin.data.bo.WarehouseReceiptCreateBo;
+
+/**
+ * 仓库入库单服务接口
+ */
+public interface WarehouseReceiptService {
+
+
+    /**
+     * 创建仓库入库单
+     */
+    void create(WarehouseReceiptCreateBo bo);
+}

+ 9 - 0
warehouse-admin-server/src/main/java/com/yr/warehouse/admin/server/impl/WarehouseInfoServiceImpl.java

@@ -109,4 +109,13 @@ public class WarehouseInfoServiceImpl extends ServiceImpl<WarehouseInfoMapper, W
         }
         baseMapper.updateById(warehouseInfo);
     }
+
+    @Override
+    public WarehouseInfo selectById(Long warehouseId) {
+        WarehouseInfo warehouseInfo = getById(warehouseId);
+        if (null == warehouseInfo) {
+            throw new MessageException("仓库不存在");
+        }
+        return warehouseInfo;
+    }
 }

+ 74 - 0
warehouse-admin-server/src/main/java/com/yr/warehouse/admin/server/impl/WarehouseReceiptServiceImpl.java

@@ -0,0 +1,74 @@
+package com.yr.warehouse.admin.server.impl;
+
+import com.yr.bluecat.common.entity.exception.MessageException;
+import com.yr.bluecat.common.redis.RedisComponent;
+import com.yr.warehouse.admin.component.redis.RedisCacheKeys;
+import com.yr.warehouse.admin.data.bo.WarehouseReceiptCreateBo;
+import com.yr.warehouse.admin.data.bo.WarehouseReceiptDetailCreateBo;
+import com.yr.warehouse.admin.data.entity.WarehouseInfo;
+import com.yr.warehouse.admin.data.entity.WarehouseReceiptInfo;
+import com.yr.warehouse.admin.server.WarehouseInfoService;
+import com.yr.warehouse.admin.server.WarehouseReceiptService;
+import com.yr.warehouse.admin.server.mapstruct.WarehouseReceiptMapStruct;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * 仓库入库单服务接口实现
+ */
+@Service
+public class WarehouseReceiptServiceImpl implements WarehouseReceiptService {
+
+    @Resource
+    private RedisComponent redisComponent;
+
+    @Resource
+    private WarehouseInfoService warehouseInfoService;
+
+    @Override
+    public void create(WarehouseReceiptCreateBo bo) {
+        checkDetails(bo.getDetails());
+
+        String receiptOrderNumber;
+        try {
+            receiptOrderNumber = redisComponent.getNextNumber(RedisCacheKeys.WAREHOUSE_RECEIPT_NUMBER.name(), "WR", null);
+        } catch (ParseException e) {
+            throw new MessageException("生成其它入库单失败");
+        }
+
+        WarehouseInfo warehouseInfo = warehouseInfoService.selectById(bo.getWarehouseInfoId());
+
+        WarehouseReceiptInfo warehouseReceiptInfo = createBoToEntity(bo, receiptOrderNumber);
+
+
+    }
+
+    /**
+     * 创建入库单bo转实体
+     */
+    private WarehouseReceiptInfo createBoToEntity(WarehouseReceiptCreateBo bo, String receiptOrderNumber) {
+        WarehouseReceiptInfo warehouseReceiptInfo = WarehouseReceiptMapStruct.INSTANCE.createBoToEntity(bo);
+        warehouseReceiptInfo.setReceiptOrderNumber(receiptOrderNumber);
+        if (null == warehouseReceiptInfo.getOverview()) {
+            warehouseReceiptInfo.setOverview("");
+        }
+        return warehouseReceiptInfo;
+    }
+
+    /**
+     * 校验入库详情参数信息
+     */
+    private void checkDetails( List<WarehouseReceiptDetailCreateBo> details) {
+        List<WarehouseReceiptDetailCreateBo> warehouseReceiptDetailCreateRequests = details.stream().filter(detail -> detail.getSpecificationQuantity() > 0
+                && (detail.getInboundPiecesQuantity().compareTo(BigDecimal.ZERO) > 0 || detail.getInboundQuantity() > 0)).toList();
+        if (warehouseReceiptDetailCreateRequests.isEmpty()) {
+            throw new MessageException("入库商品不能为空");
+        }
+    }
+
+
+}

+ 20 - 0
warehouse-admin-server/src/main/java/com/yr/warehouse/admin/server/mapstruct/WarehouseReceiptMapStruct.java

@@ -0,0 +1,20 @@
+package com.yr.warehouse.admin.server.mapstruct;
+
+import com.yr.warehouse.admin.data.bo.WarehouseReceiptCreateBo;
+import com.yr.warehouse.admin.data.entity.WarehouseReceiptInfo;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface WarehouseReceiptMapStruct {
+
+    WarehouseReceiptMapStruct INSTANCE = Mappers.getMapper(WarehouseReceiptMapStruct.class);
+
+    @Mappings({
+            @Mapping(target = "createUserId", source = "uid"),
+            @Mapping(target = "createUserName", source = "username")
+    })
+    WarehouseReceiptInfo createBoToEntity(WarehouseReceiptCreateBo bo);
+}

+ 3 - 3
warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/controller/WarehouseController.java

@@ -16,8 +16,8 @@ import com.yr.warehouse.admin.server.WarehouseInfoService;
 import com.yr.warehouse.admin.server.WarehouseProductService;
 import com.yr.warehouse.admin.web.common.BaseController;
 import com.yr.warehouse.admin.web.mapstruct.WarehouseMapStruct;
-import com.yr.warehouse.admin.web.request.*;
-import com.yr.warehouse.admin.web.response.WarehouseInfoSearchForPageResponse;
+import com.yr.warehouse.admin.web.request.warehouse.*;
+import com.yr.warehouse.admin.web.response.warehouse.WarehouseInfoSearchForPageResponse;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
@@ -55,7 +55,7 @@ public class WarehouseController extends BaseController {
     @PostMapping("/page")
     @ResponseBody
     public PageResult<WarehouseInfoSearchForPageResponse> page(@RequestBody WarehouseSearchForPageRequest request, AdminUserInfo adminUserInfo) {
-        WarehouseInfoPageBo bo = WarehouseMapStruct.MAPSTRUCT.pageRequestToBo(request, adminUserInfo);
+        WarehouseInfoPageBo bo = WarehouseMapStruct.MAPSTRUCT.pageRequestToBo(request);
         buildUserInfo(bo, adminUserInfo);
 
         Page<WarehouseInfoVo> page = warehouseInfoService.warehouseInfoPage(bo);

+ 38 - 0
warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/controller/WarehouseReceiptController.java

@@ -0,0 +1,38 @@
+package com.yr.warehouse.admin.web.controller;
+
+import com.yr.bluecat.common.entity.response.Result;
+import com.yr.prism.auth.core.user.AdminUserInfo;
+import com.yr.warehouse.admin.data.bo.WarehouseReceiptCreateBo;
+import com.yr.warehouse.admin.server.WarehouseReceiptService;
+import com.yr.warehouse.admin.web.common.BaseController;
+import com.yr.warehouse.admin.web.mapstruct.WarehouseReceiptMapStruct;
+import com.yr.warehouse.admin.web.request.receipt.WarehouseReceiptCreateRequest;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.ParseException;
+
+/**
+ * 仓库入库单管理
+ */
+@RestController
+@RequestMapping("/warehouse/receipt")
+public class WarehouseReceiptController extends BaseController {
+
+    @Resource
+    private WarehouseReceiptService warehouseReceiptService;
+
+    /**
+     * 创建入库单
+     */
+    @PostMapping("/create")
+    @ResponseBody
+    public Result<Void> create(@Validated @RequestBody WarehouseReceiptCreateRequest request, AdminUserInfo adminUserInfo) throws ParseException {
+        WarehouseReceiptCreateBo bo = WarehouseReceiptMapStruct.MAPSTRUCT.createRequestToBo(request);
+        buildUserInfo(bo, adminUserInfo);
+        warehouseReceiptService.create(bo);
+        return Result.success(null);
+    }
+
+}

+ 5 - 5
warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/mapstruct/WarehouseMapStruct.java

@@ -4,10 +4,10 @@ import com.yr.prism.auth.core.user.AdminUserInfo;
 import com.yr.warehouse.admin.data.bo.WarehouseInfoPageBo;
 import com.yr.warehouse.admin.data.entity.WarehouseInfo;
 import com.yr.warehouse.admin.data.vo.WarehouseInfoVo;
-import com.yr.warehouse.admin.web.request.WarehouseAddRequest;
-import com.yr.warehouse.admin.web.request.WarehouseSearchForPageRequest;
-import com.yr.warehouse.admin.web.request.WarehouseUpdateRequest;
-import com.yr.warehouse.admin.web.response.WarehouseInfoSearchForPageResponse;
+import com.yr.warehouse.admin.web.request.warehouse.WarehouseAddRequest;
+import com.yr.warehouse.admin.web.request.warehouse.WarehouseSearchForPageRequest;
+import com.yr.warehouse.admin.web.request.warehouse.WarehouseUpdateRequest;
+import com.yr.warehouse.admin.web.response.warehouse.WarehouseInfoSearchForPageResponse;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.Mappings;
@@ -20,7 +20,7 @@ public interface WarehouseMapStruct {
 
     WarehouseMapStruct MAPSTRUCT = Mappers.getMapper(WarehouseMapStruct.class);
 
-    WarehouseInfoPageBo pageRequestToBo(WarehouseSearchForPageRequest request, AdminUserInfo adminUserInfo);
+    WarehouseInfoPageBo pageRequestToBo(WarehouseSearchForPageRequest request);
 
     @Mappings({
             @Mapping(target = "createUserId", source = "adminUserInfo.uid"),

+ 14 - 0
warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/mapstruct/WarehouseReceiptMapStruct.java

@@ -0,0 +1,14 @@
+package com.yr.warehouse.admin.web.mapstruct;
+
+import com.yr.warehouse.admin.data.bo.WarehouseReceiptCreateBo;
+import com.yr.warehouse.admin.web.request.receipt.WarehouseReceiptCreateRequest;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface WarehouseReceiptMapStruct {
+
+    WarehouseReceiptMapStruct MAPSTRUCT = Mappers.getMapper(WarehouseReceiptMapStruct.class);
+
+    WarehouseReceiptCreateBo createRequestToBo(WarehouseReceiptCreateRequest request);
+}

+ 55 - 0
warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/receipt/WarehouseReceiptCreateRequest.java

@@ -0,0 +1,55 @@
+package com.yr.warehouse.admin.web.request.receipt;
+
+import com.yr.warehouse.admin.data.menu.WarehouseReceiptBusinessTypeEnum;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 创建仓库入库单请求参数
+ */
+@Data
+public class WarehouseReceiptCreateRequest implements Serializable {
+
+    /**
+     * 仓库id
+     */
+    @NotNull(message = "仓库id不能为空")
+    private Long warehouseInfoId;
+
+    /**
+     * 情况说明
+     */
+    private String overview;
+
+    /**
+     * 业务类型
+     */
+    @NotNull(message = "业务类型不能为空")
+    private WarehouseReceiptBusinessTypeEnum businessType;
+
+    /**
+     * 入库类型
+     */
+    @NotNull(message = "入库类型不能为空")
+    private String inboundType;
+    /**
+     * 业务单号
+     */
+    private String businessNumber;
+    /**
+     * 入库商品详情
+     */
+    @NotEmpty(message = "入库商品不能为空")
+    private List<WarehouseReceiptDetailCreateRequest> details;
+
+    /**
+     * 实物图片
+     */
+    @NotEmpty(message = "实物图片不能为空")
+    private List<String> physicalImages;
+
+}

+ 48 - 0
warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/receipt/WarehouseReceiptDetailCreateRequest.java

@@ -0,0 +1,48 @@
+package com.yr.warehouse.admin.web.request.receipt;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * 仓库入库详单创建请求
+ */
+@Data
+public class WarehouseReceiptDetailCreateRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * 商品id
+     */
+    @NotNull(message = "商品id不能为空")
+    private Integer productSpecId;
+
+    /**
+     * 规格/个
+     */
+    @NotNull(message = "规格/个不能为空")
+    private Integer specificationQuantity;
+
+    /**
+     * 入库件数
+     */
+    @NotNull(message = "入库件数不能为空")
+    private BigDecimal inboundPiecesQuantity;
+
+    /**
+     * 入库数量
+     */
+    @NotNull(message = "入库数量不能为空")
+    private Integer inboundQuantity;
+
+    /**
+     * 商品生产日期
+     * 格式:yyyy-MM-dd
+     */
+    private LocalDate goodsProductionDate;
+}

+ 1 - 1
warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/WarehouseAddRequest.java → warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/warehouse/WarehouseAddRequest.java

@@ -1,4 +1,4 @@
-package com.yr.warehouse.admin.web.request;
+package com.yr.warehouse.admin.web.request.warehouse;
 
 import jakarta.validation.constraints.NotNull;
 import lombok.Data;

+ 1 - 1
warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/WarehouseDeleteRequest.java → warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/warehouse/WarehouseDeleteRequest.java

@@ -1,4 +1,4 @@
-package com.yr.warehouse.admin.web.request;
+package com.yr.warehouse.admin.web.request.warehouse;
 
 import jakarta.validation.constraints.NotNull;
 import lombok.Data;

+ 1 - 1
warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/WarehouseOperatorListRequest.java → warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/warehouse/WarehouseOperatorListRequest.java

@@ -1,4 +1,4 @@
-package com.yr.warehouse.admin.web.request;
+package com.yr.warehouse.admin.web.request.warehouse;
 
 import lombok.Data;
 

+ 1 - 1
warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/WarehouseSearchForPageRequest.java → warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/warehouse/WarehouseSearchForPageRequest.java

@@ -1,4 +1,4 @@
-package com.yr.warehouse.admin.web.request;
+package com.yr.warehouse.admin.web.request.warehouse;
 
 import com.yr.bluecat.common.entity.request.PageRequest;
 import lombok.Data;

+ 1 - 1
warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/WarehouseStatusSettingRequest.java → warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/warehouse/WarehouseStatusSettingRequest.java

@@ -1,4 +1,4 @@
-package com.yr.warehouse.admin.web.request;
+package com.yr.warehouse.admin.web.request.warehouse;
 
 import com.yr.warehouse.admin.data.menu.WarehouseStatusEnum;
 import jakarta.validation.constraints.NotNull;

+ 1 - 1
warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/WarehouseUpdateRequest.java → warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/request/warehouse/WarehouseUpdateRequest.java

@@ -1,4 +1,4 @@
-package com.yr.warehouse.admin.web.request;
+package com.yr.warehouse.admin.web.request.warehouse;
 
 import jakarta.validation.constraints.NotNull;
 import lombok.Data;

+ 1 - 1
warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/response/WarehouseInfoSearchForPageResponse.java → warehouse-admin-web/src/main/java/com/yr/warehouse/admin/web/response/warehouse/WarehouseInfoSearchForPageResponse.java

@@ -1,4 +1,4 @@
-package com.yr.warehouse.admin.web.response;
+package com.yr.warehouse.admin.web.response.warehouse;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;