0b4c9f2a37a825a84725cb66ecf04060831ac5d0..dc99e8a28673af16796bdd434d7f47b434b6a4d6
2026-03-27 zss
决策分析---能耗单耗
dc99e8 对比 | 目录
2026-03-27 zss
成品检数据查询
3bdaa5 对比 | 目录
2026-03-27 zss
过程检数据查询+原有生产订单表增加产品规格id
deff78 对比 | 目录
已添加4个文件
已修改19个文件
491 ■■■■■ 文件已修改
src/main/java/com/ruoyi/energy/controller/EnergyConsumptionDetailController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/dto/EnergyAccountDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/dto/EnergyCollectDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/dto/EnergyStatisticsDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/service/EnergyConsumptionDetailService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/service/impl/EnergyConsumptionDetailServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/vo/EnergyStatisticsVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/dto/ProductOrderDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/mapper/ProductionProductRouteItemMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/mapper/ProductionProductRouteItemParamMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProductOrder.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductionRecordServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/controller/QualityInspectController.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/dto/FinishedPageDto.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/dto/FinishedRatioDto.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/dto/ProcessPageDto.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/service/IQualityInspectService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/ProductOrderMapper.xml 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/ProductionProductRouteItemMapper.xml 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/ProductionProductRouteItemParamMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/energy/controller/EnergyConsumptionDetailController.java
@@ -77,16 +77,22 @@
    /*******************************************汇总统计*****************************************************************************************************************************************************************************/
    @GetMapping("/statistics")
    @ApiOperation("能耗统计---按日月年汇总统计")
    @ApiOperation("能耗管理---能耗统计")
    public R statistics(EnergyStatisticsVo energyStatisticsVo) {
        return R.ok(energyConsumptionDetailService.statistics(energyStatisticsVo));
    }
    @GetMapping("/account")
    @ApiOperation("能耗成本核算---按日月汇总统计")
    @ApiOperation("成本核算---能耗成本核算")
    public R account(EnergyStatisticsVo energyStatisticsVo) {
        energyStatisticsVo.setType(null);
        return R.ok(energyConsumptionDetailService.account(energyStatisticsVo));
    }
    @GetMapping("/collectEnergy")
    @ApiOperation("决策分析---能耗单耗")
    public R collectEnergy(EnergyStatisticsVo energyStatisticsVo) {
        return R.ok(energyConsumptionDetailService.collectEnergy(energyStatisticsVo));
    }
}
src/main/java/com/ruoyi/energy/dto/EnergyAccountDto.java
@@ -8,7 +8,7 @@
import java.util.List;
@Data
@ApiModel("能耗成本核算---按日月汇总统计")
@ApiModel("成本核算---能耗成本核算")
public class EnergyAccountDto {
    @ApiModelProperty("总能耗成本")
src/main/java/com/ruoyi/energy/dto/EnergyCollectDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.energy.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
@ApiModel("决策分析---能耗单耗")
public class EnergyCollectDto {
    @ApiModelProperty("能耗类型占比")
    private List<EnergyConsumptionTypeDto> energyConsumptionTypeProportion;
}
src/main/java/com/ruoyi/energy/dto/EnergyStatisticsDto.java
@@ -9,7 +9,7 @@
import java.util.Map;
@Data
@ApiModel("能耗统计---按日月年汇总统计的能耗数据")
@ApiModel("能耗管理---能耗统计")
public class EnergyStatisticsDto {
    @ApiModelProperty("总耗用量")
src/main/java/com/ruoyi/energy/service/EnergyConsumptionDetailService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.energy.dto.EnergyAccountDto;
import com.ruoyi.energy.dto.EnergyCollectDto;
import com.ruoyi.energy.dto.EnergyConsumptionDetailDto;
import com.ruoyi.energy.dto.EnergyStatisticsDto;
import com.ruoyi.energy.pojo.EnergyConsumptionDetail;
@@ -32,4 +33,6 @@
    EnergyStatisticsDto statistics(EnergyStatisticsVo energyStatisticsVo);
    EnergyAccountDto account(EnergyStatisticsVo energyStatisticsVo);
    EnergyCollectDto collectEnergy(EnergyStatisticsVo energyStatisticsVo);
}
src/main/java/com/ruoyi/energy/service/impl/EnergyConsumptionDetailServiceImpl.java
@@ -151,4 +151,14 @@
        energyAccountDto.setEnergyConsumptionDetailDtoList(energyConsumptionDetailDtoList);
        return energyAccountDto;
    }
    @Override
    public EnergyCollectDto collectEnergy(EnergyStatisticsVo energyStatisticsVo) {
        EnergyCollectDto energyCollectDto = new EnergyCollectDto();
        //能耗单耗数据
        List<EnergyConsumptionTypeDto> energyConsumptionTypeDtos=energyConsumptionDetailMapper.energyConsumptionTypeProportion(energyStatisticsVo);
        energyCollectDto.setEnergyConsumptionTypeProportion(energyConsumptionTypeDtos);
        //能耗单耗趋势(待实现)
        return energyCollectDto;
    }
}
src/main/java/com/ruoyi/energy/vo/EnergyStatisticsVo.java
@@ -26,4 +26,7 @@
    //能耗场景(办公/生产)
    private String type;
    //能耗类型(æ°´/电/气)
    private String energyName;
}
src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
@@ -23,10 +23,6 @@
    @Excel(name = "规格")
    private String model;
    @ApiModelProperty(value = "产品类型")
    @Excel(name = "产品类型")
    private String strength;
    @ApiModelProperty(value = "工艺路线描述")
    @Excel(name = "工艺路线描述")
    private String description;
