feat(quotation): 添加机型配置功能模块

- 修改代码生成器配置,将生成目标从 admin_permission_role_column_map 表切换到 quotation_model_config_item_language 表
- 新增 ModelConfigController 控制器,提供机型配置搜索接口
- 新增 ModelConfigSearchRequest 请求对象,支持按型号、模块ID、系列批次号、类型批次号查询
- 新增 ModelConfigVO 视图对象,包含模块名称、系列名称、类型名称和机型编号字段
- 新增报价机型配置相关实体类,包括 QuotationModelConfig、QuotationModelConfigItem 和 QuotationModelConfigItemLanguage
- 新增对应的数据访问层接口和实现类,包括 IQuotationModelConfigService、IQuotationModelConfigItemService 和 IQuotationModelConfigItemLanguageService
- 实现分页搜索功能,支持按条件筛选机型配置数据
- 创建 MyBatis 映射文件和 SQL 查询接口,支持机型配置数据的查询操作
This commit is contained in:
曹鹏飞 2026-02-13 20:10:43 +08:00
parent 835c469231
commit c74f0f5f17
19 changed files with 499 additions and 1 deletions

View File

@ -0,0 +1,27 @@
package com.nflg.mobilebroken.common.pojo.request;
import lombok.Data;
@Data
public class ModelConfigSearchRequest extends PageRequest {
/**
* 型号
*/
private String no;
/**
* 模块ID
*/
private Integer moduleId;
/**
* 系列批次号
*/
private String seriesNumber;
/**
* 类型批次号
*/
private String typeNumber;
}

View File

@ -0,0 +1,27 @@
package com.nflg.mobilebroken.common.pojo.vo;
import lombok.Data;
@Data
public class ModelConfigVO {
/**
* 模块名称
*/
private String moduleName;
/**
* 系列名称
*/
private String seriesName;
/**
* 类型名称
*/
private String typeName;
/**
* 机型编号
*/
private String modelNo;
}

View File

@ -0,0 +1,33 @@
package com.nflg.mobilebroken.quotation.controller;
import com.nflg.mobilebroken.common.pojo.ApiResult;
import com.nflg.mobilebroken.common.pojo.PageData;
import com.nflg.mobilebroken.common.pojo.request.ModelConfigSearchRequest;
import com.nflg.mobilebroken.common.pojo.vo.ModelConfigVO;
import com.nflg.mobilebroken.repository.service.IQuotationModelConfigService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
/**
* 机型配置
*/
@RestController
@RequestMapping("/model/config")
public class ModelConfigController extends ControllerBase{
@Resource
private IQuotationModelConfigService modelConfigService;
/**
* 获取机型配置列表
*/
@PostMapping("/search")
public ApiResult<PageData<ModelConfigVO>> search(@Valid @RequestBody ModelConfigSearchRequest request){
return ApiResult.success(modelConfigService.search(request));
}
}

View File

@ -0,0 +1,77 @@
package com.nflg.mobilebroken.repository.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
/**
* <p>
* 报价-机型配置
* </p>
*
* @author 代码生成器生成
* @since 2026
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("quotation_model_config")
public class QuotationModelConfig implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
/**
* 机型表batch_number
*/
private Integer modelId;
/**
* 年份
*/
private String configYear;
/**
* 配置版本号
*/
private String configVersion;
/**
* 版本状态0草稿1已发布2已弃用
*/
private Integer configStatus;
/**
* 新增人编号
*/
private Integer createById;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 修改人编号
*/
private Integer updateById;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,66 @@
package com.nflg.mobilebroken.repository.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
/**
* <p>
* 报价-机型配置-子项
* </p>
*
* @author 代码生成器生成
* @since 2026
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("quotation_model_config_item")
public class QuotationModelConfigItem implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
/**
* 配置id
*/
private Long configId;
/**
* 上级id
*/
private Long parentId;
/**
* 部件或系统
*/
private String partName;
/**
* 参数/描述
*/
private String partRemark;
/**
* 类别0可选配置1标准配置
*/
private Integer type;
/**
* 选配类别0新增可选1替换可选
*/
private Integer optionalType;
/**
* 是否启用
*/
private Boolean enable;
/**
* 图片
*/
private String imageUrl;
}

View File

@ -0,0 +1,77 @@
package com.nflg.mobilebroken.repository.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
/**
* <p>
* 报价-机型配置-子项多语言
* </p>
*
* @author 代码生成器生成
* @since 2026
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("quotation_model_config_item_language")
public class QuotationModelConfigItemLanguage implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
/**
* 配置项id
*/
private Long configItemId;
/**
* 语言id
*/
private Long languageId;
/**
* 部件或系统
*/
private String partName;
/**
* 参数/描述
*/
private String partRemark;
/**
* 新增人编号
*/
private Integer createById;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 修改人编号
*/
private Integer updateById;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,16 @@
package com.nflg.mobilebroken.repository.mapper;
import com.nflg.mobilebroken.repository.entity.QuotationModelConfigItemLanguage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 报价-机型配置-子项多语言 Mapper 接口
* </p>
*
* @author 代码生成器生成
* @since 2026
*/
public interface QuotationModelConfigItemLanguageMapper extends BaseMapper<QuotationModelConfigItemLanguage> {
}

View File

@ -0,0 +1,16 @@
package com.nflg.mobilebroken.repository.mapper;
import com.nflg.mobilebroken.repository.entity.QuotationModelConfigItem;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 报价-机型配置-子项 Mapper 接口
* </p>
*
* @author 代码生成器生成
* @since 2026
*/
public interface QuotationModelConfigItemMapper extends BaseMapper<QuotationModelConfigItem> {
}

