| | |
| | | import org.jeecg.modules.pms.service.IPmsMaterialProcessService; |
| | | import org.jeecg.modules.pms.service.IPmsProcessBillMaterialsService; |
| | | import org.jeecg.modules.pms.vo.ProcessBillMaterialsDetailVo; |
| | | import org.jeecg.modules.qms.entity.InspectionPlan; |
| | | import org.jeecg.modules.qms.entity.InspectionPlanItem; |
| | | import org.jeecg.modules.qms.enums.PlanCategoryEnum; |
| | | import org.jeecg.modules.qms.service.IInspectionPlanItemService; |
| | | import org.jeecg.modules.qms.service.IInspectionPlanService; |
| | | import org.jeecg.modules.sap.request.OrderLoadRequest; |
| | | import org.jeecg.modules.sap.request.OrderReportRequest; |
| | | import org.jeecg.modules.sap.service.OrderLoadService; |
| | |
| | | private OrderReportService orderReportService; |
| | | @Autowired |
| | | private OrderLoadService orderLoadService; |
| | | @Autowired |
| | | private IInspectionPlanService inspectionPlanService; |
| | | @Autowired |
| | | private IInspectionPlanItemService inspectionPlanItemService; |
| | | |
| | | @Override |
| | | public List<MesWorkReporting> queryWorkReportingByWorkOrderId(String workOrderId) { |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void addReporting(MesWorkReporting mesWorkReporting) { |
| | | public MesWorkReporting addReporting(MesWorkReporting mesWorkReporting) { |
| | | MesProductionWorkOrder workOrder = mesProductionWorkOrderService.getById(mesWorkReporting.getWorkOrderId()); |
| | | if (workOrder == null) { |
| | | throw new JeecgBootException("工单不存在!"); |
| | |
| | | int currentPallets = workOrder.getFinishedPallets() + 1; |
| | | String batchNumber = yearLastTwo + dayOfYearStr + shiftGroup.getGroupCode() + currentPallets; |
| | | mesWorkReporting.setBatchNumber(batchNumber) |
| | | .setWorkOrderCode(workOrder.getWorkOrderCode()) |
| | | .setWarehouseId(lineSideWarehouse.getId()) |
| | | .setWarehouseCode(lineSideWarehouse.getWarehouseCode()) |
| | | .setReporter(Objects.requireNonNull(CommonUtils.getCurrentUser()).getUsername()) |
| | | .setReportTime(new Date()); |
| | | String date = today.format(DateTimeFormatter.ofPattern("yyMMdd")); |
| | |
| | | case FINISHED_PRODUCT: |
| | | //成品报工 |
| | | productReport(mesWorkReporting, workOrder, lineSideWarehouse); |
| | | //生成检验工单 |
| | | generateInspectionOrder(mesWorkReporting, workOrder); |
| | | //拼接成品报工托号 |
| | | String palletNumber4 = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingPalletNumber4"); |
| | | String finishedPalletNumber = material.getMaterialNumber() + date + palletNumber4; |
| | | mesWorkReporting.setPalletNumber(finishedPalletNumber); |
| | | //todo 打印成品托标签、检验标识卡、移库单、完工检验工单 |
| | | mesWorkReporting.setPalletNumber(finishedPalletNumber).setReportType("FINISHED"); |
| | | break; |
| | | case INNER_FLANGE: |
| | | case OUTER_FLANGE: |
| | |
| | | Shift shift = shiftService.getById(workOrder.getShiftId()); |
| | | String palletNumber6 = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingPalletNumber6"); |
| | | String halfPalletNumber = factory.getFactoryCode() + material.getMaterialNumber() + date + shift.getShiftCode() + palletNumber6; |
| | | mesWorkReporting.setPalletNumber(halfPalletNumber); |
| | | mesWorkReporting.setPalletNumber(halfPalletNumber).setReportType("HALF"); |
| | | break; |
| | | } |
| | | //新增报工记录 |
| | |
| | | .setActualQuantity(workOrder.getActualQuantity().add(mesWorkReporting.getQuantity())) |
| | | .setFinishedPallets(workOrder.getFinishedPallets() + 1); |
| | | mesProductionWorkOrderService.updateById(productionWorkUpdateOrder); |
| | | //返回报工记录,用于托标签打印 |
| | | return mesWorkReporting; |
| | | } |
| | | |
| | | //半成品(内法兰、外法兰)、成品报工 |
| | |
| | | } |
| | | } |
| | | |
| | | //根据检验方案生成检验工单 |
| | | private void generateInspectionOrder(MesWorkReporting mesWorkReporting, MesProductionWorkOrder workOrder) { |
| | | //1.根据物料编码查询检验方案 |
| | | InspectionPlan inspectionPlan = inspectionPlanService.list(new LambdaQueryWrapper<InspectionPlan>() |
| | | .eq(InspectionPlan::getMaterialNumber, workOrder.getMaterialNumber()) |
| | | .eq(InspectionPlan::getPlanCategory, PlanCategoryEnum.COMPLETION_INSPECTION.name()) |
| | | .eq(InspectionPlan::getPlanStatus, CommonConstant.STATUS_1) |
| | | .eq(InspectionPlan::getDelFlag, CommonConstant.DEL_FLAG_0)).stream().findFirst().orElse(null); |
| | | if (inspectionPlan == null) { |
| | | throw new JeecgBootException("未找到该物料的检验方案!"); |
| | | } |
| | | List<InspectionPlanItem> inspectionPlanItemList = inspectionPlanItemService.list(new LambdaQueryWrapper<InspectionPlanItem>() |
| | | .eq(InspectionPlanItem::getPlanId, inspectionPlan.getId()) |
| | | .orderByAsc(InspectionPlanItem::getSorter)); |
| | | if (inspectionPlanItemList.isEmpty()) { |
| | | throw new JeecgBootException("未找到该物料的检验方案检验项明细!"); |
| | | } |
| | | //2.生成检验工单 |
| | | //todo 检验工单目前还没有生成代码,没有功能 |
| | | } |
| | | |
| | | private List<MesMaterialLoading> deductQuantity(List<MesMaterialLoading> materialLoadingRecordList, BigDecimal quantity) { |
| | | for (MesMaterialLoading mesMaterialLoading : materialLoadingRecordList) { |
| | | if (mesMaterialLoading.getRemainingQuantity().compareTo(quantity) >= 0) { |