一、需求分析
随机抽检管理是小象买菜系统中重要的质量控制环节,主要功能包括:
1. 自动从订单或商品中随机抽取样本进行质量检查
2. 记录抽检结果并生成报告
3. 跟踪问题商品的处理流程
4. 提供抽检数据统计分析
二、系统设计
1. 数据库设计
```sql
-- 抽检任务表
CREATE TABLE inspection_tasks (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
task_name VARCHAR(100) NOT NULL,
task_type ENUM(order, product, supplier) NOT NULL,
sample_size INT NOT NULL,
status ENUM(pending, in_progress, completed, cancelled) DEFAULT pending,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
completed_at TIMESTAMP NULL,
created_by BIGINT NOT NULL,
FOREIGN KEY (created_by) REFERENCES users(id)
);
-- 抽检样本表
CREATE TABLE inspection_samples (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
task_id BIGINT NOT NULL,
sample_type ENUM(order, product, batch) NOT NULL,
sample_id VARCHAR(50) NOT NULL, -- 订单号或商品ID
is_selected BOOLEAN DEFAULT FALSE,
FOREIGN KEY (task_id) REFERENCES inspection_tasks(id)
);
-- 抽检结果表
CREATE TABLE inspection_results (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
task_id BIGINT NOT NULL,
sample_id BIGINT NOT NULL, -- 关联到样本表
inspector_id BIGINT NOT NULL,
inspection_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
result ENUM(pass, fail, warning) NOT NULL,
description TEXT,
images VARCHAR(255), -- 存储图片路径,多个用逗号分隔
action_taken ENUM(none, recheck, discard, notify_supplier) DEFAULT none,
FOREIGN KEY (task_id) REFERENCES inspection_tasks(id),
FOREIGN KEY (inspector_id) REFERENCES users(id)
);
```
2. 核心功能模块
2.1 随机抽检算法
```java
public class RandomInspectionService {
// 根据订单抽检
public List
selectRandomOrders(int count) {
// 获取当日所有订单
List allOrders = orderRepository.findByCreateDate(LocalDate.now());
// 随机打乱顺序
Collections.shuffle(allOrders);
// 返回指定数量的订单
return allOrders.stream()
.limit(count)
.collect(Collectors.toList());
}
// 根据商品类别抽检
public List selectRandomProductsByCategory(String category, int count) {
List products = productRepository.findByCategory(category);
Collections.shuffle(products);
return products.stream()
.limit(count)
.collect(Collectors.toList());
}
// 加权随机抽检(根据风险等级)
public List selectWeightedRandomSuppliers(int count) {
List suppliers = supplierRepository.findAll();
// 根据供应商历史质量记录计算权重
Map weightedSuppliers = suppliers.stream()
.collect(Collectors.toMap(
s -> s,
s -> calculateSupplierRiskWeight(s.getId()) // 自定义风险权重计算
));
// 实现加权随机选择算法
return weightedRandomSelection(weightedSuppliers, count);
}
}
```
2.2 抽检任务管理
```java
public class InspectionTaskService {
@Transactional
public InspectionTask createRandomInspectionTask(InspectionTaskDTO dto) {
InspectionTask task = new InspectionTask();
task.setTaskName(dto.getTaskName());
task.setTaskType(dto.getTaskType());
task.setSampleSize(dto.getSampleSize());
task.setStatus(InspectionStatus.PENDING);
task.setCreatedBy(dto.getCreatorId());
InspectionTask savedTask = taskRepository.save(task);
// 根据任务类型生成样本
generateSamples(savedTask);
return savedTask;
}
private void generateSamples(InspectionTask task) {
RandomInspectionService inspectionService = new RandomInspectionService();
switch (task.getTaskType()) {
case ORDER:
List orders = inspectionService.selectRandomOrders(task.getSampleSize());
orders.forEach(order -> saveSample(task, "order", order.getOrderNo()));
break;
case PRODUCT:
// 类似实现...
break;
case SUPPLIER:
// 类似实现...
break;
}
}
}
```
3. 前端界面设计
1. 抽检任务创建页面
- 任务名称输入
- 抽检类型选择(订单/商品/供应商)
- 样本数量设置
- 抽检规则配置(简单随机/加权随机)
2. 抽检任务列表页面
- 任务状态展示
- 抽检进度查看
- 操作按钮(开始抽检、查看结果)
3. 抽检结果录入页面
- 样本信息展示
- 检查结果选择(通过/不通过/警告)
- 问题描述输入
- 图片上传功能
- 处理措施选择
三、关键实现技术
1. 随机算法优化
- 使用Fisher-Yates洗牌算法实现高效随机排序
- 对于大数据量考虑使用水库抽样算法
2. 定时任务集成
```java
@Scheduled(cron = "0 0 8 * * ?") // 每天8点执行
public void executeDailyInspection() {
// 自动创建当日抽检任务
inspectionTaskService.createDailyRandomInspection();
}
```
3. 数据可视化
- 使用ECharts实现抽检合格率趋势图
- 展示不同类别商品的抽检结果对比
四、扩展功能建议
1. 智能抽检策略
- 基于历史数据的学习算法,动态调整抽检频率
- 风险预警后自动增加相关商品的抽检比例
2. 移动端支持
- 开发质检员APP,实现现场抽检结果实时录入
- 扫码快速定位抽检样本
3. 区块链存证
- 将抽检结果上链,确保数据不可篡改
- 供监管部门和消费者查询
五、实施计划
1. 第一阶段(2周)
- 完成数据库设计和基础API开发
- 实现简单随机抽检功能
2. 第二阶段(3周)
- 开发前端管理界面
- 实现加权随机抽检算法
- 集成定时任务系统
3. 第三阶段(2周)
- 开发移动端质检应用
- 实现数据可视化报表
- 系统测试与优化
4. 第四阶段(1周)
- 用户培训
- 上线部署
- 收集反馈并迭代
六、注意事项
1. 确保随机算法的真正随机性,避免可预测性
2. 抽检结果记录应不可修改,确保数据完整性
3. 考虑系统性能,特别是大数据量时的抽检效率
4. 提供完善的权限管理,不同角色查看和操作权限分离
通过以上方案,小象买菜系统可以实现高效、公平、透明的随机抽检管理,有效提升商品质量控制水平。