工单排产功能用于管理生产工单的排程、物料需求同步、工艺路线同步等操作,支持工单的查询、编辑、关闭、加急设置等功能。
工单关闭 - 批量关闭工单
pr_MES_CloseWorkOrders生产排程 - 生成生产排程计划
http://123.60.180.165:9898/api/business/resource-examine/productionschedule?domain={domain}同步物料需求 - 同步物料需求信息
http://123.60.180.165:9898/api/business/resource-examine/AutomaticPrAdjustDate?domain={domain}yudao-product-server/
├── pom.xml # Maven配置
└── src/main/java/cn/iocoder/yudao/module/product/
├── controller/admin/workorder/
│ ├── WorkOrderScheduleController.java # 控制器
│ └── vo/
│ ├── WorkOrderSchedulePageReqVO.java # 分页请求VO
│ ├── WorkOrderScheduleRespVO.java # 响应VO
│ ├── WorkOrderScheduleUpdateReqVO.java # 更新请求VO
│ ├── WorkOrderCloseReqVO.java # 关闭请求VO
│ └── WorkOrderUrgentReqVO.java # 加急请求VO
├── service/
│ ├── WorkOrderScheduleService.java # 服务接口
│ └── impl/
│ └── WorkOrderScheduleServiceImpl.java # 服务实现
├── dal/
│ ├── dataobject/
│ │ └── WorkOrdMasterDO.java # 数据对象
│ └── mysql/
│ └── WorkOrdMasterMapper.java # Mapper接口
└── framework/web/config/
└── RestTemplateConfig.java # RestTemplate配置
yudao-product-server/src/main/resources/
└── mapper/product/
└── WorkOrdMasterMapper.xml # MyBatis XML映射
GET /admin-api/product/workorder-schedule/page
请求参数:
{
"workOrd": "工单编号(可选,模糊匹配)",
"itemNum": "物料代码(可选,模糊匹配)",
"status": "工单状态(可选)",
"woTyped": "工单类型(可选)",
"batch": "批号(可选)",
"drawing": "图纸号(可选)",
"customNo": "客户编码(可选)",
"ordDateStart": "订单日期开始(可选)",
"ordDateEnd": "订单日期结束(可选)",
"dueDateStart": "到期日期开始(可选)",
"dueDateEnd": "到期日期结束(可选)",
"priority": "优先级(可选)",
"urgent": "加急状态(可选,1-加急,2-特急)",
"isInitial": "是否初始(可选)",
"pageNo": 1,
"pageSize": 20
}
响应数据:
{
"code": 0,
"data": {
"list": [...],
"total": 100
},
"msg": "success"
}
GET /admin-api/product/workorder-schedule/{id}
PUT /admin-api/product/workorder-schedule/update
请求参数:
{
"id": 1,
"priority": 10,
"qtyOrded": 100,
"batch": "BATCH001",
"remark": "备注信息"
}
POST /admin-api/product/workorder-schedule/close
请求参数:
{
"ids": [1, 2, 3]
}
POST /admin-api/product/workorder-schedule/production-schedule?domain={domain}
POST /admin-api/product/workorder-schedule/sync-material-requirement?domain={domain}
POST /admin-api/product/workorder-schedule/sync-routing/{id}
POST /admin-api/product/workorder-schedule/set-urgent
请求参数:
{
"id": 1,
"urgent": 1
}
主要字段:
用于存储工单的工艺路线信息
用于存储工序的计划和生产日期
需要在系统管理中配置以下权限:
product:workorder-schedule:query - 查询权限product:workorder-schedule:update - 更新权限product:workorder-schedule:close - 关闭权限product:workorder-schedule:schedule - 排程权限product:workorder-schedule:sync - 同步权限WorkOrdMaster表可能没有tenant_id字段,使用@InterceptorIgnore(tenantLine = "true")注解禁用自动租户过滤。
使用RestTemplate调用外部排程和物料需求接口,配置了连接超时和读取超时。
使用MyBatis的statementType="CALLABLE"调用存储过程关闭工单。
Service层使用@Transactional确保数据一致性。
列表查询SQL包含多表关联、子查询、CASE WHEN等复杂逻辑,计算工单的级别、目标时间等派生字段。
pr_MES_CloseWorkOrdersimport request from '@/utils/request'
// 获取工单列表
export const getWorkOrderSchedulePage = (params: any) => {
return request.get('/product/workorder-schedule/page', { params })
}
// 关闭工单
export const closeWorkOrders = (data: { ids: number[] }) => {
return request.post('/product/workorder-schedule/close', data)
}
// 生产排程
export const productionSchedule = (domain: string) => {
return request.post(`/product/workorder-schedule/production-schedule?domain=${domain}`)
}
@Resource
private WorkOrderScheduleService workOrderScheduleService;
public void example() {
// 查询工单列表
WorkOrderSchedulePageReqVO reqVO = new WorkOrderSchedulePageReqVO();
reqVO.setWorkOrd("WO2024001");
reqVO.setPageNo(1);
reqVO.setPageSize(20);
PageResult<WorkOrderScheduleRespVO> result = workOrderScheduleService.getWorkOrderSchedulePage(reqVO);
// 关闭工单
WorkOrderCloseReqVO closeReqVO = new WorkOrderCloseReqVO();
closeReqVO.setIds(Arrays.asList(1L, 2L, 3L));
workOrderScheduleService.closeWorkOrders(closeReqVO);
// 设置加急
WorkOrderUrgentReqVO urgentReqVO = new WorkOrderUrgentReqVO();
urgentReqVO.setId(1L);
urgentReqVO.setUrgent(1); // 1-加急,2-特急
workOrderScheduleService.setUrgent(urgentReqVO);
}
工单排产功能已完整实现,包括:
所有代码已按照项目规范编写,可以直接部署使用。只需完成系统菜单和权限配置,即可投入生产环境。