fix:添加出入库单据物料分类字段

main
HuangHuiKang 6 days ago
parent df9899ed09
commit 7f905fa2af

@ -104,9 +104,10 @@ public class ErpStockController {
convertSet(pageResult.getList(), ErpStockDO::getWarehouseId)); convertSet(pageResult.getList(), ErpStockDO::getWarehouseId));
return BeanUtils.toBean(pageResult, ErpStockRespVO.class, stock -> { return BeanUtils.toBean(pageResult, ErpStockRespVO.class, stock -> {
MapUtils.findAndThen(productMap, stock.getProductId(), product -> stock.setProductName(product.getName()).setBarCode(product.getBarCode()) MapUtils.findAndThen(productMap, stock.getProductId(), product -> stock.setProductName(product.getName()).setBarCode(product.getBarCode())
.setCategoryName(product.getCategoryName()).setUnitName(product.getUnitName())); .setCategoryName(product.getCategoryName()).setUnitName(product.getUnitName())
.setCategoryType(product.getCategoryType()));
MapUtils.findAndThen(warehouseMap, stock.getWarehouseId(), warehouse -> stock.setWarehouseName(warehouse.getName())); MapUtils.findAndThen(warehouseMap, stock.getWarehouseId(), warehouse -> stock.setWarehouseName(warehouse.getName()));
}); });
} }
} }

@ -257,6 +257,7 @@ public class ErpStockInController {
item.setProductName(product.getName()); item.setProductName(product.getName());
item.setProductBarCode(product.getBarCode()); item.setProductBarCode(product.getBarCode());
item.setProductUnitName(product.getUnitName()); item.setProductUnitName(product.getUnitName());
item.setCategoryType(product.getCategoryType());
}); });
})); }));
stockInVO.setProductNames(CollUtil.join(stockInVO.getItems(), ",", ErpStockInRespVO.Item::getProductName)); stockInVO.setProductNames(CollUtil.join(stockInVO.getItems(), ",", ErpStockInRespVO.Item::getProductName));

@ -250,6 +250,7 @@ public class ErpStockOutController {
item.setProductName(product.getName()); item.setProductName(product.getName());
item.setProductBarCode(product.getBarCode()); item.setProductBarCode(product.getBarCode());
item.setProductUnitName(product.getUnitName()); item.setProductUnitName(product.getUnitName());
item.setCategoryType(product.getCategoryType());
}); });
})); }));
stockOutVO.setProductNames(CollUtil.join(stockOutVO.getItems(), ",", ErpStockOutRespVO.Item::getProductName)); stockOutVO.setProductNames(CollUtil.join(stockOutVO.getItems(), ",", ErpStockOutRespVO.Item::getProductName));

@ -96,10 +96,11 @@ public class ErpStockRecordController {
convertSet(pageResult.getList(), record -> Long.parseLong(record.getCreator()))); convertSet(pageResult.getList(), record -> Long.parseLong(record.getCreator())));
return BeanUtils.toBean(pageResult, ErpStockRecordRespVO.class, stock -> { return BeanUtils.toBean(pageResult, ErpStockRecordRespVO.class, stock -> {
MapUtils.findAndThen(productMap, stock.getProductId(), product -> stock.setProductName(product.getName()) MapUtils.findAndThen(productMap, stock.getProductId(), product -> stock.setProductName(product.getName())
.setCategoryName(product.getCategoryName()).setUnitName(product.getUnitName())); .setCategoryName(product.getCategoryName()).setUnitName(product.getUnitName())
.setCategoryType(product.getCategoryType()));
MapUtils.findAndThen(warehouseMap, stock.getWarehouseId(), warehouse -> stock.setWarehouseName(warehouse.getName())); MapUtils.findAndThen(warehouseMap, stock.getWarehouseId(), warehouse -> stock.setWarehouseName(warehouse.getName()));
MapUtils.findAndThen(userMap, Long.parseLong(stock.getCreator()), user -> stock.setCreatorName(user.getNickname())); MapUtils.findAndThen(userMap, Long.parseLong(stock.getCreator()), user -> stock.setCreatorName(user.getNickname()));
}); });
} }
} }

