cuilei
2025-06-05 18eb8ad4c66fd8515706e2a910ad50ac8f06ba22
工具管理-增加刃磨出库
已添加2个文件
已修改9个文件
262 ■■■■■ 文件已修改
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutboundDetailVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SelectOutboundToolVo.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/SharpenStatus.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutboundOrderMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutboundDetailMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutboundOrderMapper.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolLedgerDetailMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java 97 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java
@@ -17,6 +17,7 @@
import org.jeecg.modules.tms.entity.dto.OutBoundRequestDto;
import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto;
import org.jeecg.modules.tms.entity.vo.OutboundDetailVo;
import org.jeecg.modules.tms.entity.vo.SelectOutboundToolVo;
import org.jeecg.modules.tms.enums.OutBillStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -96,6 +97,28 @@
        return Result.OK(pageList);
    }
    @ApiOperation(value="出库申请-查询借用出库工具列表", notes="出库申请-查询借用出库工具列表")
    @GetMapping(value = "/selectBorrowOutboundToolPageList")
    public Result<IPage<SelectOutboundToolVo>> queryBorrowOutboundToolPageList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                                                               @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                                                               HttpServletRequest req) {
        Map<String, String[]> parameterMap = req.getParameterMap();
        Page<SelectOutboundToolVo> page = new Page<>(pageNo, pageSize);
        IPage<SelectOutboundToolVo> pageList = outboundOrderService.queryBorrowOutboundToolPageList(page, parameterMap);
        return Result.OK(pageList);
    }
    @ApiOperation(value="出库申请-查询刃磨出库工具列表", notes="出库申请-查询刃磨出库工具列表")
    @GetMapping(value = "/selectSharpenOutboundToolPageList")
    public Result<IPage<SelectOutboundToolVo>> querySharpenOutboundToolPageList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                                                                @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                                                                HttpServletRequest req) {
        Map<String, String[]> parameterMap = req.getParameterMap();
        Page<SelectOutboundToolVo> page = new Page<>(pageNo, pageSize);
        IPage<SelectOutboundToolVo> pageList = outboundOrderService.querySharpenOutboundToolPageList(page, parameterMap);
        return Result.OK(pageList);
    }
    @ApiOperation(value="tms_outbound_order-通过id查询", notes="tms_outbound_order-通过id查询")
    @GetMapping(value = "/queryById")
    public Result<?> queryById(@RequestParam("id") String id) {
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java
@@ -52,6 +52,10 @@
    @ApiModelProperty(value = "刃磨结果及建议")
    private String sharpeningResult;
    /** åˆƒç£¨çŠ¶æ€;1:待刃磨;2:刃磨中;3:已完成 */
    @ApiModelProperty(value = "刃磨状态;1:待刃磨;2:刃磨中;3:已完成")
    private String sharpeningStatus;
    /** è´£ä»»äºº */
    @ApiModelProperty(value = "责任人")
    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutboundDetailVo.java
@@ -93,4 +93,7 @@
    /**台账明细表主键id*/
    @ApiModelProperty(value = "台账明细表主键id,工具选择时去重用")
    private String toolLedgerDetailId;
    /**工具刃磨表主键id*/
    @ApiModelProperty(value = "工具刃磨表主键id,选择刃磨工具时去重用")
    private String toolSharpeningId;
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SelectOutboundToolVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package org.jeecg.modules.tms.entity.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.math.BigDecimal;
/***
 * å·¥å…·å‡ºåº“申请-选择出库工具列表展示对象封装
 */
@Data
public class SelectOutboundToolVo {
    /**主键id*/
    @ApiModelProperty(value = "主键id")
    private String id;
    /**台账明细id*/
    @ApiModelProperty(value = "台账明细id")
    private String toolLedgerDetailId;
    /**工具编码(关联字段)*/
    @ApiModelProperty(value = "工具编码(关联字段,存tms_base_tools表主键id)")
    private String toolCode;
    /**工具编码*/
    @ApiModelProperty(value = "工具编码(tms_base_tools表tool_code字段)")
    private String toolNum;
    /**工具编号*/
    @ApiModelProperty(value = "工具编号")
    private String toolId;
    /**工具中文名称*/
    @ApiModelProperty(value = "工具中文名称")
    private String toolName;
    /**数量*/
    @ApiModelProperty(value = "数量")
    private BigDecimal quantity;
    /**库区/库号*/
    @ApiModelProperty(value = "库区/库号")
    private String warehouseId;
    /**仓库名称*/
    @ApiModelProperty(value = "仓库名称")
    private String warehouseName;
    /**库位号*/
    @ApiModelProperty(value = "库位号")
    private String positionCode;
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/SharpenStatus.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package org.jeecg.modules.tms.enums;
import lombok.Getter;
/**
 * åˆƒç£¨çŠ¶æ€æžšä¸¾
 */
@Getter
public enum SharpenStatus {
    PENDING("1", "待刃磨"),
    IN_PROGRESS("2", "刃磨中"),
    COMPLETED("3", "已完成");
    private final String value;
    private final String description;
    SharpenStatus(String value, String description) {
        this.value = value;
        this.description = description;
    }
    /**
     * æ ¹æ®çŠ¶æ€å€¼èŽ·å–æžšä¸¾å®žä¾‹
     * @param status çŠ¶æ€å€¼
     * @return æžšä¸¾å®žä¾‹æˆ–null
     */
    public static SharpenStatus fromStatus(String status) {
        for (SharpenStatus value : values()) {
            if (value.getValue().equals(status)) {
                return value;
            }
        }
        return null;
    }
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutboundOrderMapper.java
@@ -1,12 +1,14 @@
package org.jeecg.modules.tms.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.tms.entity.OutboundOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.tms.entity.vo.SelectOutboundToolVo;
/**
 * @Description: tms_outbound_order
@@ -18,4 +20,10 @@
    IPage<OutboundOrder> queryPageList(Page<OutboundOrder> page,
                                       @Param(Constants.WRAPPER) Wrapper<OutboundOrder> queryWrapper);
    IPage<SelectOutboundToolVo> querySharpenOutboundToolPageList(Page<SelectOutboundToolVo> page,
                                                                 @Param(Constants.WRAPPER) Wrapper<SelectOutboundToolVo> queryWrapper);
    IPage<SelectOutboundToolVo> queryBorrowOutboundToolPageList(Page<SelectOutboundToolVo> page,
                                                                @Param(Constants.WRAPPER) Wrapper<SelectOutboundToolVo> queryWrapper);
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutboundDetailMapper.xml
@@ -37,6 +37,7 @@
            t3.supplier_id supplierId,
            t11.id toolLedgerDetailId,
            t11.quantity,
            t13.id toolSharpeningId,
            ISNULL(t12.warehouse_id, '') + '/' + ISNULL(t12.warehouse_name, '') warehouseName,
            <choose>
                <when test="ew.paramNameValuePairs.paramaTableName == '1'">
@@ -72,6 +73,7 @@
        LEFT JOIN tms_base_tools t2 on t1.tool_code = t2.id
        LEFT JOIN tms_tools_config_property t3 on t3.tool_code = t2.id
        LEFT JOIN tms_tool_ledger_detail t11 on t1.tool_code = t11.tool_code and t1.tool_id = t11.tool_id
        LEFT JOIN tms_tool_sharpening t13 on t1.tool_code = t13.tool_code and t1.tool_id = t13.tool_id
        LEFT JOIN tms_warehouse t12 on t1.storage_location = t12.id
        <choose>
            <when test="ew.paramNameValuePairs.paramaTableName == '1'">
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutboundOrderMapper.xml
@@ -22,4 +22,43 @@
        FROM tms_outbound_order t
        ${ew.customSqlSegment}
    </select>
    <select id="querySharpenOutboundToolPageList"
            resultType="org.jeecg.modules.tms.entity.vo.SelectOutboundToolVo">
        SELECT
            t1.id,
            t2.id toolLedgerDetailId,
            t1.tool_code toolCode,
            t3.tool_code toolNum,
            t1.tool_id toolId,
            t3.chinese_name toolName,
            t3.tool_model toolModel,
            t2.quantity,
            t2.warehouse_id warehouseId,
            ISNULL(t4.warehouse_id, '') + '/' + ISNULL(t4.warehouse_name, '') warehouseName,
            t2.position_code positionCode
        FROM tms_tool_sharpening t1
        INNER JOIN tms_tool_ledger_detail t2 on t1.tool_id = t2.tool_id
        LEFT JOIN tms_base_tools t3 on t1.tool_code = t3.id
        LEFT JOIN tms_warehouse t4 on t2.warehouse_id = t4.id
        ${ew.customSqlSegment}
    </select>
    <select id="queryBorrowOutboundToolPageList"
            resultType="org.jeecg.modules.tms.entity.vo.SelectOutboundToolVo">
        SELECT
            t.id,
            t.id toolLedgerDetailId,
            t.tool_code toolCode,
            p.tool_code toolNum,
            t.tool_id toolId,
            p.chinese_name toolName,
            p.tool_model toolModel,
            t.quantity,
            t.warehouse_id warehouseId,
            ISNULL(q.warehouse_id, '') + '/' + ISNULL(q.warehouse_name, '') warehouseName,
            t.position_code positionCode
        FROM tms_tool_ledger_detail t
        LEFT JOIN tms_base_tools p on t.tool_code = p.id
        LEFT JOIN tms_warehouse q on t.warehouse_id = q.id
        ${ew.customSqlSegment}
    </select>
</mapper>
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolLedgerDetailMapper.xml
@@ -5,6 +5,7 @@
    <select id="queryPageList" resultType="org.jeecg.modules.tms.entity.ToolLedgerDetail">
        SELECT
            t.id,
            t.id toolLedgerDetailId,
            t.tool_code toolCode,
            p.tool_code toolNum,
            t.tool_id toolId,
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java
@@ -9,6 +9,7 @@
import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto;
import org.jeecg.modules.tms.entity.dto.OutBoundRequestDto;
import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto;
import org.jeecg.modules.tms.entity.vo.SelectOutboundToolVo;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.Serializable;
import java.util.Collection;
@@ -51,4 +52,8 @@
    void outBoundByApply(List<OutBoundRequestDto> outBoundRequestList);
    void outBoundByAdd(List<OutBoundAddDto> boundAddList);
    IPage<SelectOutboundToolVo> querySharpenOutboundToolPageList(Page<SelectOutboundToolVo> page, Map<String, String[]> parameterMap);
    IPage<SelectOutboundToolVo> queryBorrowOutboundToolPageList(Page<SelectOutboundToolVo> page, Map<String, String[]> parameterMap);
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java
@@ -30,10 +30,8 @@
import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto;
import org.jeecg.modules.tms.entity.dto.OutBoundRequestDto;
import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto;
import org.jeecg.modules.tms.enums.OutBillStatus;
import org.jeecg.modules.tms.enums.OutBoundStatusEnum;
import org.jeecg.modules.tms.enums.OutStorehouseType;
import org.jeecg.modules.tms.enums.ToolCirculationStatus;
import org.jeecg.modules.tms.entity.vo.SelectOutboundToolVo;
import org.jeecg.modules.tms.enums.*;
import org.jeecg.modules.tms.mapper.OutboundDetailMapper;
import org.jeecg.modules.tms.convert.OutboundOrderConvert;
import org.jeecg.modules.tms.mapper.OutboundOrderMapper;
@@ -67,6 +65,8 @@
    private IOutStoreDetailService outStoreDetailService;
    @Autowired
    private IBaseToolsService baseToolsService;
    @Autowired
    private IToolsSharpeningService toolsSharpeningService;
    @Autowired
    private ISysBusinessCodeRuleService businessCodeRuleService;
    @Autowired
@@ -206,13 +206,13 @@
            String toolCode = detail.getToolCode();
            List<ToolLedgerDetail> ledgerDetailList = toolLedgerDetailList.stream().filter(item -> Objects.equals(item.getToolCode(), toolCode)
                    && Objects.equals(item.getToolId(), detail.getToolId())).collect(Collectors.toList());
            BaseTools tools = baseToolsService.getById(toolCode);
            if (CollectionUtil.isEmpty(ledgerDetailList)) {
                BaseTools tools = baseToolsService.getById(toolCode);
                throw new JeecgBootException("编码为【" + tools.getToolCode() + "】的工具,库存不足!");
            } else {
                ToolLedgerDetail toolLedgerDetail = ledgerDetailList.get(0);
                if (toolLedgerDetail.getQuantity().compareTo(detail.getOutboundQuantity()) < 0) {
                    throw new JeecgBootException("编码为【" + toolLedgerDetail.getToolCode() + "】的工具,库存不足!");
                    throw new JeecgBootException("编码为【" + tools.getToolCode() + "】的工具,库存不足!");
                } else {
                    //扣减台账明细中的库存,执行锁库
                    if (StrUtil.isBlank(detail.getToolId())) {
@@ -386,22 +386,32 @@
        Map<String, ToolLedger> toolLedgerMap = toolLedgerService.list(new LambdaQueryWrapper<ToolLedger>().in(ToolLedger::getToolId, toolIdList)).stream()
                .collect(Collectors.toMap(ToolLedger::getToolId, item -> item, (k1, k2) -> k1));
        LambdaQueryWrapper<ToolLedgerDetail> queryWrapper = new LambdaQueryWrapper<>();
        LambdaQueryWrapper<ToolLedgerDetail> ledgerDetailQueryWrapper = new LambdaQueryWrapper<>();
        LambdaQueryWrapper<ToolSharpening> toolSharpenQueryWrapper = new LambdaQueryWrapper<>();
        for (int i = 0; i < outboundDetailList.size(); i++) {
            if (i > 0) {
                queryWrapper.or();
                ledgerDetailQueryWrapper.or();
                toolSharpenQueryWrapper.or();
            }
            OutboundDetail detail = outboundDetailList.get(i);
            queryWrapper.or(wrapper ->
            ledgerDetailQueryWrapper.or(wrapper ->
                    wrapper.eq(ToolLedgerDetail::getToolCode, detail.getToolCode())
                            .eq(ToolLedgerDetail::getToolId, detail.getToolId()) //如果不管到把,该字段为空
            );
            toolSharpenQueryWrapper.or(wrapper ->
                    wrapper.eq(ToolSharpening::getToolCode, detail.getToolCode())
                            .eq(ToolSharpening::getToolId, detail.getToolId())
                            .eq(ToolSharpening::getSharpeningStatus, SharpenStatus.PENDING.getValue())
            );
        }
        List<ToolLedgerDetail> toolLedgerDetailList = toolLedgerDetailService.list(queryWrapper);
        List<ToolLedgerDetail> toolLedgerDetailList = toolLedgerDetailService.list(ledgerDetailQueryWrapper);
        List<ToolSharpening> toolSharpeningList = toolsSharpeningService.list(toolSharpenQueryWrapper);
        List<ToolLedger> toolLedgerUpdateList = CollectionUtil.newArrayList();
        List<ToolLedgerDetail> toolLedgerDetailUpdateList = CollectionUtil.newArrayList();
        List<OutStoreDetail> outStoreAddList = CollectionUtil.newArrayList();
        List<OutboundDetail> outboundDetailUpdateList = CollectionUtil.newArrayList();
        List<ToolSharpening> toolSharpeningUpdateList = CollectionUtil.newArrayList();
        for (OutboundDetail detail : outboundDetailList) {
            //更新库存台账
@@ -448,6 +458,15 @@
                        toolLedgerDetailUpdateList.add(item);
                    });
            if (outStorehouseType == OutStorehouseType.GRINDING_OUTBOUND) {
                //更新刃磨单状态
                toolSharpeningList.stream().filter(item -> item.getToolCode().equals(detail.getToolCode()) && item.getToolId().equals(detail.getToolId()))
                        .findFirst().ifPresent(item -> {
                            item.setSharpeningStatus(SharpenStatus.IN_PROGRESS.getValue());
                            toolSharpeningUpdateList.add(item);
                        });
            }
            //记录出库流水
            OutStoreDetail outStoreDetail = new OutStoreDetail()
                    .setToolCode(detail.getToolCode())
@@ -473,6 +492,7 @@
        toolLedgerDetailService.updateBatchById(toolLedgerDetailUpdateList);
        outStoreDetailService.saveBatch(outStoreAddList);
        outboundDetailService.updateBatchById(outboundDetailUpdateList);
        toolsSharpeningService.updateBatchById(toolSharpeningUpdateList);
        //更新申请单
        boolean allMatch = outboundDetailService.list(new LambdaQueryWrapper<OutboundDetail>()
@@ -534,7 +554,10 @@
                .toMap(OutBoundAddDto::getToolLedgerDetailId, item -> item, (k1, k2) -> k1));
        Map<String, ToolLedgerDetail> toolLedgerDetailMap = toolLedgerDetailService.listByIds(boundAddDtoMap.keySet()).stream()
                .collect(Collectors.toMap(ToolLedgerDetail::getId, item -> item, (k1, k2) -> k1));
        List<ToolSharpening> toolSharpeningList = toolsSharpeningService.list(new LambdaQueryWrapper<ToolSharpening>()
                .in(ToolSharpening::getToolCode, toolBoundQuantityMap.keySet()).eq(ToolSharpening::getSharpeningStatus, SharpenStatus.PENDING.getValue()));
        List<ToolLedgerDetail> toolLedgerDetailUpdateList = CollectionUtil.newArrayList();
        List<ToolSharpening> toolSharpeningUpdateList = CollectionUtil.newArrayList();
        for (String toolLedgerDetailId : boundAddDtoMap.keySet()) {
            OutBoundAddDto outBoundAddDto = boundAddDtoMap.get(toolLedgerDetailId);
            BigDecimal outboundQuantity = outBoundAddDto.getOutboundQuantity();
@@ -563,6 +586,12 @@
                            break;
                        case GRINDING_OUTBOUND:
                            toolLedgerDetail.setStatus(ToolCirculationStatus.GRINDING.getValue());
                            //同时更新刃磨单状态
                            toolSharpeningList.stream().filter(item -> item.getToolCode().equals(outBoundAddDto.getToolCode())
                                    && item.getToolId().equals(outBoundAddDto.getToolId())).findFirst().ifPresent(item -> {
                                item.setSharpeningStatus(SharpenStatus.IN_PROGRESS.getValue());
                                toolSharpeningUpdateList.add(item);
                            });
                            break;
                        default:
                            throw new JeecgBootException("未知的出库类型!");
@@ -573,6 +602,7 @@
        }
        toolLedgerService.updateBatchById(toolLedgerUpdateList);
        toolLedgerDetailService.updateBatchById(toolLedgerDetailUpdateList);
        toolsSharpeningService.updateBatchById(toolSharpeningUpdateList);
        //记录出库流水
        List<OutStoreDetail> outStoreAddList = CollectionUtil.newArrayList();
        for (OutBoundAddDto outBoundAddDto : boundAddList) {
@@ -588,6 +618,53 @@
        outStoreDetailService.saveBatch(outStoreAddList);
    }
    @Override
    public IPage<SelectOutboundToolVo> querySharpenOutboundToolPageList(Page<SelectOutboundToolVo> page, Map<String, String[]> parameterMap) {
        QueryWrapper<SelectOutboundToolVo> queryWrapper = Wrappers.query();
        String[] toolCodes = parameterMap.get("toolCode");
        if (toolCodes != null && toolCodes.length > 0) {
            queryWrapper.like("t3.tool_code", toolCodes[0]);
        }
        String[] classifyIds = parameterMap.get("classifyId");
        if (classifyIds != null && classifyIds.length > 0) {
            queryWrapper.eq("t3.classify_id", classifyIds[0]);
        }
        String[] excludeIds = parameterMap.get("excludeIds");
        if (excludeIds != null && excludeIds.length > 0) {
            String[] idArray = excludeIds[0].split(",");
            queryWrapper.notIn("t1.id", idArray);
        }
        queryWrapper.eq("t1.sharpening_status", SharpenStatus.PENDING.getValue());
        return this.baseMapper.querySharpenOutboundToolPageList(page, queryWrapper);
    }
    @Override
    public IPage<SelectOutboundToolVo> queryBorrowOutboundToolPageList(Page<SelectOutboundToolVo> page, Map<String, String[]> parameterMap) {
        QueryWrapper<SelectOutboundToolVo> queryWrapper = Wrappers.query();
        String[] toolCodes = parameterMap.get("toolCode");
        if (toolCodes != null && toolCodes.length > 0) {
            queryWrapper.like("p.tool_code", toolCodes[0]);
        }
        String[] statuses = parameterMap.get("status");
        if (statuses != null && statuses.length > 0) {
            queryWrapper.eq("t.status", statuses[0]);
        }
        String[] quantities = parameterMap.get("quantity");
        if (quantities != null && quantities.length > 0) {
            queryWrapper.gt("t.quantity", quantities[0]);
        }
        String[] classifyIds = parameterMap.get("classifyId");
        if (classifyIds != null && classifyIds.length > 0) {
            queryWrapper.eq("p.classify_id", classifyIds[0]);
        }
        String[] excludeIds = parameterMap.get("excludeIds");
        if (excludeIds != null && excludeIds.length > 0) {
            String[] idArray = excludeIds[0].split(",");
            queryWrapper.notIn("t.id", idArray);
        }
        return this.baseMapper.queryBorrowOutboundToolPageList(page, queryWrapper);
    }
    private boolean fromOneApply(List<OutBoundRequestDto> outBoundRequestList) {
        long count = outBoundRequestList.stream().map(OutBoundRequestDto::getOutBoundOrderId).distinct().count();