yaowanxin
16 小时以前 4b189df3b30fa59dca58c5c7e7b5599a692a807a
Merge remote-tracking branch 'origin/jtwy' into jtwy
已修改5个文件
155 ■■■■■ 文件已修改
src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/SalesLedgerProductMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>