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 <= 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