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