| | |
| | | throw new ServiceException("报工失败,生产订单更新失败"); |
| | | } |
| | | |
| | | // 完成报工主表-投入表-产出表数据 |
| | | // 完成报工主表-产出表-产出明细表数据 |
| | | ProductionProductMain productionProductMain = new ProductionProductMain(); |
| | | productionProductMain.setProductNo(productionProductMainService.generateProductNo()); |
| | | productionProductMain.setProductOrderId(dto.getProductOrderId()); |
| | |
| | | throw new ServiceException("报工失败,数据存储失败"); |
| | | } |
| | | |
| | | ProductionProductInput productionProductInput = new ProductionProductInput(); |
| | | productionProductInput.setProductMainId(productionProductMain.getId()); |
| | | productionProductInput.setProductModelId(dto.getProductId()); |
| | | productionProductInput.setQuantity(dto.getQuantity()); |
| | | result = productionProductInputService.save(productionProductInput); |
| | | if (!result) { |
| | | throw new ServiceException("报工失败,生产投入存储失败"); |
| | | } |
| | | |
| | | ProductionProductOutput productionProductOutput = new ProductionProductOutput(); |
| | | productionProductOutput.setProductMainId(productionProductMain.getId()); |
| | | productionProductOutput.setProductModelId(dto.getProductId()); |
| | | productionProductOutput.setQuantity(dto.getQualifiedQuantity()); |
| | | productionProductOutput.setScrapQty(dto.getUnqualifiedQuantity()); |
| | | productionProductOutput.setTotalQuantity(dto.getQuantity()); |
| | | result = productionProductOutputService.save(productionProductOutput); |
| | | if (!result) { |
| | | throw new ServiceException("报工失败,生产产出存储失败"); |
| | |
| | | List<ProductionProductRouteItemParamDto> productionProductRouteItemParamDtoList = productRouteItemDto.getProductionProductRouteItemParamDtoList(); |
| | | if (productionProductRouteItemParamDtoList != null && !productionProductRouteItemParamDtoList.isEmpty()) { |
| | | for (ProductionProductRouteItemParamDto productRouteItemParamDto : productionProductRouteItemParamDtoList) { |
| | | ProductionProductRouteItemParam paramEntity = new ProductionProductRouteItemParam(); |
| | | BeanUtils.copyProperties(productRouteItemParamDto, paramEntity, "id"); |
| | | paramEntity.setProductionProductRouteItemId(productRouteItemEntity.getId()); |
| | | paramEntity.setOrderItemParamId(productRouteItemParamDto.getId()); |
| | | if (paramEntity.getProductId() == null) { |
| | | ProductionOrderRouteItemParam productionOrderRouteItemParam = productionOrderRouteItemParamService.getById(productRouteItemParamDto.getId()); |
| | | paramEntity.setParamName(productionOrderRouteItemParam.getParamName()); |
| | | paramEntity.setParamType(productionOrderRouteItemParam.getParamType()); |
| | | paramEntity.setParamFormat(productionOrderRouteItemParam.getParamFormat()); |
| | | paramEntity.setValueMode(productionOrderRouteItemParam.getValueMode()); |
| | | } |
| | | if (productRouteItemParamDto.getProductId() != null) { |
| | | // 如果有产品ID,则是投入物料,存入投入表 |
| | | ProductionProductInput inputEntity = new ProductionProductInput(); |
| | | inputEntity.setProductMainId(productionProductMain.getId()); |
| | | inputEntity.setRouteItemId(productRouteItemEntity.getId()); |
| | | inputEntity.setProductId(productRouteItemParamDto.getProductId()); |
| | | inputEntity.setBomId(productRouteItemParamDto.getBomId()); |
| | | BigDecimal qty = productRouteItemParamDto.getQuantity(); |
| | | if (qty == null) { |
| | | qty = productRouteItemParamDto.getProductValue(); |
| | | } |
| | | inputEntity.setQuantity(qty != null ? qty : BigDecimal.ZERO); |
| | | inputEntity.setUnit(productRouteItemParamDto.getUnit()); |
| | | productionProductInputService.save(inputEntity); |
| | | } else { |
| | | // 否则是普通参数,存入参数表 |
| | | ProductionProductRouteItemParam paramEntity = new ProductionProductRouteItemParam(); |
| | | BeanUtils.copyProperties(productRouteItemParamDto, paramEntity, "id"); |
| | | paramEntity.setProductionProductRouteItemId(productRouteItemEntity.getId()); |
| | | paramEntity.setOrderItemParamId(productRouteItemParamDto.getId()); |
| | | |
| | | productionProductRouteItemParamService.save(paramEntity); |
| | | // 从订单参数表补全基础信息(名称、类型、单位等) |
| | | if (productRouteItemParamDto.getId() != null) { |
| | | ProductionOrderRouteItemParam orderParam = productionOrderRouteItemParamService.getById(productRouteItemParamDto.getId()); |
| | | if (orderParam != null) { |
| | | paramEntity.setParamName(orderParam.getParamName()); |
| | | paramEntity.setParamType(orderParam.getParamType()); |
| | | paramEntity.setParamFormat(orderParam.getParamFormat()); |
| | | paramEntity.setValueMode(orderParam.getValueMode()); |
| | | paramEntity.setUnit(orderParam.getUnit()); |
| | | } |
| | | } |
| | | productionProductRouteItemParamService.save(paramEntity); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | dto.setMaterialCode(productMaterialSkuDto.getMaterialCode()); |
| | | dto.setModel(productMaterialSkuDto.getModel()); |
| | | |
| | | // 查询投入表(获取产品ID和投入数量) |
| | | // 查询总的投入数量 |
| | | ProductionProductInput input = productionProductInputService.getOne( |
| | | new LambdaQueryWrapper<ProductionProductInput>() |
| | | .eq(ProductionProductInput::getProductMainId, productMainId) |
| | | .isNull(ProductionProductInput::getRouteItemId) |
| | | .last("LIMIT 1")); |
| | | if (input != null) { |
| | | dto.setProductId(input.getProductModelId()); |
| | | dto.setProductId(input.getProductId()); |
| | | dto.setQuantity(input.getQuantity()); |
| | | } |
| | | |
| | |
| | | .eq(ProductionProductOutput::getProductMainId, productMainId) |
| | | .last("LIMIT 1")); |
| | | if (output != null) { |
| | | dto.setQuantity(output.getTotalQuantity()); |
| | | dto.setQualifiedQuantity(output.getQuantity()); |
| | | dto.setUnqualifiedQuantity(output.getScrapQty()); |
| | | } |
| | |
| | | List<ProductionProductRouteItemParam> paramList = productionProductRouteItemParamService.list( |
| | | new LambdaQueryWrapper<ProductionProductRouteItemParam>() |
| | | .eq(ProductionProductRouteItemParam::getProductionProductRouteItemId, routeItem.getId())); |
| | | |
| | | List<ProductionProductRouteItemParamDto> paramDtoList = new ArrayList<>(); |
| | | if (paramList != null && !paramList.isEmpty()) { |
| | | List<ProductionProductRouteItemParamDto> paramDtoList = paramList.stream().map(param -> { |
| | | paramDtoList.addAll(paramList.stream().map(param -> { |
| | | ProductionProductRouteItemParamDto paramDto = new ProductionProductRouteItemParamDto(); |
| | | BeanUtils.copyProperties(param, paramDto); |
| | | if (paramDto.getProductId() != null) { |
| | | ProductMaterialSkuDto materialSkuDto = productMaterialService.selectProductByModelId(paramDto.getProductId()); |
| | | productMaterialService.selectProductByModelId(paramDto.getProductId()); |
| | | return paramDto; |
| | | }).collect(Collectors.toList())); |
| | | } |
| | | |
| | | // 查询工序投入物料 |
| | | List<ProductionProductInput> routeItemInputList = productionProductInputService.list( |
| | | new LambdaQueryWrapper<ProductionProductInput>() |
| | | .eq(ProductionProductInput::getProductMainId, productMainId) |
| | | .eq(ProductionProductInput::getRouteItemId, routeItem.getId())); |
| | | if (routeItemInputList != null && !routeItemInputList.isEmpty()) { |
| | | paramDtoList.addAll(routeItemInputList.stream().map(inputItem -> { |
| | | ProductionProductRouteItemParamDto paramDto = new ProductionProductRouteItemParamDto(); |
| | | paramDto.setProductId(inputItem.getProductId()); |
| | | paramDto.setBomId(inputItem.getBomId()); |
| | | paramDto.setQuantity(inputItem.getQuantity()); |
| | | paramDto.setProductValue(inputItem.getQuantity()); |
| | | paramDto.setUnit(inputItem.getUnit()); |
| | | |
| | | ProductMaterialSkuDto materialSkuDto = productMaterialService.selectProductByModelId(inputItem.getProductId()); |
| | | if (materialSkuDto != null) { |
| | | paramDto.setParamName(materialSkuDto.getProductName()); |
| | | paramDto.setProductName(materialSkuDto.getProductName()); |
| | | paramDto.setModel(materialSkuDto.getModel()); |
| | | paramDto.setMaterialCode(materialSkuDto.getMaterialCode()); |
| | | String strength = productBomService.strengthById(paramDto.getBomId()); |
| | | paramDto.setStrength(strength); |
| | | } |
| | | String strength = productBomService.strengthById(inputItem.getBomId()); |
| | | paramDto.setStrength(strength); |
| | | return paramDto; |
| | | }).collect(Collectors.toList()); |
| | | }).collect(Collectors.toList())); |
| | | } |
| | | |
| | | if (!paramDtoList.isEmpty()) { |
| | | routeItemDto.setProductionProductRouteItemParamDtoList(paramDtoList); |
| | | } |
| | | |
| | |
| | | // 更新投入表 |
| | | ProductionProductInput input = productionProductInputService.getOne(new LambdaQueryWrapper<ProductionProductInput>() |
| | | .eq(ProductionProductInput::getProductMainId, productMainId) |
| | | .isNull(ProductionProductInput::getRouteItemId) |
| | | .last("LIMIT 1")); |
| | | if (input != null) { |
| | | input.setProductModelId(dto.getProductId()); |
| | | input.setQuantity(dto.getQuantity()); |
| | | input.setProductId(dto.getProductId()); |
| | | input.setQuantity(dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO); |
| | | productionProductInputService.updateById(input); |
| | | } |
| | | |
| | |
| | | oldOutput.setProductModelId(dto.getProductId()); |
| | | oldOutput.setQuantity(dto.getQualifiedQuantity()); |
| | | oldOutput.setScrapQty(dto.getUnqualifiedQuantity()); |
| | | oldOutput.setTotalQuantity(dto.getQuantity()); |
| | | productionProductOutputService.updateById(oldOutput); |
| | | } |
| | | |
| | |
| | | |
| | | final Long routeItemId = routeItemEntity.getId(); |
| | | |
| | | // 处理工序参数: 先删除该工序下所有旧参数,再重新插入传入的参数 |
| | | // 处理工序参数及投入: 先删除该工序下所有旧参数和旧投入,再重新插入传入的数据 |
| | | productionProductRouteItemParamService.remove(new LambdaQueryWrapper<ProductionProductRouteItemParam>() |
| | | .eq(ProductionProductRouteItemParam::getProductionProductRouteItemId, routeItemId)); |
| | | productionProductInputService.remove(new LambdaQueryWrapper<ProductionProductInput>() |
| | | .eq(ProductionProductInput::getProductMainId, productMainId) |
| | | .eq(ProductionProductInput::getRouteItemId, routeItemId)); |
| | | |
| | | List<ProductionProductRouteItemParamDto> paramDtoList = routeItemDto.getProductionProductRouteItemParamDtoList(); |
| | | if (paramDtoList != null && !paramDtoList.isEmpty()) { |
| | | for (ProductionProductRouteItemParamDto paramDto : paramDtoList) { |
| | | ProductionProductRouteItemParam paramEntity = new ProductionProductRouteItemParam(); |
| | | BeanUtils.copyProperties(paramDto, paramEntity, "id"); |
| | | paramEntity.setProductionProductRouteItemId(routeItemId); |
| | | if (paramEntity.getProductId() == null && paramDto.getId() != null) { |
| | | ProductionOrderRouteItemParam orderParam = productionOrderRouteItemParamService.getById(paramDto.getId()); |
| | | if (orderParam != null) { |
| | | paramEntity.setOrderItemParamId(orderParam.getId()); |
| | | paramEntity.setParamName(orderParam.getParamName()); |
| | | paramEntity.setParamType(orderParam.getParamType()); |
| | | paramEntity.setParamFormat(orderParam.getParamFormat()); |
| | | paramEntity.setValueMode(orderParam.getValueMode()); |
| | | if (paramDto.getProductId() != null) { |
| | | // 投入物料 |
| | | ProductionProductInput inputEntity = new ProductionProductInput(); |
| | | inputEntity.setProductMainId(productMainId); |
| | | inputEntity.setRouteItemId(routeItemId); |
| | | inputEntity.setProductId(paramDto.getProductId()); |
| | | inputEntity.setBomId(paramDto.getBomId()); |
| | | BigDecimal qty = paramDto.getQuantity(); |
| | | if (qty == null) { |
| | | qty = paramDto.getProductValue(); |
| | | } |
| | | inputEntity.setQuantity(qty != null ? qty : BigDecimal.ZERO); |
| | | inputEntity.setUnit(paramDto.getUnit()); |
| | | productionProductInputService.save(inputEntity); |
| | | } else { |
| | | // 普通参数 |
| | | ProductionProductRouteItemParam paramEntity = new ProductionProductRouteItemParam(); |
| | | BeanUtils.copyProperties(paramDto, paramEntity, "id"); |
| | | paramEntity.setProductionProductRouteItemId(routeItemId); |
| | | if (paramDto.getId() != null) { |
| | | ProductionOrderRouteItemParam orderParam = productionOrderRouteItemParamService.getById(paramDto.getId()); |
| | | if (orderParam != null) { |
| | | paramEntity.setOrderItemParamId(orderParam.getId()); |
| | | paramEntity.setParamName(orderParam.getParamName()); |
| | | paramEntity.setParamType(orderParam.getParamType()); |
| | | paramEntity.setParamFormat(orderParam.getParamFormat()); |
| | | paramEntity.setValueMode(orderParam.getValueMode()); |
| | | paramEntity.setUnit(orderParam.getUnit()); |
| | | } |
| | | } |
| | | productionProductRouteItemParamService.save(paramEntity); |
| | | } |
| | | productionProductRouteItemParamService.save(paramEntity); |
| | | } |
| | | } |
| | | |