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(); } } 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) 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; } 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(); } 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(); } 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(); /*对tempList æç § 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; } } 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>