@ -121,6 +121,9 @@ public class ErpStockInRespVO {
@Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
private Long productId; private Long productId;
@Schema(description = "产品分类类型", example = "1")
private Integer categoryType;
@Schema(description = "产品单价", example = "100.00") @Schema(description = "产品单价", example = "100.00")
private BigDecimal productPrice; private BigDecimal productPrice;

@ -120,6 +120,9 @@ public class ErpStockOutRespVO {
@Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113")
private Long productId; private Long productId;
@Schema(description = "产品分类类型", example = "1")
private Integer categoryType;
@Schema(description = "产品单价", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") @Schema(description = "产品单价", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
private BigDecimal productPrice; private BigDecimal productPrice;

@ -23,6 +23,11 @@ public class ErpStockRecordRespVO {
@Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10625") @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10625")
private Long productId; private Long productId;
@Schema(description = "产品分类类型", example = "1")
@ExcelProperty(value = "产品分类类型", converter = DictConvert.class)
@DictFormat(DictTypeConstants.PRODUCT_CATEGORY_TYPE)
private Integer categoryType;
@Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32407") @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32407")
private Long warehouseId; private Long warehouseId;
@ -89,4 +94,4 @@ public class ErpStockRecordRespVO {
@Schema(description = "出入库时间", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "出入库时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("出入库时间") @ExcelProperty("出入库时间")
private LocalDateTime recordTime; private LocalDateTime recordTime;
} }

@ -21,6 +21,9 @@ public class ErpStockPageReqVO extends PageParam {
@Schema(description = "产品分类", example = "2802") @Schema(description = "产品分类", example = "2802")
private Long categoryId; private Long categoryId;
@Schema(description = "产品分类类型", example = "1")
private Integer categoryType;
@Schema(description = "id集合导出用") @Schema(description = "id集合导出用")
private String ids; private String ids;
} }

@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock; package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
@ -7,6 +9,8 @@ import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import static cn.iocoder.yudao.module.erp.enums.DictTypeConstants.PRODUCT_CATEGORY_TYPE;
@Schema(description = "管理后台 - ERP 库存 Response VO") @Schema(description = "管理后台 - ERP 库存 Response VO")
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@ -28,6 +32,11 @@ public class ErpStockRespVO {
@Schema(description = "产品分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11161") @Schema(description = "产品分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11161")
private Long categoryId; private Long categoryId;
@Schema(description = "产品分类类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty(value = "产品分类类型", converter = DictConvert.class)
@DictFormat(PRODUCT_CATEGORY_TYPE)
private Integer categoryType;
// ========== 产品信息 ========== // ========== 产品信息 ==========
@Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "苹果") @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "苹果")
@ -52,4 +61,4 @@ public class ErpStockRespVO {
@ExcelProperty("仓库名称") @ExcelProperty("仓库名称")
private String warehouseName; private String warehouseName;
} }

@ -46,6 +46,15 @@ public class ErpStockDO extends BaseDO {
* *
*/ */
private BigDecimal count; private BigDecimal count;
//@Schema(description = "产品分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11161") /**
*
*/
private Long categoryId; private Long categoryId;
}
/**
*
*
* {@link cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO#getType()}
*/
private Integer categoryType;
}

@ -43,6 +43,10 @@ public class ErpStockRecordDO extends BaseDO {
* {@link ErpProductDO#getId()} * {@link ErpProductDO#getId()}
*/ */
private Long categoryId; private Long categoryId;
/**
*
*/
private Integer categoryType;
/** /**
* *
* *
@ -89,4 +93,4 @@ public class ErpStockRecordDO extends BaseDO {
* *
*/ */
private LocalDateTime recordTime; private LocalDateTime recordTime;
} }

