refactor(service):优化库存查找逻辑并移除冗余代码

- 修改 findOrCreateStock 方法返回类型为 void- 移除 warehouseId 的重复设置逻辑
- 简化库存存在时的处理流程- 删除多个与出入库及库存流水相关的实体类和业务对象- 清理无用的业务逻辑代码,提升代码可维护性
This commit is contained in:
2025-10-31 17:33:33 +08:00
parent 3f5f4a9479
commit 2283033b71
9 changed files with 6 additions and 618 deletions

View File

@@ -1,55 +0,0 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 出入库单主对象 wms_stock_io
*
* @author Joshi
* @date 2025-07-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_stock_io")
public class WmsStockIo extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 出入库单ID
*/
@TableId(value = "stock_io_id")
private Long stockIoId;
/**
* 出入库单号
*/
private String stockIoCode;
/**
* 类型in=入库out=出库)
*/
private String ioType;
/**
* 业务类型(采购、销售、退货、调拨等)
*/
private String bizType;
/**
* 单据状态0=草稿1=已提交2=已审核3=已完成)
*/
private Integer status;
/**
* 备注
*/
private String remark;
//
private Long parentId;
/**
* 删除标志0=正常1=已删除)
*/
@TableLogic
private Integer delFlag;
}

View File

@@ -1,74 +0,0 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* 出入库单明细对象 wms_stock_io_detail
*
* @author Joshi
* @date 2025-07-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_stock_io_detail")
public class WmsStockIoDetail extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 明细ID
*/
@TableId(value = "detail_id")
private Long detailId;
/**
* 出入库单ID
*/
private Long stockIoId;
/**
* 库区/库位ID
*/
private Long warehouseId;
/**
* 物品类型raw_material/product
*/
private String itemType;
/**
* 物品ID
*/
private Long itemId;
/**
* 数量
*/
private BigDecimal quantity;
/**
* 单位
*/
private String unit;
/**
* 批次号
*/
private String batchNo;
/**
* 备注
*/
private String remark;
/**
* 删除标志0=正常1=已删除)
*/
@TableLogic
private Integer delFlag;
/**
* 源库位ID移库时使用
*/
private Long fromWarehouseId;
/**
* 记录类型0详情1扫码枪记录
*/
private Integer recordType;
}

View File

@@ -1,70 +0,0 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
/**
* 库存流水对象 wms_stock_log
*
* @author JR
* @date 2025-08-11
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_stock_log")
public class WmsStockLog extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 仓库/库区/库位ID
*/
private Long warehouseId;
/**
* 物品ID指向原材料或产品主键
*/
private Long itemId;
/**
* 物品类型raw_material/product
*/
private String itemType;
/**
* 变动数量(正=入库,负=出库)
*/
private BigDecimal changeQty;
/**
* 变动后的库存数量
*/
private BigDecimal afterQty;
/**
* 变动类型(入库/出库等)
*/
private String changeType;
/**
* 实际库存变动时间
*/
private Date changeTime;
/**
* 备注
*/
private String remark;
/**
* 删除标志0=正常,1=删除)
*/
@TableLogic
private Long delFlag;
//批次号
private String batchNo;
}

View File

@@ -1,61 +0,0 @@
package com.klp.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
/**
* 出入库单主业务对象 wms_stock_io
*
* @author Joshi
* @date 2025-07-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsStockIoBo extends BaseEntity {
/**
* 出入库单ID
*/
private Long stockIoId;
/**
* 出入库单号
*/
@NotBlank(message = "出入库单号不能为空", groups = { AddGroup.class, EditGroup.class })
private String stockIoCode;
/**
* 类型in=入库out=出库)
*/
@NotBlank(message = "类型in=入库out=出库)不能为空", groups = { AddGroup.class, EditGroup.class })
private String ioType;
/**
* 业务类型(采购、销售、退货、调拨等)
*/
@NotBlank(message = "业务类型(采购、销售、退货、调拨等)不能为空", groups = { AddGroup.class, EditGroup.class })
private String bizType;
/**
* 单据状态0=草稿1=已提交2=已审核3=已完成)
*/
@NotNull(message = "单据状态0=草稿1=已提交2=已审核3=已完成)不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer status;
/**
* 备注
*/
private String remark;
/**
* 父级ID用于退库时关联原出库单
*/
private Long parentId;
}

View File

