huminmin
昨天 a10ad9f551382673bc6af5a1d6d92edd9fee3680
src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java
@@ -120,13 +120,13 @@
        //  校验是否存在不同的产品名称
        String firstProductName = plans.get(0).getProductName();
        if (plans.stream().anyMatch(p -> !p.getProductName().equals(firstProductName))) {
        if (plans.stream().anyMatch(p -> p.getProductName() == null || !p.getProductName().equals(firstProductName))) {
            throw new BaseException("合并失败,存在不同的产品名称");
        }
        // 校验是否存在不同的产品规格
        String firstProductSpec = plans.get(0).getSpecification();
        if (plans.stream().anyMatch(p -> !p.getSpecification().equals(firstProductSpec))) {
        if (plans.stream().anyMatch(p -> p.getSpecification() == null || !p.getSpecification().equals(firstProductSpec))) {
            throw new BaseException("合并失败,存在不同的产品规格");
        }
@@ -166,6 +166,10 @@
            if (assignedVolume.add(remainingVolume).compareTo(productionPlanDto.getTotalAssignedQuantity()) >= 0) {
                // 最后一个计划,分配剩余方数
                BigDecimal lastRemainingVolume = productionPlanDto.getTotalAssignedQuantity().subtract(assignedVolume);
                plan.setStatus(1);
                if (lastRemainingVolume.compareTo(BigDecimal.ZERO) <= 0) {
                    plan.setStatus(2);
                }
                plan.setAssignedQuantity(plan.getAssignedQuantity().add(lastRemainingVolume));
                productOrderPlan.setAssignedQuantity(lastRemainingVolume);
                productionPlanMapper.updateById(plan);
@@ -174,6 +178,10 @@
            }
            // 分配当前计划方数
            plan.setStatus(1);
            if (remainingVolume.compareTo(BigDecimal.ZERO) <= 0) {
                plan.setStatus(2);
            }
            plan.setAssignedQuantity(plan.getAssignedQuantity().add(remainingVolume));
            productOrderPlan.setAssignedQuantity(remainingVolume);
            // 更新生产计划
@@ -189,6 +197,7 @@
    @Transactional(rollbackFor = Exception.class)
    public boolean add(ProductionPlanDto productionPlanDto) {
        productionPlanDto.setDataSourceType(PRODUCTION_FORECAST.getCode());
        productionPlanDto.setStatus(0);
        productionPlanMapper.insert(productionPlanDto);
        return true;
    }
@@ -196,6 +205,10 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean update(ProductionPlanDto productionPlanDto) {
        // 已下发状态,不能编辑
        if (productionPlanDto.getStatus() != 0) {
            throw new BaseException("已下发或部分下发状态,不能编辑");
        }
        // 查询是否有关联订单
        boolean hasProductOrderPlan = productOrderPlanMapper.selectList(Wrappers.<ProductOrderPlan>lambdaQuery().eq(ProductOrderPlan::getProductionPlanId, productionPlanDto.getId())).stream().anyMatch(p -> p.getProductOrderId() != null);
        if (hasProductOrderPlan) {
@@ -212,6 +225,10 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean delete(List<Long> ids) {
        // 如果存在已下发的计划,则不能删除
        if (productionPlanMapper.selectList(Wrappers.<ProductionPlan>lambdaQuery().in(ProductionPlan::getId, ids)).stream().anyMatch(p -> p.getStatus() == 1 || p.getStatus() == 2)) {
            throw new BaseException("删除失败,存在已下发或部分下发的计划");
        }
        // 如果有关联订单,则不能删除
        if (productOrderPlanMapper.selectList(Wrappers.<ProductOrderPlan>lambdaQuery().in(ProductOrderPlan::getProductionPlanId, ids)).stream().anyMatch(p -> p.getProductOrderId() != null)) {
            throw new BaseException("删除失败,存在关联订单");
@@ -389,7 +406,6 @@
                plan.setCustomerName(formData.getString("textField_lbkozohg"));
                String materialCode = row.getString("textField_l9xo62q5");
                plan.setMaterialCode(materialCode);
                // 根据物料编码查询物料信息表,关联物料ID
                if (StringUtils.isNotEmpty(materialCode)) {
                    LambdaQueryWrapper<ProductMaterialSku> skuQueryWrapper = new LambdaQueryWrapper<>();
@@ -397,15 +413,6 @@
                    ProductMaterialSku sku = productMaterialSkuService.getOne(skuQueryWrapper);
                    if (sku != null) {
                        plan.setProductMaterialSkuId(sku.getId());
                        if (sku.getMaterialId() != null) {
                            // 设置产品名称
                            ProductMaterial material = productMaterialService.getById(sku.getMaterialId());
                            if (material != null) {
                                plan.setProductName(material.getMaterialName());
                            }
                        }
                        // 设置规格型号
                        plan.setProductSpec(sku.getSpecification());
                    }
                }
@@ -563,13 +570,6 @@
                ProductMaterialSku sku = productMaterialSkuService.getOne(skuQueryWrapper);
                if (sku != null) {
                    entity.setProductMaterialSkuId(sku.getId());
                    if (sku.getMaterialId() != null) {
                        ProductMaterial material = productMaterialService.getById(sku.getMaterialId());
                        if (material != null) {
                            entity.setProductName(material.getMaterialName());
                        }
                    }
                    entity.setProductSpec(sku.getSpecification());
                }
            }