From 965cd9cc87ee705eb8d6ce259ee33d26291fe0d3 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 11 三月 2026 10:53:29 +0800
Subject: [PATCH] feat: 产品类别汇总统计
---
src/main/java/com/ruoyi/productionPlan/mapper/ProductionPlanMapper.java | 7 ++
src/main/java/com/ruoyi/productionPlan/controller/ProductionPlanController.java | 11 +++
src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java | 6 ++
src/main/java/com/ruoyi/productionPlan/dto/ProductionPlanSummaryDto.java | 70 +++++++++++++++++++++++
src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml | 29 +++++++++
src/main/java/com/ruoyi/productionPlan/service/ProductionPlanService.java | 9 +++
6 files changed, 131 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/ruoyi/productionPlan/controller/ProductionPlanController.java b/src/main/java/com/ruoyi/productionPlan/controller/ProductionPlanController.java
index af1965b..5a07915 100644
--- a/src/main/java/com/ruoyi/productionPlan/controller/ProductionPlanController.java
+++ b/src/main/java/com/ruoyi/productionPlan/controller/ProductionPlanController.java
@@ -5,6 +5,7 @@
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.productionPlan.dto.ProductionPlanDto;
+import com.ruoyi.productionPlan.dto.ProductionPlanSummaryDto;
import com.ruoyi.productionPlan.service.ProductionPlanService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -13,6 +14,7 @@
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
+import java.util.List;
/**
* <br>
@@ -38,9 +40,18 @@
}
@GetMapping("/loadProdData")
+ @ApiOperation("鎷夊彇閿�鍞敓浜ц鍒�")
@Log(title = "鎷夊彇閿�鍞敓浜ц鍒�", businessType = BusinessType.INSERT)
public AjaxResult loadProdData() {
productionPlanService.loadProdData();
return AjaxResult.success();
}
+
+ @GetMapping("/summaryByProductType")
+ @ApiOperation("鎸夌収浜у搧绫诲埆姹囨�荤粺璁¢渶姹傞噺")
+ @Log(title = "鎸夌収浜у搧绫诲埆姹囨�荤粺璁¢渶姹傞噺", businessType = BusinessType.OTHER)
+ public AjaxResult summaryByProductType(ProductionPlanSummaryDto query) {
+ List<ProductionPlanSummaryDto> list = productionPlanService.summaryByProductType(query);
+ return AjaxResult.success(list);
+ }
}
diff --git a/src/main/java/com/ruoyi/productionPlan/dto/ProductionPlanSummaryDto.java b/src/main/java/com/ruoyi/productionPlan/dto/ProductionPlanSummaryDto.java
new file mode 100644
index 0000000..0831d89
--- /dev/null
+++ b/src/main/java/com/ruoyi/productionPlan/dto/ProductionPlanSummaryDto.java
@@ -0,0 +1,70 @@
+package com.ruoyi.productionPlan.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * <br>
+ * 閿�鍞敓浜ч渶姹� - 浜у搧绫诲瀷姹囨�籇TO
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/11 10:24
+ */
+@Data
+@ApiModel("鐢熶骇闇�姹備骇鍝佹眹鎬�")
+public class ProductionPlanSummaryDto {
+
+ /**
+ * 鐗╂枡缂栫爜
+ */
+ @ApiModelProperty("鐗╂枡缂栫爜")
+ private String materialCode;
+
+ /**
+ * 浜у搧鍚嶇О
+ */
+ @ApiModelProperty("浜у搧鍚嶇О")
+ private String productName;
+
+ /**
+ * 浜у搧瑙勬牸
+ */
+ @ApiModelProperty("浜у搧瑙勬牸")
+ private String productSpec;
+
+ /**
+ * 浜у搧闀垮害
+ */
+ @ApiModelProperty("浜у搧闀垮害")
+ private Integer length;
+
+ /**
+ * 浜у搧瀹藉害
+ */
+ @ApiModelProperty("浜у搧瀹藉害")
+ private Integer width;
+
+ /**
+ * 浜у搧楂樺害
+ */
+ @ApiModelProperty("浜у搧楂樺害")
+ private Integer height;
+
+ /**
+ * 姹囨�诲潡鏁�
+ */
+ @ApiModelProperty("姹囨�诲潡鏁�")
+ private Integer quantity;
+
+ /**
+ * 姹囨�绘柟鏁�
+ */
+ @ApiModelProperty("姹囨�绘柟鏁�")
+ private BigDecimal volume;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/productionPlan/mapper/ProductionPlanMapper.java b/src/main/java/com/ruoyi/productionPlan/mapper/ProductionPlanMapper.java
index b7b863b..d6a7577 100644
--- a/src/main/java/com/ruoyi/productionPlan/mapper/ProductionPlanMapper.java
+++ b/src/main/java/com/ruoyi/productionPlan/mapper/ProductionPlanMapper.java
@@ -4,9 +4,11 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.productionPlan.dto.ProductionPlanDto;
+import com.ruoyi.productionPlan.dto.ProductionPlanSummaryDto;
import com.ruoyi.productionPlan.pojo.ProductionPlan;
-import com.ruoyi.staff.dto.StaffLeaveDto;
import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* <br>
@@ -19,4 +21,7 @@
*/
public interface ProductionPlanMapper extends BaseMapper<ProductionPlan> {
IPage<ProductionPlanDto> listPage(Page page, @Param("c") ProductionPlanDto productionPlanDto);
+
+ List<ProductionPlanSummaryDto> selectSummaryByProductType(ProductionPlanSummaryDto query);
+
}
diff --git a/src/main/java/com/ruoyi/productionPlan/service/ProductionPlanService.java b/src/main/java/com/ruoyi/productionPlan/service/ProductionPlanService.java
index 7d26b9b..eed04e8 100644
--- a/src/main/java/com/ruoyi/productionPlan/service/ProductionPlanService.java
+++ b/src/main/java/com/ruoyi/productionPlan/service/ProductionPlanService.java
@@ -4,7 +4,10 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.productionPlan.dto.ProductionPlanDto;
+import com.ruoyi.productionPlan.dto.ProductionPlanSummaryDto;
import com.ruoyi.productionPlan.pojo.ProductionPlan;
+
+import java.util.List;
/**
* <br>
@@ -27,4 +30,10 @@
* 瀹氭椂鍚屾
*/
void syncProdDataJob();
+
+ /**
+ * 鎸夌収浜у搧绫诲埆姹囨�荤粺璁¢渶姹傞噺
+ */
+ List<ProductionPlanSummaryDto> summaryByProductType(ProductionPlanSummaryDto query);
+
}
diff --git a/src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java b/src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java
index 862dde3..f6d2414 100644
--- a/src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java
@@ -11,6 +11,7 @@
import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.framework.config.AliDingConfig;
import com.ruoyi.productionPlan.dto.ProductionPlanDto;
+import com.ruoyi.productionPlan.dto.ProductionPlanSummaryDto;
import com.ruoyi.productionPlan.mapper.ProductionPlanMapper;
import com.ruoyi.productionPlan.pojo.ProductionPlan;
import com.ruoyi.productionPlan.service.ProductionPlanService;
@@ -333,4 +334,9 @@
return null;
}
}
+
+ @Override
+ public List<ProductionPlanSummaryDto> summaryByProductType(ProductionPlanSummaryDto query) {
+ return baseMapper.selectSummaryByProductType(query);
+ }
}
diff --git a/src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml b/src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml
index 1fc9456..0b205d6 100644
--- a/src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml
+++ b/src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml
@@ -44,4 +44,33 @@
WHERE 1 = 1
</select>
+ <select id="selectSummaryByProductType" resultType="com.ruoyi.productionPlan.dto.ProductionPlanSummaryDto">
+ SELECT
+ material_code,
+ product_name,
+ product_spec,
+ length,
+ width,
+ height,
+ COALESCE(SUM(quantity),0) AS quantity,
+ COALESCE(SUM(volume),0) AS volume
+ FROM production_plan
+ <where>
+ <if test="materialCode != null and materialCode != ''">
+ AND material_code LIKE CONCAT('%', #{materialCode}, '%')
+ </if>
+
+ <if test="productName != null and productName != ''">
+ AND product_name LIKE CONCAT('%', #{productName}, '%')
+ </if>
+ </where>
+ GROUP BY
+ material_code,
+ product_name,
+ product_spec,
+ length,
+ width,
+ height
+ </select>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.9.3