@ -34,6 +34,7 @@ public interface ErpStockMapper extends BaseMapperX<ErpStockDO> {
.eqIfPresent(ErpStockDO::getProductId, reqVO.getProductId()) .eqIfPresent(ErpStockDO::getProductId, reqVO.getProductId())
.eqIfPresent(ErpStockDO::getWarehouseId, reqVO.getWarehouseId()) .eqIfPresent(ErpStockDO::getWarehouseId, reqVO.getWarehouseId())
.eqIfPresent(ErpStockDO::getCategoryId, reqVO.getCategoryId()) .eqIfPresent(ErpStockDO::getCategoryId, reqVO.getCategoryId())
.eqIfPresent(ErpStockDO::getCategoryType, reqVO.getCategoryType())
.orderByDesc(ErpStockDO::getId); .orderByDesc(ErpStockDO::getId);
// 单独处理 ids 条件 // 单独处理 ids 条件
@ -55,6 +56,12 @@ public interface ErpStockMapper extends BaseMapperX<ErpStockDO> {
ErpStockDO::getWarehouseId, warehouseId); ErpStockDO::getWarehouseId, warehouseId);
} }
default ErpStockDO selectByProductIdAndWarehouseIdAndCategoryType(Long productId, Long warehouseId, Integer categoryType) {
return selectOne(ErpStockDO::getProductId, productId,
ErpStockDO::getWarehouseId, warehouseId,
ErpStockDO::getCategoryType, categoryType);
}
default List<ErpStockDO> selectByProductId(Long productId) { default List<ErpStockDO> selectByProductId(Long productId) {
return selectList(new QueryWrapper<ErpStockDO>() return selectList(new QueryWrapper<ErpStockDO>()
.eq("product_id", productId)); .eq("product_id", productId));
@ -95,4 +102,4 @@ public interface ErpStockMapper extends BaseMapperX<ErpStockDO> {
@Param("warehouseId") Long warehouseId, @Param("warehouseId") Long warehouseId,
@Param("num") BigDecimal num); @Param("num") BigDecimal num);
} }

@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInAuditR
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSubmitReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSubmitReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInApproveRecordDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInApproveRecordDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO;
@ -334,19 +335,19 @@ public class ErpStockInServiceImpl implements ErpStockInService {
: (approve ? ErpStockRecordBizTypeEnum.OTHER_IN.getType() : (approve ? ErpStockRecordBizTypeEnum.OTHER_IN.getType()
: ErpStockRecordBizTypeEnum.OTHER_IN_CANCEL.getType()); : ErpStockRecordBizTypeEnum.OTHER_IN_CANCEL.getType());
stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
stockInItem.getProductId(), moldDO.getId(), stockInItem.getWarehouseId(), count, stockInItem.getProductId(), moldDO.getId(), null, stockInItem.getWarehouseId(), count,
recordBizType, stockInItem.getInId(), stockInItem.getId(), stockIn.getNo(), stockIn.getInTime())); recordBizType, stockInItem.getInId(), stockInItem.getId(), stockIn.getNo(), stockIn.getInTime()));
if (approve && itemNeedUpdateMoldStatus(moldDO)) { if (approve && itemNeedUpdateMoldStatus(moldDO)) {
moldDO.setStatus(MoldBrandStatusEnum.STANDBY.getStatus()); moldDO.setStatus(MoldBrandStatusEnum.STANDBY.getStatus());
moldBrandService.updateMoldBrand(BeanUtils.toBean(moldDO, MoldBrandSaveReqVO.class)); moldBrandService.updateMoldBrand(BeanUtils.toBean(moldDO, MoldBrandSaveReqVO.class));
} }
} else { } else {
ErpProductDO productDO = productService.getProduct(stockInItem.getProductId()); ErpProductRespVO productDO = productService.getProduct(stockInItem.getProductId());
Integer recordBizType = bizType != null ? bizType Integer recordBizType = bizType != null ? bizType
: (approve ? ErpStockRecordBizTypeEnum.getTypeByName(stockIn.getInType()) : (approve ? ErpStockRecordBizTypeEnum.getTypeByName(stockIn.getInType())
: ErpStockRecordBizTypeEnum.getTypeByName(stockIn.getInType(), 10)); : ErpStockRecordBizTypeEnum.getTypeByName(stockIn.getInType(), 10));
stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
stockInItem.getProductId(), productDO.getCategoryId(), stockInItem.getWarehouseId(), count, stockInItem.getProductId(), productDO.getCategoryId(), productDO.getCategoryType(), stockInItem.getWarehouseId(), count,
recordBizType, stockInItem.getInId(), stockInItem.getId(), stockIn.getNo(), stockIn.getInTime())); recordBizType, stockInItem.getInId(), stockInItem.getId(), stockIn.getNo(), stockIn.getInTime()));
} }
}); });

