huminmin
3 天以前 13afb7eafeffac6ecccc7c66d36974c54c5172d4
库存管理增加库存类型,并返回相关数据显示
已添加1个文件
已修改9个文件
165 ■■■■■ 文件已修改
doc/万通新型建材.sql 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/pojo/StockInRecord.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/pojo/StockInventory.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/pojo/StockUninventory.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/stock/StockInventoryMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/ÍòͨÐÂÐͽ¨²Ä.sql
@@ -42,8 +42,11 @@
);
alter table stock_inventory
    add manufacturer_id bigint not null default 0 comment '厂家id';
    add manufacturer_id bigint not null default 0 comment '厂家id',
    add source varchar(255) not null default '' comment '来源';
alter table stock_in_record
    add manufacturer_id bigint not null default 0 comment '厂家id';
    add manufacturer_id bigint not null default 0 comment '厂家id',
    add source varchar(255) not null default '' comment '来源';
alter table stock_uninventory
    add manufacturer_id bigint not null default 0 comment '厂家id';
    add manufacturer_id bigint not null default 0 comment '厂家id',
    add source varchar(255) not null default '' comment '来源';
src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
@@ -80,4 +80,16 @@
    @Schema(description = "产品id")
    private Long productId;
    @Schema(description = "合格库存来源")
    private String qualifiedSource;
    @Schema(description = "合格库存来源文本")
    private String qualifiedSourceText;
    @Schema(description = "不合格库存来源")
    private String unQualifiedSource;
    @Schema(description = "不合格库存来源文本")
       private String unQualifiedSourceText;
}
src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package com.ruoyi.stock.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.ruoyi.common.enums.BaseEnum;
import lombok.Getter;
import java.io.Serializable;
/**
 * @author buhuazhen
 * @date 2026/3/9
 * @email 3038525872@qq.com
 */