@@ -1,85 +0,0 @@
package com.klp.domain.bo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 库存流水业务对象 wms_stock_log
*
* @author JR
* @date 2025-08-11
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsStockLogBo extends BaseEntity {
/**
* 主键ID
*/
private Long id;
/**
* 仓库/库区/库位ID
*/
private Long warehouseId;
/**
* 物品ID指向原材料或产品主键
*/
private Long itemId;
/**
* 物品类型raw_material/product
*/
private String itemType;
/**
* 变动数量(正=入库,负=出库)
*/
private BigDecimal changeQty;
/**
* 变动后的库存数量
*/
private BigDecimal afterQty;
/**
* 变动类型(入库/出库等)
*/
private String changeType;
/**
* 实际库存变动时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date changeTime;
/**
* 备注
*/
private String remark;
/**
* 开始时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
/**
* 结束时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
//批次号
private String batchNo;
}

View File

@@ -1,103 +0,0 @@
package com.klp.domain.vo;
import java.math.BigDecimal;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 出入库单明细视图对象 wms_stock_io_detail
*
* @author Joshi
* @date 2025-07-18
*/
@Data
@ExcelIgnoreUnannotated
public class WmsStockIoDetailVo {
private static final long serialVersionUID = 1L;
/**
* 明细ID
*/
@ExcelProperty(value = "明细ID")
private Long detailId;
/**
* 出入库单ID
*/
@ExcelProperty(value = "出入库单ID")
private Long stockIoId;
/**
* 库区/库位ID
*/
@ExcelProperty(value = "库区/库位ID")
private Long warehouseId;
/**
* 物品类型raw_material/product
*/
@ExcelProperty(value = "物品类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "r=aw_material/product")
private String itemType;
/**
* 物品ID
*/
@ExcelProperty(value = "物品ID")
private Long itemId;
/**
* 数量
*/
@ExcelProperty(value = "数量")
private BigDecimal quantity;
/**
* 单位
*/
@ExcelProperty(value = "单位")
private String unit;
/**
* 批次号
*/
@ExcelProperty(value = "批次号")
private String batchNo;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 记录类型0详情1扫码枪记录
*/
private Integer recordType;
/**
* 库区/库位名称
*/
private String warehouseName;
/**
* 源库区/库位名称(移库用)
*/
private String fromWarehouseName;
/**
* 源库位ID移库时使用
*/
private Long fromWarehouseId;
//主表的 数据号 类型以及业务类型
private String stockIoCode;
private String ioType;
private String bizType;
}

View File

@@ -1,65 +0,0 @@
package com.klp.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
/**
* 出入库单主视图对象 wms_stock_io
*
* @author Joshi
* @date 2025-07-18
*/
@Data
@ExcelIgnoreUnannotated
public class WmsStockIoVo extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 出入库单ID
*/
@ExcelProperty(value = "出入库单ID")
private Long stockIoId;
/**
* 出入库单号
*/
@ExcelProperty(value = "出入库单号")
private String stockIoCode;
/**
* 类型in=入库out=出库)
*/
@ExcelProperty(value = "类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "i=n=入库out=出库")
private String ioType;
/**
* 业务类型(采购、销售、退货、调拨等)
*/
@ExcelProperty(value = "业务类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "采=购、销售、退货、调拨等")
private String bizType;
/**
* 单据状态0=草稿1=已提交2=已审核3=已完成)
*/
@ExcelProperty(value = "单据状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0==草稿1=已提交2=已审核3=已完成")
private Integer status;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
private Long parentId;
}

View File

@@ -1,92 +0,0 @@
package com.klp.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 库存流水视图对象 wms_stock_log
*
* @author JR
* @date 2025-08-11
*/
@Data
@ExcelIgnoreUnannotated
public class WmsStockLogVo {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 仓库/库区/库位ID
*/
@ExcelProperty(value = "仓库/库区/库位ID")
private Long warehouseId;
/**
* 物品ID指向原材料或产品主键
*/
@ExcelProperty(value = "物品ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "指=向原材料或产品主键")
private Long itemId;
/**
* 物品类型raw_material/product
*/
@ExcelProperty(value = "物品类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "r=aw_material/product")
private String itemType;
/**
* 变动数量(正=入库,负=出库)
*/
@ExcelProperty(value = "变动数量", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "正==入库,负=出库")
private BigDecimal changeQty;
/**
* 变动后的库存数量
*/
@ExcelProperty(value = "变动后的库存数量")
private BigDecimal afterQty;
/**
* 变动类型(入库/出库等)
*/
@ExcelProperty(value = "变动类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "入=库/出库等")
private String changeType;
/**
* 实际库存变动时间
*/
@ExcelProperty(value = "实际库存变动时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date changeTime;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 仓库/库区名称
*/
@ExcelProperty(value = "仓库/库区名称")
private String warehouseName;
//批次号
private String batchNo;
}