src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java
@@ -8,6 +8,8 @@
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.pojo.ProcessRoute;
import com.ruoyi.production.pojo.ProductOrder;
import com.ruoyi.quality.dto.FinishedPageDto;
import com.ruoyi.quality.dto.FinishedRatioDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -29,4 +31,8 @@
    Integer countPending(@Param("startDate") String startDate, @Param("endDate") String endDate);
    List<ProductOrderSourceDto> productOrderSource(@Param("orderId") Long orderId);
    IPage<FinishedPageDto> finishedPage(Page page, @Param("c") FinishedPageDto finishedPageDto);
    List<FinishedRatioDto> finishedRatio(@Param("productOrderId") Long productOrderId);
}
src/main/java/com/ruoyi/production/mapper/ProductionProductRouteItemMapper.java
@@ -1,7 +1,11 @@
package com.ruoyi.production.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.production.pojo.ProductionProductRouteItem;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.quality.dto.ProcessPageDto;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
@@ -13,4 +17,5 @@
 */
public interface ProductionProductRouteItemMapper extends BaseMapper<ProductionProductRouteItem> {
    IPage<ProcessPageDto> processPage(Page page, @Param("c") ProcessPageDto processPageDto);
}
src/main/java/com/ruoyi/production/mapper/ProductionProductRouteItemParamMapper.java
@@ -1,7 +1,11 @@
package com.ruoyi.production.mapper;
import com.ruoyi.production.pojo.ProductionOrderRouteItemParam;
import com.ruoyi.production.pojo.ProductionProductRouteItemParam;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -13,4 +17,5 @@
 */
public interface ProductionProductRouteItemParamMapper extends BaseMapper<ProductionProductRouteItemParam> {
    List<ProductionProductRouteItemParam> processDetails(@Param("productionProductRouteItemId") Long productionProductRouteItemId);
}
src/main/java/com/ruoyi/production/pojo/ProductOrder.java
@@ -98,4 +98,10 @@
    @ApiModelProperty(value = "状态(1.待开始、2.进行中、3.已完成、4.已取消)")
    private Integer status;
    /**
     * å…³è”物料信息表ID
     */
    @ApiModelProperty("关联物料信息表ID")
    private Long productMaterialSkuId;
}
src/main/java/com/ruoyi/production/service/impl/ProductionRecordServiceImpl.java
@@ -229,7 +229,7 @@
            throw new ServiceException("报工失败,生产订单更新失败");
        }
        //  å®ŒæˆæŠ¥å·¥ä¸»è¡¨-投入表-产出表数据
        //  å®ŒæˆæŠ¥å·¥ä¸»è¡¨-产出表-产出明细表数据
        ProductionProductMain productionProductMain = new ProductionProductMain();
        productionProductMain.setProductNo(productionProductMainService.generateProductNo());
        productionProductMain.setProductOrderId(dto.getProductOrderId());
@@ -247,7 +247,7 @@
        productionProductInput.setQuantity(dto.getQuantity());
        result = productionProductInputService.save(productionProductInput);
        if (!result) {
            throw new ServiceException("报工失败,生产投入存储失败");
            throw new ServiceException("报工失败,生产产出存储失败");
        }
        ProductionProductOutput productionProductOutput = new ProductionProductOutput();
