| | |
| | | import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi; |
| | | import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.workorder.vo.*; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.factory.MesMdFactoryDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkshopDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderProcessDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.factory.MesMdFactoryService; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkshopService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderProcessService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| | | import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; |
| | | import cn.iocoder.yudao.module.srm.api.supplier.SrmSupplierApi; |
| | | import cn.iocoder.yudao.module.srm.api.supplier.dto.SrmSupplierRespDTO; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | | import io.swagger.v3.oas.annotations.Parameters; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.annotation.Resource; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | |
| | | private MesProTaskService taskService; |
| | | @Resource |
| | | private MesProProcessService processService; |
| | | @Resource |
| | | private AdminUserApi adminUserApi; |
| | | @Resource |
| | | private MesMdFactoryService factoryService; |
| | | @Resource |
| | | private MesMdWorkshopService workshopService; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "创建生产工单") |
| | |
| | | @GetMapping("/get") |
| | | @Operation(summary = "获得生产工单") |
| | | @Parameter(name = "id", description = "编号", required = true, example = "1024") |
| | | @PreAuthorize("@ss.hasPermission('mes:pro-work-order:query')") |
| | | public CommonResult<MesProWorkOrderRespVO> getWorkOrder(@RequestParam("id") Long id) { |
| | | MesProWorkOrderDO workOrder = workOrderService.getWorkOrder(id); |
| | | if (workOrder == null) { |
| | |
| | | |
| | | @GetMapping("/page") |
| | | @Operation(summary = "获得生产工单分页") |
| | | @PreAuthorize("@ss.hasPermission('mes:pro-work-order:query')") |
| | | public CommonResult<PageResult<MesProWorkOrderRespVO>> getWorkOrderPage(@Valid MesProWorkOrderPageReqVO pageReqVO) { |
| | | PageResult<MesProWorkOrderDO> pageResult = workOrderService.getWorkOrderPage(pageReqVO); |
| | | return success(new PageResult<>(buildWorkOrderRespVOList(pageResult.getList()), pageResult.getTotal())); |
| | |
| | | |
| | | @GetMapping("/approve-process-list") |
| | | @Operation(summary = "获取审批报工的流程定义列表") |
| | | @PreAuthorize("@ss.hasPermission('mes:pro-work-order:query')") |
| | | public CommonResult<List<Map<String, Object>>> getWorkOrderApproveProcessDefinitionList() { |
| | | return success(workOrderService.getWorkOrderApproveProcessDefinitionList()); |
| | | } |
| | | |
| | | @GetMapping("/schedule-page") |
| | | @Operation(summary = "获得生产工单调度状态分页") |
| | | @PreAuthorize("@ss.hasPermission('mes:pro-work-order:query')") |
| | | public CommonResult<PageResult<MesProWorkOrderRespVO>> getWorkOrderSchedulePage(@Valid MesProWorkOrderPageReqVO pageReqVO) { |
| | | PageResult<MesProWorkOrderDO> pageResult = workOrderService.getWorkOrderSchedulePage(pageReqVO); |
| | | return success(new PageResult<>(buildWorkOrderRespVOList(pageResult.getList()), pageResult.getTotal())); |
| | |
| | | return success(true); |
| | | } |
| | | |
| | | @PutMapping("/update-batch") |
| | | @Operation(summary = "更新工单生产批次", description = "未完工的工单(含生产中)都可以维护批次号") |
| | | @Parameters({ |
| | | @Parameter(name = "id", description = "编号", required = true), |
| | | @Parameter(name = "batchCode", description = "批次号", required = true) |
| | | }) |
| | | @PreAuthorize("@ss.hasPermission('mes:pro-work-order:update')") |
| | | public CommonResult<Boolean> updateWorkOrderBatch(@RequestParam("id") Long id, |
| | | @RequestParam("batchCode") String batchCode) { |
| | | workOrderService.updateWorkOrderBatch(id, batchCode); |
| | | return success(true); |
| | | } |
| | | |
| | | @PutMapping("/start") |
| | | @Operation(summary = "启动生产", description = "已确认工单开工,写入实际开工时间,工单进入生产中") |
| | | @Parameter(name = "id", description = "编号", required = true) |
| | | @PreAuthorize("@ss.hasPermission('mes:pro-work-order:update')") |
| | | public CommonResult<Boolean> startWorkOrder(@RequestParam("id") Long id) { |
| | | workOrderService.startWorkOrder(id); |
| | | return success(true); |
| | | } |
| | | |
| | | @PutMapping("/finish") |
| | | @Operation(summary = "完成工单") |
| | | @Parameter(name = "id", description = "编号", required = true) |
| | |
| | | @GetMapping("/progress/{id}") |
| | | @Operation(summary = "获取工单进度详情") |
| | | @Parameter(name = "id", description = "编号", required = true) |
| | | @PreAuthorize("@ss.hasPermission('mes:pro-work-order:query')") |
| | | public CommonResult<MesProWorkOrderProgressRespVO> getWorkOrderProgress(@PathVariable("id") Long id) { |
| | | return success(workOrderService.getWorkOrderProgress(id)); |
| | | } |
| | |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MesProWorkOrderDO> parentMap = workOrderService.getWorkOrderMap( |
| | | convertSet(list, MesProWorkOrderDO::getParentId)); |
| | | Map<Long, MesMdFactoryDO> factoryMap = factoryService.getFactoryMap( |
| | | convertSet(list, MesProWorkOrderDO::getFactoryId)); |
| | | Map<Long, MesMdWorkshopDO> workshopMap = workshopService.getWorkshopMap( |
| | | convertSet(list, MesProWorkOrderDO::getWorkshopId)); |
| | | Map<Long, AdminUserRespDTO> startUserMap = adminUserApi.getUserMap( |
| | | convertSet(list, MesProWorkOrderDO::getStartUserId)); |
| | | |
| | | // 获取所有关联的工单工序和任务 |
| | | List<MesProWorkOrderProcessDO> allProcesses = workOrderProcessService.getWorkOrderProcessListByWorkOrderIds(workOrderIds); |
| | |
| | | supplier -> vo.setVendorName(supplier.getName())); |
| | | MapUtils.findAndThen(parentMap, vo.getParentId(), |
| | | parent -> vo.setParentCode(parent.getCode())); |
| | | MapUtils.findAndThen(factoryMap, vo.getFactoryId(), |
| | | factory -> vo.setFactoryName(factory.getName())); |
| | | MapUtils.findAndThen(workshopMap, vo.getWorkshopId(), |
| | | workshop -> vo.setWorkshopName(workshop.getName())); |
| | | MapUtils.findAndThen(startUserMap, vo.getStartUserId(), |
| | | user -> vo.setStartUserName(user.getNickname())); |
| | | vo.setStarted(vo.getActualStartTime() != null); |
| | | |
| | | // 计算完工进度 (quantityProduced / quantity * 100) |
| | | BigDecimal produced = vo.getQuantityProduced() != null ? vo.getQuantityProduced() : BigDecimal.ZERO; |