liding
4 天以前 4153cdc177ec3d8879ad210178ffc20ee0a2eee0
删除报工联动,优化报工
已修改6个文件
97 ■■■■ 文件已修改
src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/ProductionProductMainService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/pojo/QualityInspect.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
@@ -2,11 +2,13 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.production.dto.ProductProcessRouteItemDto;
import com.ruoyi.production.dto.ProductionProductMainDto;
import com.ruoyi.production.service.ProductionProductMainService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
@@ -41,8 +43,9 @@
    }
    @ApiOperation("删除报工")
    @DeleteMapping("/{ids}")
    public R delete(@PathVariable("ids") Long[] ids) {
        return R.ok(productionProductMainService.removeBatchByIds(Arrays.asList(ids)));
    @DeleteMapping("/delete")
    @Transactional(rollbackFor = Exception.class)
    public R delete(@RequestBody ProductionProductMainDto productionProductMainDto) {
        return R.ok(productionProductMainService.removeProductMain(productionProductMainDto));
    }
}
src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
@@ -22,4 +22,7 @@
    @ApiModelProperty(value = "是否报工")
    private boolean reportWork;
    @ApiModelProperty(value = "报工id")
    private Long productMainId;
}
src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java
@@ -5,6 +5,7 @@
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -92,4 +93,16 @@
     */
    @ApiModelProperty(value = "是否报工")
    private boolean reportWork;
    /**
     * 实际数量
     */
    @ApiModelProperty(value = "数量")
    private BigDecimal quantity;
    /**
     * 报工id
     */
    @ApiModelProperty(value = "报工id")
    private Long productMainId;
}
src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
@@ -15,4 +15,5 @@
    Boolean addProductMain(ProductionProductMainDto productionProductMainDto);
    Boolean removeProductMain(ProductionProductMainDto productionProductMainDto);
}
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -74,23 +74,23 @@
            throw new RuntimeException("参数不能为空");
        }
//        if (dto.isReportWork()) {
//            // 更新逻辑 - 只更新数量
//            QueryWrapper<ProductionProductOutput> outputWrapper = new QueryWrapper<>();
//            outputWrapper.eq("product_main_id", dto.getId());
//
//            ProductionProductOutput output = productionProductOutputMapper.selectOne(outputWrapper);
//            if (output == null) {
//                throw new RuntimeException("产出记录不存在");
//            }
//
//            // 只更新数量
//            if (dto.getQuantity() != null) {
//                output.setQuantity(dto.getQuantity());
//                productionProductOutputMapper.updateById(output);
//            }
//            return true;
//        }
        if (dto.isReportWork()) {
            // 更新逻辑 - 只更新数量
            QueryWrapper<ProductionProductOutput> outputWrapper = new QueryWrapper<>();
            outputWrapper.eq("product_main_id", dto.getProductMainId());
            ProductionProductOutput output = productionProductOutputMapper.selectOne(outputWrapper);
            if (output == null) {
                throw new RuntimeException("产出记录不存在");
            }
            // 只更新数量
            if (dto.getQuantity() != null) {
                output.setQuantity(dto.getQuantity());
                productionProductOutputMapper.updateById(output);
            }
            return true;
        }
        // 新增逻辑
        ProductionProductMain productionProductMain = new ProductionProductMain();
@@ -144,6 +144,7 @@
            UpdateWrapper<ProductWorkOrder> wrapper = new UpdateWrapper<>();
            wrapper.set("report_work", true)
                    .set("quantity",dto.getQuantity())
                    .set("product_main_id",productionProductMain.getId())
                    .eq("id", dto.getWorkOrderId());
            productWorkOrderMapper.update(null, wrapper);
        }
@@ -164,6 +165,7 @@
            qualityInspect.setProcess(productProcess.getName());
            qualityInspect.setInspectState(0);
            qualityInspect.setInspectType(inspectType);
            qualityInspect.setProductMainId(productionProductMain.getId());
            qualityInspectMapper.insert(qualityInspect);
            qualityTestStandardMapper.selectList(
@@ -177,6 +179,11 @@
                qualityInspectParamMapper.insert(param);
            });
        }
        // 添加产出
        ProductionProductOutput productionProductOutput = new ProductionProductOutput();
        productionProductOutput.setProductMainId(productionProductMain.getId());
@@ -186,4 +193,29 @@
        return true;
    }
    @Override
    @Transactional
    public Boolean removeProductMain(ProductionProductMainDto dto) {
        Long id = dto.getId();
        // 删除质检参数和质检记录
        qualityInspectMapper.selectList(
                new LambdaQueryWrapper<QualityInspect>()
                        .eq(QualityInspect::getProductMainId, id)
        ).forEach(q -> {
            qualityInspectParamMapper.delete(
                    new LambdaQueryWrapper<QualityInspectParam>()
                            .eq(QualityInspectParam::getInspectId, q.getId()));
            qualityInspectMapper.deleteById(q.getId());
        });
        // 删除产出记录
        productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>()
                        .eq(ProductionProductOutput::getProductMainId, id)
        );
        // 删除主表
        return productionProductMainMapper.deleteById(id) > 0;
    }
}
src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
@@ -140,5 +140,10 @@
    private Long purchaseLedgerId;
    /**
     * 报工id
     */
    private Long productMainId;
}