gongchunyi
6 小时以前 768b011a17b9e63e4b6570989824152145952eda
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -92,6 +92,25 @@
    @Override
    public Boolean addProductMain(ProductionProductMainDto dto) {
        ProductWorkOrder workOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId());
        if (workOrder == null) {
            throw new ServiceException("报工失败,工单不存在");
        }
        Long currentUserId = dto.getUserId();
        Long workerId = workOrder.getWorkerId();
        Long handoverUserId = workOrder.getHandoverUserId();
        boolean isWorker = workerId != null && workerId.equals(currentUserId);
        boolean isHandover = handoverUserId != null && handoverUserId.equals(currentUserId);
        if (!isWorker) {
            // 不是指派工人
            if (handoverUserId == null) {
                throw new ServiceException("报工失败,当前工单未交接,只有指派工人可以报工");
            }
            if (!isHandover) {
                throw new ServiceException("报工失败,你不是该工单的交接人员");
            }
        }
        SysUser user = userMapper.selectUserById(dto.getUserId());
        ProductionProductMain productionProductMain = new ProductionProductMain();
        //当前工艺路线对应的工序详情
@@ -207,7 +226,7 @@
                                qualityInspectParamMapper.insert(param);
                            });
                }
            }else {
            } else {
                //直接入库
                stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
            }
@@ -234,13 +253,17 @@
                }
            }
            productOrderMapper.updateById(productOrder);
            /*添加生产核算*/
            /*添加生产核算        区分工序是计件还是计时*/
            BigDecimal workHours = (productProcess.getType() == 1)
                    ? productProcess.getSalaryQuota().multiply(productQty)
                    : productProcess.getSalaryQuota();
            SalesLedgerProductionAccounting salesLedgerProductionAccounting = SalesLedgerProductionAccounting.builder()
                    .productMainId(productionProductMain.getId())
                    .schedulingUserId(user.getUserId())
                    .schedulingUserName(user.getNickName())
                    .finishedNum(productQty)
                    .workHours(productProcess.getSalaryQuota())
                    .workHours(workHours)
                    .process(productProcess.getName())
                    .schedulingDate(LocalDate.now())
                    .tenantId(dto.getTenantId())
@@ -260,10 +283,10 @@
    public Boolean removeProductMain(Long id) {
        //判断该条报工是否不合格处理,如果不合格处理了,则不允许删除
        List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(Wrappers.<QualityInspect>lambdaQuery().eq(QualityInspect::getProductMainId, id));
        if (qualityInspects.size() > 0){
        if (qualityInspects.size() > 0) {
            List<QualityUnqualified> qualityUnqualifieds = qualityUnqualifiedMapper.selectList(Wrappers.<QualityUnqualified>lambdaQuery()
                    .in(QualityUnqualified::getInspectId, qualityInspects.stream().map(QualityInspect::getId).collect(Collectors.toList())));
            if (qualityUnqualifieds.size() > 0 && qualityUnqualifieds.get(0).getInspectState()==1) {
            if (qualityUnqualifieds.size() > 0 && qualityUnqualifieds.get(0).getInspectState() == 1) {
                throw new ServiceException("该条报工已经不合格处理了,不允许删除");
            }
        }
@@ -317,7 +340,7 @@
                    new LambdaQueryWrapper<QualityInspectParam>()
                            .eq(QualityInspectParam::getInspectId, q.getId()));
            qualityInspectMapper.deleteById(q.getId());
                stockUtils.deleteStockInRecord(q.getId(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode());
            stockUtils.deleteStockInRecord(q.getId(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode());
        });
        // 删除产出记录