From 78dbf359be9e5b7ea11a4f3dde25a3037a21ddbc Mon Sep 17 00:00:00 2001
From: bluejay <253316343@qq.com>
Date: 星期五, 11 四月 2025 15:52:06 +0800
Subject: [PATCH] 零件统计表查询功能

---
 aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPartRouteStat.java                  |   10 +++
 aps-modules/aps-core/src/main/resources/mapper/core/ApsPartRouteStatMapper.xml                |   32 ++++++++--
 aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPartRouteStatMapper.java            |    2 
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPartRouteStatServiceImpl.java |   57 +++++++++++++++++--
 aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsPartRouteStatController.java    |    8 ++
 aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsResourceDateStat.java               |   18 ++++++
 aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPartRouteStatService.java         |    3 +
 7 files changed, 114 insertions(+), 16 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsPartRouteStatController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsPartRouteStatController.java
index 2540418..72bfa43 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsPartRouteStatController.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsPartRouteStatController.java
@@ -80,7 +80,6 @@
     {
         return toAjax(apsPartRouteStatService.insertApsPartRouteStat(apsPartRouteStat));
     }
-
     /**
      * 淇敼闆朵欢缁熻琛�
      */
@@ -91,7 +90,6 @@
     {
         return toAjax(apsPartRouteStatService.updateApsPartRouteStat(apsPartRouteStat));
     }
-
     /**
      * 鍒犻櫎闆朵欢缁熻琛�
      */
@@ -102,4 +100,10 @@
     {
         return toAjax(apsPartRouteStatService.deleteApsPartRouteStatByIds(ids));
     }
+    @GetMapping("/query")
+    public AjaxResult queryStat()
+    {
+        return apsPartRouteStatService.selectResourceDateStat();
+    }
+
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPartRouteStat.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPartRouteStat.java
index 4eb129e..07fbe19 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPartRouteStat.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPartRouteStat.java
@@ -25,6 +25,8 @@
     @Excel(name = "宸ュ崟鍙�")
     private String workOrderNo;
 
+
+    private String resourceGroupName;
     /** 宸ュ簭鍙� */
     @Excel(name = "宸ュ簭鍙�")
     private BigDecimal roadProcessNumber;
@@ -170,6 +172,14 @@
         return batchNumber;
     }
 
+    public String getResourceGroupName() {
+        return resourceGroupName;
+    }
+
+    public void setResourceGroupName(String resourceGroupName) {
+        this.resourceGroupName = resourceGroupName;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsResourceDateStat.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsResourceDateStat.java
new file mode 100644
index 0000000..4546c8c
--- /dev/null
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsResourceDateStat.java
@@ -0,0 +1,18 @@
+package com.aps.core.domain;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/*
+* 鐢ㄤ簬缁熻璧勬簮缁勬棩璁″垝鏁版嵁
+* */
+@Data
+public class ApsResourceDateStat {
+    private LocalDate planDay;
+    private String resourceName;
+    private Integer requireTimes;
+    private Integer designTimes;
+    private BigDecimal capacityLoad;
+}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPartRouteStatMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPartRouteStatMapper.java
index 1b7f892..9aca473 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPartRouteStatMapper.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPartRouteStatMapper.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 import com.aps.core.domain.ApsPartRouteStat;
+import com.aps.core.domain.ApsResourceDateStat;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -71,4 +72,5 @@
      * */
     int deleteLastBatch(String batchNumber);
 
+    List<ApsResourceDateStat> selectResourceDateStat();
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPartRouteStatService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPartRouteStatService.java
index 9bd2305..22e1d8b 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPartRouteStatService.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPartRouteStatService.java
@@ -1,6 +1,8 @@
 package com.aps.core.service;
 
 import java.util.List;
+
+import com.aps.common.core.web.domain.AjaxResult;
 import com.aps.core.domain.ApsPartRouteStat;
 
 /**
@@ -59,4 +61,5 @@
      */
     public int deleteApsPartRouteStatById(String id);
 
+    AjaxResult selectResourceDateStat();
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPartRouteStatServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPartRouteStatServiceImpl.java
index c9c4baa..cada14b 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPartRouteStatServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPartRouteStatServiceImpl.java
@@ -1,13 +1,16 @@
 package com.aps.core.service.impl;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Map;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
 
 import com.aps.common.core.utils.uuid.IdUtils;
-import com.aps.common.core.utils.uuid.UUID;
+import com.aps.common.core.web.domain.AjaxResult;
+import com.aps.core.domain.ApsResourceDateStat;
+import com.aps.core.mapper.ApsResourceGroupMapper;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cloud.commons.config.DefaultsBindHandlerAdvisor;
 import org.springframework.stereotype.Service;
 import com.aps.core.mapper.ApsPartRouteStatMapper;
 import com.aps.core.domain.ApsPartRouteStat;
@@ -26,7 +29,7 @@
 {
     @Autowired
     private ApsPartRouteStatMapper apsPartRouteStatMapper;
-    private DefaultsBindHandlerAdvisor.MappingsProvider mappingsProvider;
+    private ApsResourceGroupMapper resourceGroupMapper;
 
     /**
      * 鏌ヨ闆朵欢缁熻琛�
@@ -103,6 +106,9 @@
 
 
 
+    /**
+     * 鏌ヨ闆朵欢宸ュ簭骞舵洿鏂拌鍒掑紑宸ユ棩鏈�
+     * */
     public void updatePartRoutPlanDate() {
         List<ApsPartRouteStat> tempList = apsPartRouteStatMapper.selectPartRoutStat();
         /*瀵箃empList 鎸夌収 workOrderNo 杩涜鍒嗙粍*/
@@ -140,6 +146,45 @@
             }
         }
         apsPartRouteStatMapper.deleteLastBatch(batchNum);
-
     }