@ -328,7 +328,7 @@ public class ErpStockOutServiceImpl implements ErpStockOutService {
: (approve ? ErpStockRecordBizTypeEnum.OTHER_OUT.getType() : (approve ? ErpStockRecordBizTypeEnum.OTHER_OUT.getType()
: ErpStockRecordBizTypeEnum.OTHER_OUT_CANCEL.getType()); : ErpStockRecordBizTypeEnum.OTHER_OUT_CANCEL.getType());
stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
stockOutItem.getProductId(), moldDO.getId(), stockOutItem.getWarehouseId(), count, stockOutItem.getProductId(), moldDO.getId(), null, stockOutItem.getWarehouseId(), count,
recordBizType, stockOutItem.getOutId(), stockOutItem.getId(), stockOut.getNo(), stockOut.getOutTime())); recordBizType, stockOutItem.getOutId(), stockOutItem.getId(), stockOut.getNo(), stockOut.getOutTime()));
if (approve && itemNeedUpdateMoldStatus(moldDO)) { if (approve && itemNeedUpdateMoldStatus(moldDO)) {
moldDO.setStatus(3); moldDO.setStatus(3);
@ -340,7 +340,7 @@ public class ErpStockOutServiceImpl implements ErpStockOutService {
: (approve ? ErpStockRecordBizTypeEnum.getTypeByName(stockOut.getOutType()) : (approve ? ErpStockRecordBizTypeEnum.getTypeByName(stockOut.getOutType())
: ErpStockRecordBizTypeEnum.getTypeByName(stockOut.getOutType(), 10)); : ErpStockRecordBizTypeEnum.getTypeByName(stockOut.getOutType(), 10));
stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
stockOutItem.getProductId(), product.getCategoryId(), stockOutItem.getWarehouseId(), count, stockOutItem.getProductId(), product.getCategoryId(), product.getCategoryType(), stockOutItem.getWarehouseId(), count,
recordBizType, stockOutItem.getOutId(), stockOutItem.getId(), stockOut.getNo(), stockOut.getOutTime())); recordBizType, stockOutItem.getOutId(), stockOutItem.getId(), stockOut.getNo(), stockOut.getOutTime()));
} }
}); });

