新火炬后端单体项目初始化代码
cuilei
2 天以前 c9d3f6285440719077a2ff48e922f94b0258fbc3
src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java
@@ -34,6 +34,11 @@
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;
@@ -88,6 +93,10 @@
    private OrderReportService orderReportService;
    @Autowired
    private OrderLoadService orderLoadService;
    @Autowired
    private IInspectionPlanService inspectionPlanService;
    @Autowired
    private IInspectionPlanItemService inspectionPlanItemService;
    @Override
    public List<MesWorkReporting> queryWorkReportingByWorkOrderId(String workOrderId) {
@@ -101,7 +110,7 @@
    @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("工单不存在!");
@@ -134,7 +143,9 @@
        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"));
@@ -144,11 +155,12 @@
            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:
@@ -158,7 +170,7 @@
                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;
        }
        //新增报工记录
@@ -169,6 +181,8 @@
                .setActualQuantity(workOrder.getActualQuantity().add(mesWorkReporting.getQuantity()))
                .setFinishedPallets(workOrder.getFinishedPallets() + 1);
        mesProductionWorkOrderService.updateById(productionWorkUpdateOrder);
        //返回报工记录,用于托标签打印
        return mesWorkReporting;
    }
    //半成品(内法兰、外法兰)、成品报工
@@ -246,6 +260,27 @@
        }
    }
    //根据检验方案生成检验工单
    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) {