immersed-in-the-deep-sea

导航

 
if (record.getLogo() != null) {
            tBaseTool.setLogo(record.getLogo());
        } elseif (record.getInstallStatus() != null
            && record.getInstallStatus() == InstallStatus.UPGRADING.getStatus()) {
            tBaseTool.setLogo(this.getLogo());
        }

类似这种,如果大量出现,会很冗余复杂,改成如下:  4

/**
     * 是更新,用BaseToolMarket里面的数据就是this里面的,不是更新用前端传的
     *
     * @param record 前端传的record字段
     *
     * @return BaseTool表无状态字段的基础字段
     */
    public TBaseTool toBaseTool(TBaseTool record) {
        TBaseTool tBaseTool = new TBaseTool();
        setField(tBaseTool::setId, record.getId(), this::getId, null);
        setField(tBaseTool::setCode, record.getCode(), this::getCode, InstallStatus.UPGRADING.getStatus());
        setField(tBaseTool::setDesc, record.getDesc(), this::getDesc, InstallStatus.UPGRADING.getStatus());
        setField(tBaseTool::setDescEn, record.getDescEn(), this::getDescEn, InstallStatus.UPGRADING.getStatus());
        setField(tBaseTool::setName, record.getName(), this::getName, InstallStatus.UPGRADING.getStatus());
        setField(tBaseTool::setNameEn, record.getNameEn(), this::getNameEn, InstallStatus.UPGRADING.getStatus());
        setField(tBaseTool::setLogo, record.getLogo(), this::getLogo, InstallStatus.UPGRADING.getStatus());
        setField(tBaseTool::setType, record.getType(), () -> Integer.valueOf(this.getType()),
            InstallStatus.UPGRADING.getStatus());
        setField(tBaseTool::setVersion, record.getVersion(), this::getVersion, InstallStatus.UPGRADING.getStatus());

        return tBaseTool;
    }

    private <T> void setField(Consumer<T> setter, T value, Supplier<T> defaultValueSupplier, Integer upgradingStatus) {
        if (value != null) {
            setter.accept(value);
        } else if (upgradingStatus != null && upgradingStatus == InstallStatus.UPGRADING.getStatus()) {
            setter.accept(defaultValueSupplier.get());
        }
    }

 

posted on 2025-09-09 17:02  沉浸深海  阅读(6)  评论(0)    收藏  举报