leniu-mealtime
SKILL.md
leniu-tengyun-core 餐次处理规范
餐次枚举定义
AllocMealtimeTypeEnum
餐次类型枚举 AllocMealtimeTypeEnum 定义了5种餐次:
| 枚举值 | key | 显示名称 | 说明 |
|---|---|---|---|
| MEALTIME_BREAKFAST | 1 | 早餐 | 早餐 |
| MEALTIME_LUNCH | 2 | 午餐 | 午餐 |
| MEALTIME_AFTERNOON_TEA | 3 | 下午茶 | 下午茶 |
| MEALTIME_DINNER | 4 | 晚餐 | 晚餐 |
| MEALTIME_MIDNIGHT_SNACK | 5 | 夜宵 | 夜宵 |
常用方法
// 根据key获取枚举
AllocMealtimeTypeEnum typeEnum = AllocMealtimeTypeEnum.getTypeEnum(1);
// 根据key获取显示名称
String desc = AllocMealtimeTypeEnum.getValueByKey(1); // 返回 "早餐"
// 获取所有餐次key列表
List<Integer> allTypes = AllocMealtimeTypeEnum.allTypeList(); // [1, 2, 3, 4, 5]
// 获取正餐类型列表
List<Integer> normalTypes = AllocMealtimeTypeEnum.normalTypeList(); // [1, 2, 4]
餐次分类
- 正餐:早餐(1)、午餐(2)、晚餐(4)
- 非正餐:下午茶(3)、夜宵(5)
查询参数中的餐次处理
Param类定义
在报表查询Param类中添加餐次筛选字段:
@ApiModelProperty(value = "餐次集合")
private List<Integer> mealtimeTypes;
完整示例
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "XXX查询入参")
public class XxxParam extends ReportBaseParam {
@ApiModelProperty(value = "餐次集合")
private List<Integer> mealtimeTypes;
// 其他查询字段...
}
返回VO中的餐次处理
VO字段定义
在报表返回VO类中定义餐次字段:
@Data
@Accessors(chain = true)
@ApiModel(value = "XXX报表")
public class XxxVO {
@ExcelProperty(value = "餐次", order = 5, converter = MealtimeTypeConverter.class)
@ApiModelProperty(value = "餐次")
private Integer mealtimeType;
// 其他字段...
}
必要的导入
import com.alibaba.excel.annotation.ExcelProperty;
import net.xnzn.core.common.export.converter.MealtimeTypeConverter;
字段说明
mealtimeType: 存储餐次的整数key值(1-5)@ExcelProperty: 配置EasyExcel导出,使用MealtimeTypeConverter进行转换converter = MealtimeTypeConverter.class: 自动将整数转换为可读的餐次名称
MyBatis XML中的餐次查询
基本IN查询
<!-- 餐次筛选 -->
<if test="mealtimeTypes != null and mealtimeTypes.size() > 0">
AND mealtime_type IN
<foreach collection="mealtimeTypes" item="type" open="(" separator="," close=")">
#{type}
</foreach>
</if>
正餐筛选
<!-- 仅查询正餐(早餐、午餐、晚餐) -->
AND mealtime_type IN (1, 2, 4)
完整示例
<select id="pageXxx" resultType="net.xnzn.core.xxx.vo.XxxVO">
SELECT
id,
order_date,
mealtime_type,
cust_name,
real_amount
FROM order_table
WHERE del_flag = 2
<if test="startDate != null">
AND order_date >= #{startDate}
</if>
<if test="endDate != null">
AND order_date <= #{endDate}
</if>
<if test="mealtimeTypes != null and mealtimeTypes.size() > 0">
AND mealtime_type IN
<foreach collection="mealtimeTypes" item="type" open="(" separator="," close=")">
#{type}
</foreach>
</if>
<if test="canteenId != null">
AND canteen_id = #{canteenId}
</if>
ORDER BY order_date DESC
</select>
常见使用场景
场景1:查询指定餐次的订单
// Param定义
@ApiModelProperty(value = "餐次集合")
private List<Integer> mealtimeTypes;
// Service调用
List<Integer> mealtimeTypes = Arrays.asList(1, 2); // 查询早餐和午餐
param.setMealtimeTypes(mealtimeTypes);
场景2:仅查询正餐
// 方式1:直接在XML中硬编码
AND mealtime_type IN (1, 2, 4)
// 方式2:使用枚举工具类
param.setMealtimeTypes(AllocMealtimeTypeEnum.normalTypeList());
场景3:导出时餐次列显示中文名称
// VO定义
@ExcelProperty(value = "餐次", order = 5, converter = MealtimeTypeConverter.class)
@ApiModelProperty(value = "餐次")
private Integer mealtimeType;
// 导出时自动转换:1 -> "早餐",2 -> "午餐" 等
注意事项
- 字段命名:统一使用
mealtimeType(驼峰) 或mealtime_type(下划线) - 类型:数据库和Java代码中均使用
Integer类型 - 转换器:导出时必须使用
MealtimeTypeConverter进行转换 - 国际化的影响:显示名称根据项目配置可能使用中文或国际化key
- 正餐判断:需要区分正餐时使用
AllocMealtimeTypeEnum.normalTypeList()方法
参考文档
Weekly Installs
5
Repository
xu-cell/ai-engi…ing-initGitHub Stars
9
First Seen
9 days ago
Security Audits
Installed on
github-copilot5
codex5
kimi-cli5
gemini-cli5
cursor5
amp5