@Getter
public enum StockInventorySourceEnum implements BaseEnum<String>, Serializable {
    PURCHASE_RECEIPT("purchaseReceipt", "采购入库"),
    PRODUCTION_RECEIPT("productionReceipt", "生产入库"),
    OUTSOURCED_RECEIPT("outsourcedReceipt", "外协入库"),
    REPAIR_RECEIPT("repairReceipt", "修复入库"),
    PROD_GENERATED("prodGenerated", "生产产生"),
    TRANS_GENERATED("transGenerated", "运输产生"),
    CUTTING_GENERATED("cuttingGenerated", "裁剪产生"),
    CUSTOM("custom", "自定义");
    @EnumValue
    private final String code;
    private final String value;
    StockInventorySourceEnum(String code, String value) {
        this.code = code;
        this.value = value;
    }
    @JsonCreator
    public static StockInventorySourceEnum fromCode(String code) {
        if (code == null) {
            return null;
        }
        for (StockInventorySourceEnum e : StockInventorySourceEnum.values()) {
            if (e.getCode().equals(code)) {
                return e;
            }
        }
        return null;
    }
}
src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
@@ -76,4 +76,7 @@
    @Schema(description = "厂家ID")
    private Long manufacturerId;
    @Schema(description = "来源")
    private String source;
}
src/main/java/com/ruoyi/stock/pojo/StockInventory.java
@@ -75,4 +75,6 @@
    @Schema(description = "厂商id")
    private Long manufacturerId;
    @Schema(description = "来源")
    private String source;
}
src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
@@ -70,4 +70,7 @@
    @Schema(description = "厂家ID")
    private Long manufacturerId;
    @Schema(description = "来源")
    private String source;
}
src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -30,6 +30,7 @@
import com.ruoyi.stock.service.StockInRecordService;
import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor;
import org.jspecify.annotations.NonNull;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -235,12 +236,7 @@
                if ("0".equals(stockInRecord.getType())) {
                    // åˆæ ¼å…¥åº“ -> å…ˆæŸ¥åº“存,存在则更新,不存在则新增
                    StockInventory stockInventory = getStockInventory(stockInRecord.getProductModelId(), stockInRecord.getBatchNo());
                    StockInventoryDto stockInventoryDto = new StockInventoryDto();
                    stockInventoryDto.setProductModelId(stockInRecord.getProductModelId());
                    stockInventoryDto.setBatchNo(stockInRecord.getBatchNo());
                    stockInventoryDto.setQualitity(stockInRecord.getStockInNum());
                    stockInventoryDto.setRemark(stockInRecord.getRemark());
                    stockInventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
                    StockInventoryDto stockInventoryDto = getStockInventoryDto(stockInRecord);
                    if (stockInventory == null) {
                        stockInventoryMapper.insert(new StockInventory() {{
                            setProductModelId(stockInRecord.getProductModelId());
@@ -249,6 +245,7 @@
                            setRemark(stockInRecord.getRemark());
                            setWarnNum(stockInRecord.getWarnNum());
                            setManufacturerId(stockInRecord.getManufacturerId());
                            setSource(stockInRecord.getSource());
                            setVersion(1);
                        }});
                    } else {
@@ -263,6 +260,7 @@
                    stockUninventoryDto.setQualitity(stockInRecord.getStockInNum());
                    stockUninventoryDto.setRemark(stockInRecord.getRemark());
                    stockUninventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
                    stockUninventoryDto.setSource(stockInRecord.getSource());
                    if (stockUninventory == null) {
                        stockUninventoryMapper.insert(new StockUninventory() {{
                            setProductModelId(stockInRecord.getProductModelId());
@@ -270,6 +268,7 @@
                            setBatchNo(stockInRecord.getBatchNo());
                            setRemark(stockInRecord.getRemark());
                            setManufacturerId(stockInRecord.getManufacturerId());
                            setSource(stockInRecord.getSource());
                            setVersion(1);
                        }});
                    } else {
@@ -281,6 +280,17 @@
        return ids.size();
    }
    private static @NonNull StockInventoryDto getStockInventoryDto(StockInRecord stockInRecord) {
        StockInventoryDto stockInventoryDto = new StockInventoryDto();
        stockInventoryDto.setProductModelId(stockInRecord.getProductModelId());
        stockInventoryDto.setBatchNo(stockInRecord.getBatchNo());
        stockInventoryDto.setQualitity(stockInRecord.getStockInNum());
        stockInventoryDto.setRemark(stockInRecord.getRemark());
        stockInventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
        stockInventoryDto.setSource(stockInRecord.getSource());
        return stockInventoryDto;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int batchReAudit(List<Long> ids) {
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -11,6 +11,7 @@
import com.ruoyi.basic.pojo.ProductModel;
import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.stock.enums.StockInventorySourceEnum;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.R;
@@ -68,7 +69,25 @@
    @Override
    public IPage<StockInventoryDto> pageListCombinedStockInventory(Page page, StockInventoryDto stockInventoryDto) {
        return stockInventoryMapper.pageListCombinedStockInventory(page, stockInventoryDto);
        IPage<StockInventoryDto> result = stockInventoryMapper.pageListCombinedStockInventory(page, stockInventoryDto);
        // è½¬æ¢æ¥æºç¼–码为来源名称
        for (StockInventoryDto dto : result.getRecords()) {
            // åˆæ ¼åº“存来源
            if (StringUtils.isNotBlank(dto.getQualifiedSource())) {
                StockInventorySourceEnum qualifiedSourceEnum = StockInventorySourceEnum.fromCode(dto.getQualifiedSource());
                if (qualifiedSourceEnum != null) {
                    dto.setQualifiedSourceText(qualifiedSourceEnum.getValue());
                }
            }
            // ä¸åˆæ ¼åº“存来源
            if (StringUtils.isNotBlank(dto.getUnQualifiedSource())) {
                StockInventorySourceEnum unQualifiedSourceEnum = StockInventorySourceEnum.fromCode(dto.getUnQualifiedSource());
                if (unQualifiedSourceEnum != null) {
                    dto.setUnQualifiedSourceText(unQualifiedSourceEnum.getValue());
                }
            }
        }
        return result;
    }
    //入库调用
@@ -170,6 +189,7 @@
        stockInRecordDto.setRemark(stockInventoryDto.getRemark());
        stockInRecordDto.setWarnNum(stockInventoryDto.getWarnNum());
        stockInRecordDto.setManufacturerId(stockInventoryDto.getManufacturerId());
        stockInRecordDto.setSource(stockInventoryDto.getSource());
        stockInRecordService.add(stockInRecordDto);
        return true;
    }
@@ -439,6 +459,29 @@
    @Override
    public IPage<StockInventoryDto> getBatchNoQty(Page page, StockInventoryDto stockInventoryDto) {
        return stockInventoryMapper.getBatchNoQty(page, stockInventoryDto);
        IPage<StockInventoryDto> resultPage = stockInventoryMapper.getBatchNoQty(page, stockInventoryDto);
        // éåŽ†ç»“æžœï¼Œè®¾ç½®æ¥æºä¸­æ–‡å
        resultPage.getRecords().forEach(dto -> {
            // è®¾ç½®åˆæ ¼åº“存来源中文名
            if (StringUtils.isNotEmpty(dto.getQualifiedSource())) {
                System.out.println("合格库存来源:" + dto.getQualifiedSource());
                StockInventorySourceEnum qualifiedSourceEnum = StockInventorySourceEnum.fromCode(dto.getQualifiedSource());
                if (qualifiedSourceEnum != null) {
                    dto.setQualifiedSourceText(qualifiedSourceEnum.getValue());
                    System.out.println("合格库存来源值:" + qualifiedSourceEnum.getValue());
                }
            }
            // è®¾ç½®ä¸åˆæ ¼åº“存来源中文名
            if (StringUtils.isNotEmpty(dto.getUnQualifiedSource())) {
                StockInventorySourceEnum unQualifiedSourceEnum = StockInventorySourceEnum.fromCode(dto.getUnQualifiedSource());
                if (unQualifiedSourceEnum != null) {
                    dto.setUnQualifiedSourceText(unQualifiedSourceEnum.getValue());
                }
            }
        });
        return resultPage;
    }
}
src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -80,6 +80,7 @@
        stockInRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
        stockInRecordDto.setType("1");
        stockInRecordDto.setManufacturerId(stockUninventoryDto.getManufacturerId());
        stockInRecordDto.setSource(stockUninventoryDto.getSource());
        stockInRecordService.add(stockInRecordDto);
        //审批再添加
        return 1;
src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -562,6 +562,10 @@
        unit,
        product_name,
        product_id,
        MAX(manufacturer_id) as manufacturer_id,
        MAX(manufacturer_name) as manufacturerName,
        MAX(qualifiedSource) as qualifiedSource,
        MAX(unQualifiedSource) as unQualifiedSource,
        MAX(create_time) as create_time,
        MAX(update_time) as update_time,
@@ -587,6 +591,10 @@
        pm.unit,
        p.product_name,
        p.id as product_id,
        si.manufacturer_id,
        m.name as manufacturer_name,
        si.source as qualifiedSource,
        null as unQualifiedSource,
        si.create_time,
        si.update_time,
@@ -610,6 +618,7 @@
        from stock_inventory si
        left join product_model pm on si.product_model_id = pm.id
        left join product p on pm.product_id = p.id
        left join manufacturer m on si.manufacturer_id = m.id
        union all
@@ -629,6 +638,10 @@
        pm.unit,
        p.product_name,
        p.id as product_id,
        su.manufacturer_id,
        m.name as manufacturer_name,
        null as qualifiedSource,
        su.source as unQualifiedSource,
        su.create_time,
        su.update_time,
@@ -652,6 +665,7 @@
        from stock_uninventory su
        left join product_model pm on su.product_model_id = pm.id
        left join product p on pm.product_id = p.id
        left join manufacturer m on su.manufacturer_id = m.id
        ) as combined
        <where>
            <if test="ew.productModelId != null and ew.productModelId > 0">
@@ -668,7 +682,9 @@
        model,
        unit,
        product_name,
        product_id
        product_id,
        manufacturer_id,
        manufacturer_name
        order by
        batch_no
    </select>