@ -2,9 +2,11 @@ package cn.iocoder.yudao.module.erp.service.stock;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordPageReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockRecordDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockRecordDO;
import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockRecordMapper; import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockRecordMapper;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -28,6 +30,9 @@ public class ErpStockRecordServiceImpl implements ErpStockRecordService {
@Resource @Resource
private ErpStockService stockService; private ErpStockService stockService;
@Resource
private ErpProductService productService;
@Override @Override
public ErpStockRecordDO getStockRecord(Long id) { public ErpStockRecordDO getStockRecord(Long id) {
return stockRecordMapper.selectById(id); return stockRecordMapper.selectById(id);
@ -44,11 +49,17 @@ public class ErpStockRecordServiceImpl implements ErpStockRecordService {
// 1. 更新库存 // 1. 更新库存
BigDecimal totalCount = stockService.updateStockCountIncrement(createReqBO.getCategoryId(), BigDecimal totalCount = stockService.updateStockCountIncrement(createReqBO.getCategoryId(),
createReqBO.getProductId(), createReqBO.getWarehouseId(), createReqBO.getCount()); createReqBO.getProductId(), createReqBO.getWarehouseId(), createReqBO.getCount());
Integer categoryType = createReqBO.getCategoryType();
if (categoryType == null) {
ErpProductRespVO product = productService.getProduct(createReqBO.getProductId());
categoryType = product != null ? product.getCategoryType() : null;
}
// 2. 创建库存明细 // 2. 创建库存明细
ErpStockRecordDO stockRecord = BeanUtils.toBean(createReqBO, ErpStockRecordDO.class) ErpStockRecordDO stockRecord = BeanUtils.toBean(createReqBO, ErpStockRecordDO.class)
.setCategoryId(createReqBO.getCategoryId()) .setCategoryId(createReqBO.getCategoryId())
.setCategoryType(categoryType)
.setTotalCount(totalCount); .setTotalCount(totalCount);
stockRecordMapper.insert(stockRecord); stockRecordMapper.insert(stockRecord);
} }
} }

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.erp.service.stock; package cn.iocoder.yudao.module.erp.service.stock;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock.ErpStockPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock.ErpStockPageReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockMapper; import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockMapper;
@ -42,12 +43,26 @@ public class ErpStockServiceImpl implements ErpStockService {
@Override @Override
public ErpStockDO getStock(Long id) { public ErpStockDO getStock(Long id) {
return stockMapper.selectById(id); ErpStockDO stock = stockMapper.selectById(id);
if (stock != null && stock.getCategoryType() == null) {
ErpProductRespVO product = productService.getProduct(stock.getProductId());
if (product != null) {
stock.setCategoryType(product.getCategoryType());
}
}
return stock;
} }
@Override @Override
public ErpStockDO getStock(Long productId, Long warehouseId) { public ErpStockDO getStock(Long productId, Long warehouseId) {
return stockMapper.selectByProductIdAndWarehouseId(productId, warehouseId); ErpStockDO stock = stockMapper.selectByProductIdAndWarehouseId(productId, warehouseId);
if (stock != null && stock.getCategoryType() == null) {
ErpProductRespVO product = productService.getProduct(productId);
if (product != null) {
stock.setCategoryType(product.getCategoryType());
}
}
return stock;
} }
@Override @Override
public List<ErpStockDO> getStockByProductId(Long productId) { public List<ErpStockDO> getStockByProductId(Long productId) {
@ -67,12 +82,18 @@ public class ErpStockServiceImpl implements ErpStockService {
@Override @Override
public BigDecimal updateStockCountIncrement(Long categoryId,Long productId, Long warehouseId, BigDecimal count) { public BigDecimal updateStockCountIncrement(Long categoryId,Long productId, Long warehouseId, BigDecimal count) {
ErpProductRespVO product = productService.getProduct(productId);
Integer categoryType = product != null ? product.getCategoryType() : null;
// 1.1 查询当前库存 // 1.1 查询当前库存
ErpStockDO stock = stockMapper.selectByProductIdAndWarehouseId(productId, warehouseId); ErpStockDO stock = stockMapper.selectByProductIdAndWarehouseId(productId, warehouseId);
if (stock == null) { if (stock == null) {
stock = new ErpStockDO().setProductId(productId).setWarehouseId(warehouseId).setCount(BigDecimal.ZERO); stock = new ErpStockDO().setProductId(productId).setWarehouseId(warehouseId).setCount(BigDecimal.ZERO)
.setCategoryType(categoryType);
stock.setCategoryId(categoryId); stock.setCategoryId(categoryId);
stockMapper.insert(stock); stockMapper.insert(stock);
} else if (stock.getCategoryType() == null) {
stock.setCategoryType(categoryType);
stockMapper.updateById(new ErpStockDO().setId(stock.getId()).setCategoryType(categoryType));
} }
// 1.2 校验库存是否充足 // 1.2 校验库存是否充足
if (!NEGATIVE_STOCK_COUNT_ENABLE && stock.getCount().add(count).compareTo(BigDecimal.ZERO) < 0) { if (!NEGATIVE_STOCK_COUNT_ENABLE && stock.getCount().add(count).compareTo(BigDecimal.ZERO) < 0) {
@ -92,4 +113,4 @@ public class ErpStockServiceImpl implements ErpStockService {
return stock.getCount().add(count); return stock.getCount().add(count);
} }
} }

@ -28,6 +28,10 @@ public class ErpStockRecordCreateReqBO {
*/ */
@NotNull(message = "产品类型不能为空") @NotNull(message = "产品类型不能为空")
private Long categoryId; private Long categoryId;
/**
*
*/
private Integer categoryType;
/** /**
* *
*/ */
@ -64,4 +68,10 @@ public class ErpStockRecordCreateReqBO {
@NotNull(message = "出入库时间不能为空") @NotNull(message = "出入库时间不能为空")
private LocalDateTime recordTime; private LocalDateTime recordTime;
public ErpStockRecordCreateReqBO(Long productId, Long categoryId, Long warehouseId, BigDecimal count,
Integer bizType, Long bizId, Long bizItemId, String bizNo,
LocalDateTime recordTime) {
this(productId, categoryId, null, warehouseId, count, bizType, bizId, bizItemId, bizNo, recordTime);
}
} }

Loading…
Cancel
Save