@@ -481,7 +481,7 @@
        dto.setMaterialCode(productMaterialSkuDto.getMaterialCode());
        dto.setModel(productMaterialSkuDto.getModel());
        //  æŸ¥è¯¢æŠ•入表(获取产品ID和投入数量)
        //  æŸ¥è¯¢æ€»çš„产出数量(这里把投入表弄成了产出总表)
        ProductionProductInput input = productionProductInputService.getOne(
                new LambdaQueryWrapper<ProductionProductInput>()
                        .eq(ProductionProductInput::getProductMainId, productMainId)
src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java
@@ -148,6 +148,7 @@
        productOrder.setPlanCompleteTime(productionPlanDto.getPlanCompleteTime());
        productOrder.setStatus(ProductOrderStatusEnum.WAIT.getCode());
        productOrder.setStrength(productionPlanDto.getStrength());
        productOrder.setProductMaterialSkuId(productionPlanDto.getProductMaterialSkuId());
        Long orderId = productOrderService.insertProductOrder(productOrder);
src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
@@ -7,6 +7,8 @@
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.quality.dto.FinishedPageDto;
import com.ruoyi.quality.dto.ProcessPageDto;
import com.ruoyi.quality.dto.QualityInspectDto;
import com.ruoyi.quality.pojo.QualityInspect;
import com.ruoyi.quality.pojo.QualityInspectFile;
@@ -14,6 +16,8 @@
import com.ruoyi.quality.service.IQualityInspectFileService;
import com.ruoyi.quality.service.IQualityInspectParamService;
import com.ruoyi.quality.service.IQualityInspectService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
@@ -26,6 +30,7 @@
 * åŽŸææ–™æ£€éªŒ/过程检验/出厂检验
 */
@RestController
@Api(tags = "质量管理")
@RequestMapping("/quality/qualityInspect")
public class QualityInspectController {
@@ -140,4 +145,53 @@
    public void down(HttpServletResponse response,@RequestBody QualityInspect qualityInspect) {
        qualityInspectService.down(response, qualityInspect);
    }
    /************************************************宁夏中盛建材的过程检和成品检*********************************************************************************/
    /**
     * è¿‡ç¨‹æ£€åˆ†é¡µæŸ¥è¯¢
     * @param page
     * @param processPageDto
     * @return
     */
    @GetMapping("/processPage")
    @ApiOperation("过程检分页查询")
    public AjaxResult processPage(Page page, ProcessPageDto processPageDto) {
        return AjaxResult.success(qualityInspectService.processPage(page, processPageDto));
    }
    /**
     * è¿‡ç¨‹æ£€è¯¦æƒ…
     * @param processPageDto
     * @return
     */
    @GetMapping("/processDetails")
    @ApiOperation("过程检详情")
    public AjaxResult processDetails(ProcessPageDto processPageDto) {
        return AjaxResult.success(qualityInspectService.processDetails(processPageDto));
    }
    /**
     * æˆå“æ£€åˆ†é¡µæŸ¥è¯¢
     * @param page
     * @param finishedPageDto
     * @return
     */
    @GetMapping("/finishedPage")
    @ApiOperation("成品检分页查询")
    public AjaxResult finishedPage(Page page, FinishedPageDto finishedPageDto) {
        return AjaxResult.success(qualityInspectService.finishedPage(page, finishedPageDto));
    }
    /**
     * æˆå“æ£€-计算实际投入产出比例和标准投入产出比的偏差率
     * æ ¹æ®bom来算
     * @param finishedPageDto
     * @return
     */
    @GetMapping("/finishedRatio")
    @ApiOperation("成品检-查看标准投入产出比例")
    public AjaxResult finishedRatio(FinishedPageDto finishedPageDto) {
        return AjaxResult.success(qualityInspectService.finishedRatio(finishedPageDto));
    }
}
src/main/java/com/ruoyi/quality/dto/FinishedPageDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.ruoyi.quality.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@ApiModel("质量管理---成品检(台账)")
public class FinishedPageDto {
    @ApiModelProperty("生产订单id")
    private Long productOrderId;
    @ApiModelProperty(value = "状态(1.待开始、2.进行中、3.已完成、4.已取消)")
    private Integer status;
    @ApiModelProperty(value = "生产订单号")
    private String npsNo;
    @ApiModelProperty(value = "产品编码")
    private String materialCode;
    @ApiModelProperty(value = "产品名称")
    private String productName;
    @ApiModelProperty(value = "规格")
    private String model;
    @ApiModelProperty(value = "产品类型")
    private String strength;
    @ApiModelProperty(value = "生产订单需求数量")
    private BigDecimal needQuantity;
    @ApiModelProperty("总合格数量")
    private BigDecimal qualifiedQuantity;
    @ApiModelProperty("总不合格数量")
    private BigDecimal unqualifiedQuantity;
    @ApiModelProperty("总产出数量")
    private BigDecimal quantity;
}
src/main/java/com/ruoyi/quality/dto/FinishedRatioDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.ruoyi.quality.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel("质量管理---成品检(查看标准投入产出比例)")
public class FinishedRatioDto {
    @ApiModelProperty(value = "产品编码")
    private String materialCode;
    @ApiModelProperty(value = "产品名称")
    private String productName;
    @ApiModelProperty(value = "规格")
    private String model;
    @ApiModelProperty(value = "单位")
    private String unit;
    @ApiModelProperty(value = "实际投入量")
    private BigDecimal actualInputQuantity;
    @ApiModelProperty(value = "实际产出量")
    private BigDecimal actualOutputQuantity;
    @ApiModelProperty("实际投入产出比例")
    private BigDecimal actualInputOutputRatio;
    @ApiModelProperty("标准投入产出比例")
    private BigDecimal standardInputOutputRatio;
    @ApiModelProperty("实际与标准的偏差率")
    private BigDecimal deviationRate;
}
src/main/java/com/ruoyi/quality/dto/ProcessPageDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.ruoyi.quality.dto;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
@ApiModel("质量管理---过程检(台账)")
public class ProcessPageDto {
    @ApiModelProperty("生产报工记录的工序表id")
    private Long productionProductRouteItemId;
    @ApiModelProperty(value = "日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "报工单号")
    private String productNo;
    @ApiModelProperty(value = "生产订单号")
    private String npsNo;
    @ApiModelProperty(value = "工序名称")
    private String process;
    @ApiModelProperty(value = "岗位人员")
    private String postName;
    @ApiModelProperty(value = "班次")
    private String schedule;
    @ApiModelProperty(value = "产品编码")
    private String materialCode;
    @ApiModelProperty(value = "产品名称")
    private String productName;
    @ApiModelProperty(value = "规格")
    private String model;
    @ApiModelProperty(value = "产品类型")
    private String strength;
    @ApiModelProperty("合格数量")
    private BigDecimal qualifiedQuantity;
    @ApiModelProperty("不合格数量")
    private BigDecimal unqualifiedQuantity;
    @ApiModelProperty("产出数量")
    private BigDecimal quantity;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate startTime;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate endTime;
}
src/main/java/com/ruoyi/quality/service/IQualityInspectService.java
@@ -3,10 +3,17 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.production.dto.ProcessRouteItemParamDto;
import com.ruoyi.production.pojo.ProductionOrderRouteItemParam;
import com.ruoyi.production.pojo.ProductionProductRouteItemParam;
import com.ruoyi.quality.dto.FinishedPageDto;
import com.ruoyi.quality.dto.FinishedRatioDto;
import com.ruoyi.quality.dto.ProcessPageDto;
import com.ruoyi.quality.dto.QualityInspectDto;
import com.ruoyi.quality.pojo.QualityInspect;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
public interface IQualityInspectService extends IService<QualityInspect> {
@@ -24,4 +31,12 @@
    int submit(QualityInspect qualityInspect);
    void down(HttpServletResponse response, QualityInspect qualityInspect);
    IPage<ProcessPageDto> processPage(Page page, ProcessPageDto processPageDto);
    List<ProductionProductRouteItemParam> processDetails(ProcessPageDto processPageDto);
    IPage<FinishedPageDto> finishedPage(Page page, FinishedPageDto finishedPageDto);
    List<FinishedRatioDto> finishedRatio(FinishedPageDto finishedPageDto);
}
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -14,6 +14,15 @@
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.dto.ProcessRouteItemParamDto;
import com.ruoyi.production.mapper.ProductOrderMapper;
import com.ruoyi.production.mapper.ProductionProductRouteItemMapper;
import com.ruoyi.production.mapper.ProductionProductRouteItemParamMapper;
import com.ruoyi.production.pojo.ProductionOrderRouteItemParam;
import com.ruoyi.production.pojo.ProductionProductRouteItemParam;
import com.ruoyi.quality.dto.FinishedPageDto;
import com.ruoyi.quality.dto.FinishedRatioDto;
import com.ruoyi.quality.dto.ProcessPageDto;
import com.ruoyi.quality.dto.QualityInspectDto;
import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.quality.mapper.QualityTestStandardMapper;
@@ -54,6 +63,12 @@
    private SalesLedgerProductMapper salesLedgerProductMapper;
    private ProcurementRecordService procurementRecordService;
    private ProductionProductRouteItemMapper productionProductRouteItemMapper;
    private ProductionProductRouteItemParamMapper productionProductRouteItemParamMapper;
    private ProductOrderMapper productOrderMapper;
    @Override
    public int add(QualityInspectDto qualityInspectDto) {
@@ -157,6 +172,26 @@
    }
    @Override
    public IPage<ProcessPageDto> processPage(Page page, ProcessPageDto processPageDto) {
        return productionProductRouteItemMapper.processPage(page,processPageDto);
    }
    @Override
    public List<ProductionProductRouteItemParam> processDetails(ProcessPageDto processPageDto) {
        return productionProductRouteItemParamMapper.processDetails(processPageDto.getProductionProductRouteItemId());
    }
    @Override
    public IPage<FinishedPageDto> finishedPage(Page page, FinishedPageDto finishedPageDto) {
        return productOrderMapper.finishedPage(page,finishedPageDto);
    }
    @Override
    public List<FinishedRatioDto> finishedRatio(FinishedPageDto finishedPageDto) {
        return productOrderMapper.finishedRatio(finishedPageDto.getProductOrderId());
    }
    @Override
    public int updateQualityInspect(QualityInspectDto qualityInspectDto) {
        if (ObjectUtils.isNotNull(qualityInspectDto.getQualityInspectParams())) {
            qualityInspectParamService.remove(Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId, qualityInspectDto.getId()));
src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -54,13 +54,7 @@
        FROM product_order po
        LEFT JOIN process_route pr ON po.route_id = pr.id
        LEFT JOIN product_bom pb ON pr.bom_id = pb.id
        LEFT JOIN (
        SELECT product_order_id, MIN(production_plan_id) AS production_plan_id
        FROM product_order_plan
        GROUP BY product_order_id
        ) pop ON po.id = pop.product_order_id
        LEFT JOIN production_plan pp ON pop.production_plan_id = pp.id
        LEFT JOIN product_material_sku pms ON pms.id = pp.product_material_sku_id
        LEFT JOIN product_material_sku pms ON pms.id = po.product_material_sku_id
        LEFT JOIN product_material pm ON pm.id = pms.product_id
        <where>
            <if test="c.npsNo != null and c.npsNo != ''">
@@ -157,4 +151,84 @@
        ORDER BY pp.apply_no
    </select>
    <select id="finishedPage" resultType="com.ruoyi.quality.dto.FinishedPageDto">
        select * from
            (select po.id productOrderId,
                    po.status,
                    po.nps_no,
                    sku.material_code,
                    pm.product_name,
                    sku.model,
                    po.strength,
                    po.quantity needQuantity,
                    sum(ppo.quantity) qualifiedQuantity,
                    sum(ppo.scrap_qty) unqualifiedQuantity,
                    sum(ppo.quantity+ppo.scrap_qty) quantity
            from product_order po
            LEFT JOIN product_material_sku sku ON po.product_material_sku_id = sku.id
            LEFT JOIN product_material pm ON sku.product_id = pm.id
            LEFT JOIN production_product_main ppm ON ppm.product_order_id = po.id
            LEFT JOIN production_product_output ppo ON ppo.product_main_id = ppm.id
            group by po.id ,
                    po.status,
                    po.nps_no,
                    sku.material_code,
                    pm.product_name,
                    sku.model,
                    po.strength,
                    po.quantity
            order by po.id desc )A
        <where>
            <if test="c.npsNo != null and c.npsNo != ''">
                AND A.nps_no LIKE CONCAT('%', #{c.npsNo}, '%')
            </if>
            <if test="c.productName != null and c.productName != ''">
                AND A.product_name LIKE CONCAT('%', #{c.productName}, '%')
            </if>
            <if test="c.materialCode != null and c.materialCode != ''">
                AND A.material_code LIKE CONCAT('%', #{c.materialCode}, '%')
            </if>
            <if test="c.model != null and c.model != ''">
                AND A.model LIKE CONCAT('%', #{c.model}, '%')
            </if>
            <if test="c.strength != null and c.strength != ''">
                AND A.strength = #{c.strength}
            </if>
        </where>
    </select>
    <select id="finishedRatio" resultType="com.ruoyi.quality.dto.FinishedRatioDto">
        select A.material_code,
               product_name,
               model,
               unit,
               actualInputQuantity,
               actualOutputQuantity,
               actualInputQuantity / actualOutputQuantity actualInputOutputRatio,
               unit_quantity standardInputOutputRatio,
               (actualInputQuantity / actualOutputQuantity - unit_quantity)/unit_quantity  deviationRate
        from (select
               sku.material_code,
               pm.product_name,
               sku.model,
               pprip.unit,
               pos.unit_quantity,
               sum(pprip.product_value) actualInputQuantity,
               sum(ppo.quantity+ppo.scrap_qty) actualOutputQuantity
        from   production_product_route_item_param pprip
        left join production_product_route_item ppri on ppri.id=pprip.production_product_route_item_id
        left join production_product_main ppm on ppm.id=ppri.product_main_id
        left join production_product_output ppo on ppm.id=ppo.product_main_id
        left join product_material_sku sku ON pprip.product_id = sku.id
        left join product_material pm ON sku.product_id = pm.id
        left join production_order_structure pos ON pos.product_model_id = pprip.product_id
        where ppm.product_order_id = #{productOrderId}
        and pos.order_id = #{productOrderId}
        and pprip.order_item_param_id is null
        group by sku.material_code,
                 pm.product_name,
                 sku.model,
                 pos.unit_quantity,
                 pprip.unit)A
    </select>
</mapper>
src/main/resources/mapper/production/ProductionProductRouteItemMapper.xml
@@ -14,5 +14,54 @@
        <result column="update_time" property="updateTime"/>
        <result column="tenant_id" property="tenantId"/>
    </resultMap>
    <select id="processPage" resultType="com.ruoyi.quality.dto.ProcessPageDto">
        select ppri.id productionProductRouteItemId,
               ppri.create_time,
               ppm.product_no,
               po.nps_no,
               pp.name process,
               ppri.post_name,
               ppm.schedule,
               pms.material_code,
               pm.product_name,
               pms.model,
               po.strength,
               ppo.quantity qualifiedQuantity,
               ppo.scrap_qty unqualifiedQuantity,
               ppo.quantity + ppo.scrap_qty quantity
        from production_product_route_item ppri
                 left join production_product_main ppm on ppri.product_main_id = ppm.id
                 left join production_product_output ppo on ppo.product_main_id = ppm.id
                 left join product_order po on ppm.product_order_id = po.id
                 left join product_process pp on ppri.process_id = pp.id
                 left join product_material_sku pms on pms.id = po.product_material_sku_id
                 left join product_material pm on pm.id = pms.product_id
        where 1=1
            <if test="c.npsNo != null and c.npsNo != ''">
                AND po.nps_no LIKE CONCAT('%', #{c.npsNo}, '%')
            </if>
            <if test="c.process != null and c.process != ''">
                AND pp.name LIKE CONCAT('%', #{c.process}, '%')
            </if>
            <if test="c.productNo != null and c.productNo != ''">
                AND ppm.product_no LIKE CONCAT('%', #{c.productNo}, '%')
            </if>
            <if test="c.productName != null and c.productName != ''">
                AND pm.product_name LIKE CONCAT('%', #{c.productName}, '%')
            </if>
            <if test="c.materialCode != null and c.materialCode != ''">
                AND pms.material_code LIKE CONCAT('%', #{c.materialCode}, '%')
            </if>
            <if test="c.model != null and c.model != ''">
                AND pms.model LIKE CONCAT('%', #{c.model}, '%')
            </if>
            <if test="c.strength != null and c.strength != ''">
                AND po.strength = #{c.strength}
            </if>
            <if test="c.startTime != null and c.endTime != null">
                AND ppri.create_time BETWEEN #{c.startTime} AND #{c.endTime} + INTERVAL 1 DAY - INTERVAL 1 MICROSECOND
            </if>
        order by ppri.id desc
    </select>
</mapper>
src/main/resources/mapper/production/ProductionProductRouteItemParamMapper.xml
@@ -27,5 +27,11 @@
        <result column="update_time" property="updateTime"/>
        <result column="tenant_id" property="tenantId"/>
    </resultMap>
    <select id="processDetails" resultType="com.ruoyi.production.pojo.ProductionProductRouteItemParam">
        select pprip.*
        from production_product_route_item_param pprip
        where pprip.production_product_route_item_id = #{productionProductRouteItemId}
        and pprip.order_item_param_id is not null
    </select>
</mapper>