From 3bdaa5708b94e64f813f70ede8ba0bbd1a3179ec Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期五, 27 三月 2026 15:08:01 +0800
Subject: [PATCH] 成品检数据查询
---
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java | 15 +++
src/main/resources/mapper/production/ProductionProductRouteItemMapper.xml | 4
src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java | 6 +
src/main/java/com/ruoyi/quality/controller/QualityInspectController.java | 25 ++++++
src/main/java/com/ruoyi/quality/dto/ProcessPageDto.java | 11 ++
src/main/resources/mapper/production/ProductOrderMapper.xml | 80 ++++++++++++++++++++
src/main/java/com/ruoyi/quality/service/IQualityInspectService.java | 6 +
src/main/java/com/ruoyi/quality/dto/FinishedPageDto.java | 50 ++++++++++++
src/main/java/com/ruoyi/quality/dto/FinishedRatioDto.java | 41 ++++++++++
9 files changed, 233 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java
index 84da613..44d6f62 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java
+++ b/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);
}
diff --git a/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java b/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
index 48a8d4f..1994c07 100644
--- a/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
+++ b/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
@@ -7,6 +7,7 @@
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;
@@ -169,4 +170,28 @@
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));
+ }
}
diff --git a/src/main/java/com/ruoyi/quality/dto/FinishedPageDto.java b/src/main/java/com/ruoyi/quality/dto/FinishedPageDto.java
new file mode 100644
index 0000000..2288e79
--- /dev/null
+++ b/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;
+
+}
diff --git a/src/main/java/com/ruoyi/quality/dto/FinishedRatioDto.java b/src/main/java/com/ruoyi/quality/dto/FinishedRatioDto.java
new file mode 100644
index 0000000..0b5eacb
--- /dev/null
+++ b/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;
+
+}
diff --git a/src/main/java/com/ruoyi/quality/dto/ProcessPageDto.java b/src/main/java/com/ruoyi/quality/dto/ProcessPageDto.java
index 58202be..296debe 100644
--- a/src/main/java/com/ruoyi/quality/dto/ProcessPageDto.java
+++ b/src/main/java/com/ruoyi/quality/dto/ProcessPageDto.java
@@ -10,6 +10,7 @@
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
+import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
@@ -17,7 +18,7 @@
public class ProcessPageDto {
@ApiModelProperty("鐢熶骇鎶ュ伐璁板綍鐨勫伐搴忚〃id")
- private Long ProductionProductRouteItemId;
+ private Long productionProductRouteItemId;
@ApiModelProperty(value = "鏃ユ湡")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -60,7 +61,11 @@
@ApiModelProperty("浜у嚭鏁伴噺")
private BigDecimal quantity;
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate startTime;
- private LocalDateTime startTime;
- private LocalDateTime endTime;
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate endTime;
}
diff --git a/src/main/java/com/ruoyi/quality/service/IQualityInspectService.java b/src/main/java/com/ruoyi/quality/service/IQualityInspectService.java
index 6f5f604..8265b25 100644
--- a/src/main/java/com/ruoyi/quality/service/IQualityInspectService.java
+++ b/src/main/java/com/ruoyi/quality/service/IQualityInspectService.java
@@ -6,6 +6,8 @@
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;
@@ -33,4 +35,8 @@
IPage<ProcessPageDto> processPage(Page page, ProcessPageDto processPageDto);
List<ProductionProductRouteItemParam> processDetails(ProcessPageDto processPageDto);
+
+ IPage<FinishedPageDto> finishedPage(Page page, FinishedPageDto finishedPageDto);
+
+ List<FinishedRatioDto> finishedRatio(FinishedPageDto finishedPageDto);
}
diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
index 0d48fc7..f58a625 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -15,10 +15,13 @@
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;
@@ -64,6 +67,8 @@
private ProductionProductRouteItemMapper productionProductRouteItemMapper;
private ProductionProductRouteItemParamMapper productionProductRouteItemParamMapper;
+
+ private ProductOrderMapper productOrderMapper;
@Override
public int add(QualityInspectDto qualityInspectDto) {
@@ -177,6 +182,16 @@
}
@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()));
diff --git a/src/main/resources/mapper/production/ProductOrderMapper.xml b/src/main/resources/mapper/production/ProductOrderMapper.xml
index 4cd3372..b9193a0 100644
--- a/src/main/resources/mapper/production/ProductOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -151,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>
diff --git a/src/main/resources/mapper/production/ProductionProductRouteItemMapper.xml b/src/main/resources/mapper/production/ProductionProductRouteItemMapper.xml
index a56128c..7416e9d 100644
--- a/src/main/resources/mapper/production/ProductionProductRouteItemMapper.xml
+++ b/src/main/resources/mapper/production/ProductionProductRouteItemMapper.xml
@@ -15,7 +15,7 @@
<result column="tenant_id" property="tenantId"/>
</resultMap>
<select id="processPage" resultType="com.ruoyi.quality.dto.ProcessPageDto">
- select ppri.id ProductionProductRouteItemId,
+ select ppri.id productionProductRouteItemId,
ppri.create_time,
ppm.product_no,
po.nps_no,
@@ -59,7 +59,7 @@
AND po.strength = #{c.strength}
</if>
<if test="c.startTime != null and c.endTime != null">
- AND po.create_time BETWEEN #{c.startTime} AND #{c.endTime}
+ AND ppri.create_time BETWEEN #{c.startTime} AND #{c.endTime} + INTERVAL 1 DAY - INTERVAL 1 MICROSECOND
</if>
order by ppri.id desc
</select>
--
Gitblit v1.9.3