+    /** 鏌ヨ璧勬簮鏃ュ巻琛�
+     */
+    @Override
+    public AjaxResult selectResourceDateStat() {
+        /*鏌ュ嚭鎵�鏈夌粺璁$殑鏁版嵁*/
+        List<ApsResourceDateStat> list = apsPartRouteStatMapper.selectResourceDateStat();
+        /*姹傚嚭璁″垝鐨勬渶澶ф椂闂达紝娌℃湁 璁剧疆涓哄綋鍓嶆椂闂�+15澶�*/
+        ApsResourceDateStat apsResourceDateStat = list.stream().max(Comparator.comparing(ApsResourceDateStat::getPlanDay)).orElse(null);
+        LocalDate maxPlanDay = LocalDate.now().plus(15, ChronoUnit.DAYS);
+        if(apsResourceDateStat!=null){
+            maxPlanDay=apsResourceDateStat.getPlanDay();
+        }
+        /*缁勭粐鍑烘棩鏈熻〃澶�*/
+        List<String> planDays = new ArrayList<>();
+        LocalDate startDay = LocalDate.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        while (startDay .isBefore( maxPlanDay)){
+            planDays.add(startDay.format(formatter));
+            startDay=startDay.plus(1,ChronoUnit.DAYS);
+        }
+        /*鏍规嵁鏃ユ湡琛ㄥご鐨勯『搴忥紝缁勭粐鍑烘瘡涓棩鏈熶笅鐨勭粺璁¢」鐩�*/
+        List<ApsResourceDateStat> targetList = new ArrayList<>();
+        for (String planDay : planDays) {
+            ApsResourceDateStat apsResourceDateStat1 = list.stream()
+                    .filter(item -> item.getPlanDay().equals(LocalDate.parse(planDay, formatter)))
+                    .findFirst().orElse(null);
+            if(apsResourceDateStat1!=null){
+                targetList.add(apsResourceDateStat1);
+            }else{
+                ApsResourceDateStat apsResourceDateStat2 = new ApsResourceDateStat();
+                apsResourceDateStat2.setPlanDay( LocalDate.parse(planDay, formatter));
+                targetList.add(apsResourceDateStat2);
+            }
+        }
+        AjaxResult result=new AjaxResult(200,"鐢熸垚鎴愬姛")
+                .put("planTitle",planDays)
+                .put("planTable",targetList);
+        return result;
+    }
+
 }
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPartRouteStatMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPartRouteStatMapper.xml
index d029bb9..aac3c56 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPartRouteStatMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPartRouteStatMapper.xml
@@ -17,10 +17,11 @@
         <result property="delFlag"    column="del_flag"    />
         <result property="createBy"    column="create_by"    />
         <result property="batchNumber"    column="batch_number"    />
+        <result property="resourceGroupName"    column="resource_group_name"  />
     </resultMap>
 
     <sql id="selectApsPartRouteStatVo">
-        select id, work_order_no, road_process_number, current_process_number, production_quantity, standard_time, process_total_time, process_plan_start_day, design_times, del_flag, create_by, batch_number from aps_part_route_stat
+        select id, work_order_no, road_process_number, current_process_number, production_quantity, standard_time, process_total_time, process_plan_start_day, design_times, del_flag, create_by, batch_number ,resource_group_name from aps_part_route_stat
     </sql>
 
     <select id="selectApsPartRouteStatList" parameterType="ApsPartRouteStat" resultMap="ApsPartRouteStatResult">
@@ -122,13 +123,28 @@
             left join aps_resource_group as rs on rs.resource_group_name=rt.process_name
         where pl.del_flag='0' and rt.del_flag='0'
             /*闆朵欢璁″垝鐘舵�佷负锛氶潪瀹屽伐 */
-            and ( pl.order_status!='' and ( pl.order_status!='3' or pl.order_status!='瀹屽伐') )
-            /*宸ヨ壓璺嚎鐨勫伐搴忓彿>=闆朵欢璁″垝鐨勫綋鍓嶅伐搴�*/
-            and cast( rt.process_number as decimal(18,2)) >=  cast( pl.process_number as decimal(18,2))
-            /*宸ュ簭璁″垝寮�宸ユ棩 <= 璧勬簮缁勭殑鎴鏃ユ湡*/
-            and rt.process_plan_start_day<=rs.request_date
-            /*璧勬簮缁勯渶姹傛埅姝㈡棩鏈�<=褰撳墠鏃ユ湡+15澶�*/
-            and rs.request_date<=(current_date + INTERVAL '15 day')
+            and ( pl.document_status is not null and ( pl.document_status!='3' or pl.order_status!='瀹屽伐') )
+            /*宸ュ簭璁″垝寮�宸ユ棩 灏忎簬绛変簬 璧勬簮缁勭殑鎴鏃ユ湡*/
+            and rt.process_plan_start_day  &lt;= rs.request_date
             order by rt.work_order_no,process_plan_start_day
     </select>
+    <select id="selectResourceDateStat" resultMap="com.aps.core.domain.ApsResourceDateStat">
+        with pl as  (
+            select
+            DATE( st.process_plan_start_day) AS plan_day,
+                resource_group_name as resource_name,
+                sum(process_total_time) as require_times
+            from aps_part_route_stat  as st
+            where st.del_flag='0'
+            group by resource_group_name, plan_day
+        )
+        select  pl.resource_name
+                ,pl.plan_day
+                ,require_times
+                ,(gp.theory_hours*gp.devices_quantity) as design_times
+                ,((gp.theory_hours*gp.devices_quantity) / require_times * 100)  as capacity_load
+        from pl left join aps_resource_group as gp on pl.resource_group_name=gp.resource_group_name
+        where gp.del_flag='0'
+        </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3