src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
@@ -4,13 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.framework.web.domain.R; import com.ruoyi.production.dto.ProductProcessRouteItemDto; import com.ruoyi.production.mapper.ProductOrderMapper; import com.ruoyi.production.mapper.ProductWorkOrderMapper; import com.ruoyi.production.pojo.ProductOrder; import com.ruoyi.production.pojo.ProductProcessRouteItem; import com.ruoyi.production.pojo.ProductWorkOrder; import com.ruoyi.production.mapper.*; import com.ruoyi.production.pojo.*; import com.ruoyi.production.service.ProductProcessRouteItemService; import com.ruoyi.production.service.ProductWorkOrderService; import com.ruoyi.quality.mapper.QualityInspectMapper; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.sales.mapper.SalesLedgerMapper; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import com.ruoyi.sales.pojo.SalesLedger; @@ -43,6 +42,16 @@ private ProductWorkOrderMapper productWorkOrderMapper; private SalesLedgerProductMapper salesLedgerProductMapper; private ProductionProductMainMapper productionProductMainMapper; private ProductionProductInputMapper productionProductInputMapper; private ProductionProductOutputMapper productionProductOutputMapper; private QualityInspectMapper qualityInspectMapper; private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper; @GetMapping("list") @ApiOperation("根据Id查询工艺项目") @@ -130,22 +139,70 @@ @ApiOperation("删除生产工艺路线") @Transactional(rollbackFor = Exception.class) public R deleteRouteItem(@RequestBody ProductProcessRouteItemDto processRouteItemDto) { if (processRouteItemDto == null || processRouteItemDto.getId() == null) { return R.fail("参数错误,ID不能为空"); return R.fail("删除失败:工艺路线项ID不能为空"); } Long routeItemId = processRouteItemDto.getId(); try { // 先删除关联的工单数据 LambdaQueryWrapper<ProductWorkOrder> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProductWorkOrder::getProductProcessRouteItemId, processRouteItemDto.getId()); productWorkOrderMapper.delete(wrapper); // 查询工单 ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectOne( new LambdaQueryWrapper<ProductWorkOrder>() .eq(ProductWorkOrder::getProductProcessRouteItemId, routeItemId) .last("LIMIT 1") ); if (productWorkOrder == null) { return R.fail("删除失败:未找到关联的生产工单"); } Long workOrderId = productWorkOrder.getId(); Long productOrderId = productWorkOrder.getProductOrderId(); // 查询生产主表 List<ProductionProductMain> productionProductMains = productionProductMainMapper.selectList( new LambdaQueryWrapper<ProductionProductMain>() .eq(ProductionProductMain::getWorkOrderId, workOrderId) ); if (!productionProductMains.isEmpty()) { // 批量删除子表 for (ProductionProductMain main : productionProductMains) { Long mainId = main.getId(); // 删除投入 productionProductInputMapper.delete(new LambdaQueryWrapper<ProductionProductInput>() .eq(ProductionProductInput::getProductMainId, mainId)); // 删除产出 productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>() .eq(ProductionProductOutput::getProductMainId, mainId)); // 删除质检 qualityInspectMapper.delete(new LambdaQueryWrapper<QualityInspect>() .eq(QualityInspect::getProductMainId, mainId)); } } // 删除报工(生产主表) productionProductMainMapper.delete(new LambdaQueryWrapper<ProductionProductMain>() .eq(ProductionProductMain::getWorkOrderId, workOrderId)); // 查询订单 + 删除核算 ProductOrder productOrder = productOrderMapper.selectById(productOrderId); if (productOrder != null && productOrder.getSalesLedgerId() != null) { salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>() .eq(SalesLedgerProductionAccounting::getSalesLedgerId, productOrder.getSalesLedgerId())); } // 删除关联工单 productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>() .eq(ProductWorkOrder::getProductProcessRouteItemId, routeItemId)); // 删除主表数据 productProcessRouteItemService.removeById(processRouteItemDto.getId()); boolean removeFlag = productProcessRouteItemService.removeById(routeItemId); if (!removeFlag) { return R.fail("删除失败:工艺路线项主表数据不存在"); } return R.ok(); } catch (Exception e) { throw new RuntimeException("删除失败:" + e.getMessage()); return R.fail("删除生产工艺路线失败:" + e.getMessage()); } } } src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -236,7 +236,7 @@ qualityInspect.setInspectType(0); qualityInspect.setSupplier(purchaseLedger.getSupplierName()); qualityInspect.setPurchaseLedgerId(purchaseLedger.getId()); qualityInspect.setProductId(saleProduct.getProductId()); qualityInspect.setProductId(saleProduct.getId()); qualityInspect.setProductName(saleProduct.getProductCategory()); qualityInspect.setModel(saleProduct.getSpecificationModel()); qualityInspect.setUnit(saleProduct.getUnit()); src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -11,7 +11,12 @@ import com.deepoove.poi.config.Configure; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.HackLoopTableRenderPolicy; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.security.LoginUser; import com.ruoyi.procurementrecord.dto.Details; import com.ruoyi.procurementrecord.dto.ProcurementAddDto; import com.ruoyi.procurementrecord.service.ProcurementRecordService; import com.ruoyi.quality.dto.QualityInspectDto; import com.ruoyi.quality.mapper.QualityInspectMapper; import com.ruoyi.quality.mapper.QualityInspectParamMapper; @@ -23,6 +28,8 @@ import com.ruoyi.quality.pojo.QualityUnqualified; import com.ruoyi.quality.service.IQualityInspectParamService; import com.ruoyi.quality.service.IQualityInspectService; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import com.ruoyi.sales.pojo.SalesLedgerProduct; import com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper; import com.ruoyi.staff.mapper.StaffOnJobMapper; import com.ruoyi.staff.pojo.StaffJoinLeaveRecord; @@ -37,6 +44,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @@ -53,6 +61,10 @@ private QualityTestStandardMapper qualityTestStandardMapper; private QualityUnqualifiedMapper qualityUnqualifiedMapper; private SalesLedgerProductMapper salesLedgerProductMapper; private ProcurementRecordService procurementRecordService; @Override public int add(QualityInspectDto qualityInspectDto) { @@ -91,6 +103,50 @@ qualityUnqualified.setDefectivePhenomena(text+"这些指标中存在不合格");//不合格现象 qualityUnqualifiedMapper.insert(qualityUnqualified); } LoginUser loginUser = SecurityUtils.getLoginUser(); if (qualityInspect.getInspectType() == 0) { if ("合格".equals(qualityInspect.getCheckResult())) { ProcurementAddDto procurementRecordOutAdd = new ProcurementAddDto(); procurementRecordOutAdd.setType(1); procurementRecordOutAdd.setTypeName("采购入库"); procurementRecordOutAdd.setNickName(loginUser.getNickName()); procurementRecordOutAdd.setPurchaseLedgerId(Math.toIntExact(qualityInspect.getPurchaseLedgerId())); if (qualityInspect.getPurchaseLedgerId() == null) { throw new BaseException("请选择采购单"); } SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(qualityInspect.getProductId()); ArrayList<Details> detailss = new ArrayList<>(); Details details = new Details(); details.setId(Math.toIntExact(qualityInspect.getProductId())); details.setInboundQuantity(qualityInspect.getQuantity()); details.setWarnNum(salesLedgerProduct.getWarnNum()); details.setUnitPrice(salesLedgerProduct.getTaxInclusiveUnitPrice()); details.setTotalPrice(salesLedgerProduct.getTaxInclusiveTotalPrice()); detailss.add( details); procurementRecordOutAdd.setDetails(detailss); procurementRecordService.add(procurementRecordOutAdd); } }else if (qualityInspect.getInspectType() == 1) { }else if (qualityInspect.getInspectType() == 2) { //查询UnitPrice/TotalPrice SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectSalesLedgerProductByMainId(qualityInspect.getProductMainId()); ProcurementAddDto procurementRecordOutAdd = new ProcurementAddDto(); procurementRecordOutAdd.setType(2); procurementRecordOutAdd.setTypeName("生产入库"); procurementRecordOutAdd.setNickName(loginUser.getNickName()); List<Details> details = new ArrayList<>(); Details details1 = new Details(); details1.setInboundQuantity(qualityInspect.getQuantity()); details1.setId(Math.toIntExact(salesLedgerProduct.getId())); details1.setUnitPrice(salesLedgerProduct.getTaxInclusiveUnitPrice()); details1.setTotalPrice(salesLedgerProduct.getTaxInclusiveTotalPrice()); details.add(details1); procurementRecordOutAdd.setDetails(details); procurementRecordService.add(procurementRecordOutAdd); } qualityInspect.setInspectState(1);//已提交 return qualityInspectMapper.updateById(qualityInspect); } src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java
@@ -14,4 +14,7 @@ */ public interface SalesLedgerProductMapper extends MyBaseMapper<SalesLedgerProduct> { List<SalesLedgerProduct> selectSalesLedgerProductList(@Param("salesLedgerProduct") SalesLedgerProduct salesLedgerProduct); SalesLedgerProduct selectSalesLedgerProductByMainId(@Param("productMainId") Long productMainId); } src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -22,4 +22,15 @@ </if> </where> </select> <select id="selectSalesLedgerProductByMainId" resultType="com.ruoyi.sales.pojo.SalesLedgerProduct"> select slp.* from quality_inspect qi left join production_product_main ppm on qi.product_main_id = ppm.id left join product_work_order pwo on ppm.work_order_id = pwo.id left join product_order po on pwo.product_order_id = po.id left join sales_ledger_product slp on po.product_model_id = slp.id where qi.product_main_id = #{productMainId} </select> </mapper>