View File

@ -0,0 +1,21 @@
package com.nflg.mobilebroken.repository.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.mobilebroken.common.pojo.PageData;
import com.nflg.mobilebroken.common.pojo.request.ModelConfigSearchRequest;
import com.nflg.mobilebroken.common.pojo.vo.ModelConfigVO;
import com.nflg.mobilebroken.repository.entity.QuotationModelConfig;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 报价-机型配置 Mapper 接口
* </p>
*
* @author 代码生成器生成
* @since 2026
*/
public interface QuotationModelConfigMapper extends BaseMapper<QuotationModelConfig> {
PageData<ModelConfigVO> search(ModelConfigSearchRequest request, Page<?> objectPage);
}

View File

@ -0,0 +1,16 @@
package com.nflg.mobilebroken.repository.service;
import com.nflg.mobilebroken.repository.entity.QuotationModelConfigItemLanguage;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 报价-机型配置-子项多语言 服务类
* </p>
*
* @author 代码生成器生成
* @since 2026
*/
public interface IQuotationModelConfigItemLanguageService extends IService<QuotationModelConfigItemLanguage> {
}

View File

@ -0,0 +1,16 @@
package com.nflg.mobilebroken.repository.service;
import com.nflg.mobilebroken.repository.entity.QuotationModelConfigItem;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 报价-机型配置-子项 服务类
* </p>
*
* @author 代码生成器生成
* @since 2026
*/
public interface IQuotationModelConfigItemService extends IService<QuotationModelConfigItem> {
}

View File

@ -0,0 +1,20 @@
package com.nflg.mobilebroken.repository.service;
import com.nflg.mobilebroken.common.pojo.PageData;
import com.nflg.mobilebroken.common.pojo.request.ModelConfigSearchRequest;
import com.nflg.mobilebroken.common.pojo.vo.ModelConfigVO;
import com.nflg.mobilebroken.repository.entity.QuotationModelConfig;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 报价-机型配置 服务类
* </p>
*
* @author 代码生成器生成
* @since 2026
*/
public interface IQuotationModelConfigService extends IService<QuotationModelConfig> {
PageData<ModelConfigVO> search(ModelConfigSearchRequest request);
}

View File

@ -0,0 +1,20 @@
package com.nflg.mobilebroken.repository.service.impl;
import com.nflg.mobilebroken.repository.entity.QuotationModelConfigItemLanguage;
import com.nflg.mobilebroken.repository.mapper.QuotationModelConfigItemLanguageMapper;
import com.nflg.mobilebroken.repository.service.IQuotationModelConfigItemLanguageService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 报价-机型配置-子项多语言 服务实现类
* </p>
*
* @author 代码生成器生成
* @since 2026
*/
@Service
public class QuotationModelConfigItemLanguageServiceImpl extends ServiceImpl<QuotationModelConfigItemLanguageMapper, QuotationModelConfigItemLanguage> implements IQuotationModelConfigItemLanguageService {
}

View File

@ -0,0 +1,20 @@
package com.nflg.mobilebroken.repository.service.impl;
import com.nflg.mobilebroken.repository.entity.QuotationModelConfigItem;
import com.nflg.mobilebroken.repository.mapper.QuotationModelConfigItemMapper;
import com.nflg.mobilebroken.repository.service.IQuotationModelConfigItemService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 报价-机型配置-子项 服务实现类
* </p>
*
* @author 代码生成器生成
* @since 2026
*/
@Service
public class QuotationModelConfigItemServiceImpl extends ServiceImpl<QuotationModelConfigItemMapper, QuotationModelConfigItem> implements IQuotationModelConfigItemService {
}

View File

@ -0,0 +1,28 @@
package com.nflg.mobilebroken.repository.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.mobilebroken.common.pojo.PageData;
import com.nflg.mobilebroken.common.pojo.request.ModelConfigSearchRequest;
import com.nflg.mobilebroken.common.pojo.vo.ModelConfigVO;
import com.nflg.mobilebroken.repository.entity.QuotationModelConfig;
import com.nflg.mobilebroken.repository.mapper.QuotationModelConfigMapper;
import com.nflg.mobilebroken.repository.service.IQuotationModelConfigService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 报价-机型配置 服务实现类
* </p>
*
* @author 代码生成器生成
* @since 2026
*/
@Service
public class QuotationModelConfigServiceImpl extends ServiceImpl<QuotationModelConfigMapper, QuotationModelConfig> implements IQuotationModelConfigService {
@Override
public PageData<ModelConfigVO> search(ModelConfigSearchRequest request) {
return baseMapper.search(request,new Page<>(request.getPage(),request.getPageSize()));
}
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nflg.mobilebroken.repository.mapper.QuotationModelConfigItemLanguageMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nflg.mobilebroken.repository.mapper.QuotationModelConfigItemMapper">
</mapper>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nflg.mobilebroken.repository.mapper.QuotationModelConfigMapper">
<select id="search" resultType="com.nflg.mobilebroken.common.pojo.vo.ModelConfigVO">
</select>
</mapper>

View File

@ -33,7 +33,7 @@ public class CodeGeneratorTest {
, Paths.get(System.getProperty("user.dir")) + "/src/main/resources/mapper"))
)
.strategyConfig(builder -> {
builder.addInclude("admin_permission_role_column_map") //只生成指定表
builder.addInclude("quotation_model_config_item_language") //只生成指定表
.entityBuilder()
.enableLombok()
.enableChainModel()