lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
@@ -615,4 +615,7 @@ String ORG_TYPE = "3"; Integer SHIFT_TYPE_1 = 1; Integer SHIFT_TYPE_2 = 2; } lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
@@ -134,4 +134,5 @@ List<MdcEquipment> findByProIdsAndTeamCode(@Param("mdcProductionIds") List<String> mdcProductionIds, @Param("teamCodeList") List<String> teamCodeList); List<MdcEquipment> findByProIdsAndType(@Param("mdcProductionIds") List<String> mdcProductionIds, @Param("typeList") List<String> typeList); } lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
@@ -324,4 +324,20 @@ </foreach> </select> <select id="findByProIdsAndType" resultType="org.jeecg.modules.mdc.entity.MdcEquipment"> SELECT t1.* FROM mdc_equipment t1 LEFT JOIN mdc_production_equipment t2 ON t1.id = t2.equipment_id WHERE t2.production_id IN <foreach collection="mdcProductionIds" item = "productionId" index = "index" open = "(" close= ")" separator = ","> #{productionId} </foreach> AND t1.equipment_type IN <foreach collection="typeList" item = "equipmentType" index = "index" open = "(" close= ")" separator = ","> #{equipmentType} </foreach> </select> </mapper> lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
@@ -231,4 +231,12 @@ * @return */ List<MdcEquipment> findByProIdsAndTeamCode(List<String> allProductionIds, List<String> teamCodelist); /** * æ ¹æ®äº§çº¿idéåå设å¤ç±»åæ¥è¯¢è®¾å¤å表 * @param allProductionIds * @param typeList * @return */ List<MdcEquipment> findByProIdsAndType(List<String> allProductionIds, List<String> typeList); } lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -1031,4 +1031,15 @@ return this.baseMapper.findByProIdsAndTeamCode(mdcProductionIds, teamCodeList); } /** * æ ¹æ®äº§çº¿idéåå设å¤ç±»åæ¥è¯¢è®¾å¤å表 * @param allProductionIds * @param typeList * @return */ @Override public List<MdcEquipment> findByProIdsAndType(List<String> allProductionIds, List<String> typeList) { return this.baseMapper.findByProIdsAndType(allProductionIds, typeList); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java
@@ -32,7 +32,7 @@ @ApiOperation(value = "è®¾å¤æçæ¥è¡¨-å©ç¨çå表æ¥è¯¢", notes = "è®¾å¤æçæ¥è¡¨-å©ç¨çå表æ¥è¯¢") @GetMapping("/efficiencyList") public Result efficiencyList(MdcEfficiencyReportQueryVo vo) { public Result<?> efficiencyList(MdcEfficiencyReportQueryVo vo) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); MdcEfficiencyVo result = mdcEfficiencyReportService.efficiencyList(userId, vo); @@ -41,7 +41,7 @@ @ApiOperation(value = "è®¾å¤æçæ¥è¡¨-å¼å¨çå表æ¥è¯¢", notes = "è®¾å¤æçæ¥è¡¨-å¼å¨çå表æ¥è¯¢") @GetMapping("/efficiencyPOList") public Result efficiencyPOList(MdcEfficiencyReportQueryVo vo) { public Result<?> efficiencyPOList(MdcEfficiencyReportQueryVo vo) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); MdcEfficiencyVo result = mdcEfficiencyReportService.efficiencyPOList(userId, vo); @@ -50,7 +50,7 @@ @ApiOperation(value = "è®¾å¤æçæ¥è¡¨-çæ¬¡å©ç¨çå表æ¥è¯¢", notes = "è®¾å¤æçæ¥è¡¨-çæ¬¡å©ç¨çå表æ¥è¯¢") @GetMapping("/efficiencyShiftList") public Result efficiencyShiftList(MdcEfficiencyReportShiftQueryVo vo) { public Result<?> efficiencyShiftList(MdcEfficiencyReportShiftQueryVo vo) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); MdcEfficiencyShiftVo result = mdcEfficiencyReportService.efficiencyShiftList(userId, vo); @@ -59,7 +59,7 @@ @ApiOperation(value = "è®¾å¤æçæ¥è¡¨-ç»è®¡åæå表", notes = "è®¾å¤æçæ¥è¡¨-ç»è®¡åæå表") @GetMapping("/dayStatisticalRate") public Result dayStatisticalRate(MdcEfficiencyReportQueryVo vo) { public Result<?> dayStatisticalRate(MdcEfficiencyReportQueryVo vo) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); StatisticalAnalysisVo result = mdcEfficiencyReportService.dayStatisticalRate(userId, vo); @@ -68,7 +68,7 @@ @ApiOperation(value = "è®¾å¤æçæ¥è¡¨-对æ¯åæ", notes = "è®¾å¤æçæ¥è¡¨-对æ¯åæ") @GetMapping("/comparativeAnalysis") public Result comparativeAnalysis(ComparativeAnalysisQueryVo vo) { public Result<?> comparativeAnalysis(ComparativeAnalysisQueryVo vo) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); ComparativeAnalysisDto result = mdcEfficiencyReportService.comparativeAnalysis(userId, vo); @@ -77,7 +77,7 @@ @ApiOperation(value = "è®¾å¤æçæ¥è¡¨-è®¾å¤æ¥å©ç¨ç", notes = "è®¾å¤æçæ¥è¡¨-è®¾å¤æ¥å©ç¨ç") @GetMapping("/dayUtilizationRate") public Result dayUtilizationRate(DayUtilizationRateQueryVo vo) { public Result<?> dayUtilizationRate(DayUtilizationRateQueryVo vo) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); DayUtilizationRateDto result = mdcEfficiencyReportService.dayUtilizationRate(userId, vo); @@ -86,7 +86,7 @@ @ApiOperation(value = "è®¾å¤æçæ¥è¡¨-è®¾å¤æ¥å©ç¨ç对æ¯", notes = "è®¾å¤æçæ¥è¡¨-è®¾å¤æ¥å©ç¨ç对æ¯") @GetMapping("/dayUtilizationRateContrast") public Result dayUtilizationRateContrast(DayUtilizationRateContrastQueryVo vo) { public Result<?> dayUtilizationRateContrast(DayUtilizationRateContrastQueryVo vo) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); DayUtilizationRateDto result = mdcEfficiencyReportService.dayUtilizationRateContrast(userId, vo); @@ -95,7 +95,7 @@ @ApiOperation(value = "è®¾å¤æçæ¥è¡¨-å©ç¨çèµ°å¿åæå表", notes = "è®¾å¤æçæ¥è¡¨-å©ç¨çèµ°å¿åæå表") @GetMapping("/utilizationRateTrendAnalyze") public Result utilizationRateTrendAnalyze(DayUtilizationRateContrastQueryVo vo) { public Result<?> utilizationRateTrendAnalyze(DayUtilizationRateContrastQueryVo vo) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); MdcUtilizationRateDto result = mdcEfficiencyReportService.utilizationRateTrendAnalyze(userId, vo); @@ -104,21 +104,21 @@ @ApiOperation(value = "è®¾å¤æçæ¥è¡¨-å©ç¨çåæ®µåæå表", notes = "è®¾å¤æçæ¥è¡¨-å©ç¨çåæ®µåæå表") @GetMapping("/utilizationRateSectionAnalyze") public Result utilizationRateSectionAnalyze(DayUtilizationRateContrastQueryVo vo) { public Result<?> utilizationRateSectionAnalyze(DayUtilizationRateContrastQueryVo vo) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); MdcUtilizationRateDto result = mdcEfficiencyReportService.utilizationRateSectionAnalyze(userId, vo); return Result.OK(result); } // @ApiOperation(value = "è®¾å¤æçæ¥è¡¨-综åå©ç¨çç»è®¡åæ", notes = "è®¾å¤æçæ¥è¡¨-综åå©ç¨çç»è®¡åæ") // @GetMapping("/comprehensiveRayeAnalyze") // public Result comprehensiveRayeAnalyze(DayUtilizationRateContrastQueryVo vo) { // LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); // String userId = user.getId(); // MdcUtilizationRateDto result = mdcEfficiencyReportService.comprehensiveRayeAnalyze(userId, vo); // return Result.OK(result); // } @ApiOperation(value = "è®¾å¤æçæ¥è¡¨-综åå©ç¨çç»è®¡åæ", notes = "è®¾å¤æçæ¥è¡¨-综åå©ç¨çç»è®¡åæ") @GetMapping("/comprehensiveRateAnalyze") public Result<?> comprehensiveRateAnalyze(EquEffVo vo) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); Map<String, Object> result = mdcEfficiencyReportService.comprehensiveRateAnalyze(userId, vo); return Result.OK(result); } @ApiOperation(value = "è®¾å¤æçæ¥è¡¨-çç»ç»¼åå©ç¨çç»è®¡åæ", notes = "è®¾å¤æçæ¥è¡¨-综åå©ç¨çç»è®¡åæ") @GetMapping("/teamEfficiencyAnalyzeByMonth") lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComRateDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ package org.jeecg.modules.mdc.dto; import lombok.Data; import java.math.BigDecimal; /** * @Author: Lius * @CreateTime: 2025-03-31 * @Description: */ @Data public class ComRateDto { private String theMonth; /** * å©ç¨ç */ private BigDecimal utilizationRate = BigDecimal.ZERO; /** * çæ¬¡å©ç¨ç */ private BigDecimal shiftUtilizationRate = BigDecimal.ZERO; /** * ä¿®æ£å©ç¨ç */ private BigDecimal amendUtilizationRate = BigDecimal.ZERO; /** * 累计è¿è¡æ¶é¿ */ private BigDecimal processLong = BigDecimal.ZERO; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftChildDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package org.jeecg.modules.mdc.dto; import lombok.Data; import java.math.BigDecimal; /** * @Author: Lius * @CreateTime: 2025-03-31 * @Description: */ @Data public class ComShiftChildDto { private String month; private BigDecimal utilizationRate = BigDecimal.ZERO; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package org.jeecg.modules.mdc.dto; import lombok.Data; import java.util.List; /** * @Author: Lius * @CreateTime: 2025-03-31 * @Description: */ @Data public class ComShiftDto { private String shiftSubName; private List<ComShiftChildDto> dataList; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftRateDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,33 @@ package org.jeecg.modules.mdc.dto; import lombok.Data; import java.math.BigDecimal; /** * @Author: Lius * @CreateTime: 2025-03-31 * @Description: */ @Data public class ComShiftRateDto { /** * 彿 */ private String theMonth; /** * çæ¬¡id */ private String shiftSub; /** * çæ¬¡åç§° */ private String shiftSubName; /** * å©ç¨ç */ private BigDecimal utilizationRate = BigDecimal.ZERO; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentStatisticalDto.java
@@ -40,4 +40,8 @@ * å¤©æ° */ private BigDecimal dayNum; /** * çæ¬¡id */ private String shiftSubId; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/UtilizationRateAvg.java
ÎļþÒÑɾ³ý lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalShiftInfoMonth.java
@@ -100,6 +100,18 @@ @ApiModelProperty(value = "弿ºç") private BigDecimal openRate; /** * çæ¬¡id */ @Excel(name = "çæ¬¡id", width = 15) @ApiModelProperty(value = "çæ¬¡id") private String shiftSubId; /** * ç»è®¡ç±»å(1æ» 2åçæ¬¡) */ @Excel(name = "ç»è®¡ç±»å", width = 15) @ApiModelProperty(value = "ç»è®¡ç±»å") private Integer shiftType; /** * å建æ¶é´ */ @ApiModelProperty(value = "å建æ¶é´") lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/CollectEquipmentDataMonthJob.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.jeecg.common.constant.CommonConstant; import org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfoMonth; @@ -113,6 +114,7 @@ MdcEquipmentStatisticalShiftInfoMonth mdcEquipmentShiftInfoMonth = new MdcEquipmentStatisticalShiftInfoMonth(); mdcEquipmentShiftInfoMonth.setEquipmentId(mdcEquipment.getEquipmentId()); mdcEquipmentShiftInfoMonth.setTheMonth(date); mdcEquipmentShiftInfoMonth.setShiftType(CommonConstant.SHIFT_TYPE_1); mdcEquipmentShiftInfoMonth.setCloseLong(mdcEquipmentShiftStatisticalDto.getCloseLong().intValue()); mdcEquipmentShiftInfoMonth.setTotalLong(mdcEquipmentShiftStatisticalDto.getTotalLong().intValue()); mdcEquipmentShiftInfoMonth.setOpenLong(mdcEquipmentShiftStatisticalDto.getOpenLong().intValue()); @@ -123,6 +125,26 @@ mdcEquipmentShiftInfoMonth.setStartRate(mdcEquipmentShiftStatisticalDto.getOpenLong().compareTo(BigDecimal.ZERO) > 0 ? mdcEquipmentShiftStatisticalDto.getProcessLong().divide(mdcEquipmentShiftStatisticalDto.getOpenLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO); mdcEquipmentShiftInfoMonth.setOpenRate(mdcEquipmentShiftStatisticalDto.getTotalLong().compareTo(BigDecimal.ZERO) > 0 ? mdcEquipmentShiftStatisticalDto.getOpenLong().divide(mdcEquipmentShiftStatisticalDto.getTotalLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO); mdcEquipmentStatisticalShiftInfoMonthList.add(mdcEquipmentShiftInfoMonth); // step.4 æ±æ»åçæ¬¡å©ç¨çæ°æ® List<MdcEquipmentStatisticalDto> essdList = mdcEquipmentStatisticalShiftInfoService.findShiftByEquipmentAndMonth(mdcEquipment.getEquipmentId(), date); if (essdList != null && !essdList.isEmpty()) { for (MdcEquipmentStatisticalDto equipmentStatisticalDto : essdList) { MdcEquipmentStatisticalShiftInfoMonth equipmentStatisticalShiftInfoMonth = new MdcEquipmentStatisticalShiftInfoMonth(); equipmentStatisticalShiftInfoMonth.setEquipmentId(mdcEquipment.getEquipmentId()); equipmentStatisticalShiftInfoMonth.setTheMonth(date); equipmentStatisticalShiftInfoMonth.setShiftType(CommonConstant.SHIFT_TYPE_2); equipmentStatisticalShiftInfoMonth.setCloseLong(equipmentStatisticalDto.getCloseLong().intValue()); equipmentStatisticalShiftInfoMonth.setTotalLong(equipmentStatisticalDto.getTotalLong().intValue()); equipmentStatisticalShiftInfoMonth.setOpenLong(equipmentStatisticalDto.getOpenLong().intValue()); equipmentStatisticalShiftInfoMonth.setErrorLong(equipmentStatisticalDto.getErrorLong().intValue()); equipmentStatisticalShiftInfoMonth.setWaitLong(equipmentStatisticalDto.getWaitLong().intValue()); equipmentStatisticalShiftInfoMonth.setProcessLong(equipmentStatisticalDto.getProcessLong().intValue()); equipmentStatisticalShiftInfoMonth.setUtilizationRate(equipmentStatisticalDto.getTotalLong().compareTo(BigDecimal.ZERO) > 0 ? equipmentStatisticalDto.getProcessLong().divide(equipmentStatisticalDto.getTotalLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO); equipmentStatisticalShiftInfoMonth.setStartRate(equipmentStatisticalDto.getOpenLong().compareTo(BigDecimal.ZERO) > 0 ? equipmentStatisticalDto.getProcessLong().divide(equipmentStatisticalDto.getOpenLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO); equipmentStatisticalShiftInfoMonth.setOpenRate(equipmentStatisticalDto.getTotalLong().compareTo(BigDecimal.ZERO) > 0 ? equipmentStatisticalDto.getOpenLong().divide(equipmentStatisticalDto.getTotalLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO); mdcEquipmentStatisticalShiftInfoMonthList.add(equipmentStatisticalShiftInfoMonth); } } } } if (!mdcEquipmentStatisticalInfoMonthList.isEmpty()) { lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEfficiencyReportMapper.java
@@ -1,14 +1,11 @@ package org.jeecg.modules.mdc.mapper; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.dto.MdcComAnaDto; import org.jeecg.modules.mdc.dto.MdcEfficiencyDto; import org.jeecg.modules.mdc.dto.TeamEquEffDto; import org.jeecg.modules.mdc.dto.*; import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo; import org.jeecg.modules.mdc.vo.ComparativeAnalysisQueryVo; import org.jeecg.modules.mdc.vo.MdcEfficiencyReportQueryVo; import org.jeecg.modules.mdc.vo.MdcEfficiencyReportShiftQueryVo; import org.jeecg.modules.mdc.dto.EquipmentEfficiencyAnalyzeDto; import java.math.BigDecimal; import java.util.List; @@ -56,4 +53,8 @@ List<EquipmentEfficiencyAnalyzeDto> equipmentEfficiencyAnalyze(@Param("equipmentIdList") List<String> equipmentIdList, @Param("month") String month); List<TeamEquEffDto> teamEquipmentEfficiencyAnalyze(@Param("equipmentIdList") List<String> equipmentIdList, @Param("month") String month); List<ComRateDto> comprehensiveRateAnalyze(@Param("equipmentIdList") List<String> equipmentIdList, @Param("start") String startStr, @Param("end") String endStr); List<ComShiftRateDto> comprehensiveShiftRateAnalyze(@Param("equipmentIdList") List<String> equipmentIdList, @Param("start") String startStr, @Param("end") String endStr, @Param("shiftId") String shiftId); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java
@@ -6,6 +6,7 @@ import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo; import java.math.BigDecimal; import java.util.List; /** * @author: LiuS @@ -24,4 +25,6 @@ BigDecimal findSpindleRunDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); MdcEquipmentStatisticalDto findByEquipmentAndMonth(@Param("equipmentId") String equipmentId, @Param("date") String date); List<MdcEquipmentStatisticalDto> findShiftByEquipmentAndMonth(@Param("equipmentId") String equipmentId, @Param("date") String date); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml
@@ -194,7 +194,7 @@ t2.utilization_rate AS shiftUtilizationRate FROM mdc_equipment_statistical_info_month t1 LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month AND t2.shift_type = 1 AND t1.equipment_id = t2.equipment_id LEFT JOIN mdc_equipment t3 ON t3.equipment_id = t1.equipment_id WHERE @@ -214,7 +214,7 @@ t2.utilization_rate AS shiftUtilizationRate FROM mdc_equipment_statistical_info_month t1 LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month AND t2.shift_type = 1 AND t1.equipment_id = t2.equipment_id LEFT JOIN mdc_equipment t3 ON t3.equipment_id = t1.equipment_id WHERE @@ -224,4 +224,51 @@ </foreach> AND t1.the_month = #{month} </select> <select id="comprehensiveRateAnalyze" resultType="org.jeecg.modules.mdc.dto.ComRateDto"> SELECT t1.the_month AS theMonth, AVG ( t1.utilization_rate ) AS utilizationRate, AVG ( t2.utilization_rate ) AS shiftUtilizationRate, SUM ( t1.process_long ) AS processLong FROM mdc_equipment_statistical_info_month t1 LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month AND t1.equipment_id = t2.equipment_id AND t2.shift_type = 1 LEFT JOIN mdc_equipment t3 ON t3.equipment_id = t1.equipment_id WHERE t1.equipment_id IN <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=","> #{id} </foreach> AND t1.the_month BETWEEN #{start} AND #{end} GROUP BY t1.the_month ORDER BY t1.the_month </select> <select id="comprehensiveShiftRateAnalyze" resultType="org.jeecg.modules.mdc.dto.ComShiftRateDto"> SELECT t1.the_month AS theMonth, t1.shift_sub AS shiftSub, t2.shift_sub_name AS shiftSubName, AVG ( t1.utilization_rate ) AS utilizationRate FROM mdc_equipment_statistical_shift_info_month t1 LEFT JOIN mdc_shift_sub t2 ON t1.shift_sub = t2.id WHERE t2.shift_id = #{shiftId} AND t1.equipment_id IN <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=","> #{id} </foreach> AND t1.the_month BETWEEN #{start} AND #{end} AND t1.shift_type = 2 GROUP BY t1.the_month, t1.shift_sub, t2.shift_sub_name </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml
@@ -25,10 +25,26 @@ SUM(wait_long) waitLong, SUM(process_long) processLong, SUM(error_long) errorLong, SUM ( total_long ) totalLong SUM(total_long) totalLong FROM mdc_equipment_statistical_shift_info WHERE equipment_id = #{equipmentId} AND the_date LIKE CONCAT(#{date}, '%') </select> <select id="findShiftByEquipmentAndMonth" resultType="org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto"> SELECT shift_sub_id shiftSubId, SUM(open_long) openLong, SUM(close_long) closeLong, SUM(wait_long) waitLong, SUM(process_long) processLong, SUM(error_long) errorLong, SUM(total_long) totalLong FROM mdc_equipment_statistical_shift_info WHERE equipment_id = #{equipmentId} AND the_date LIKE CONCAT(#{date}, '%') GROUP BY shift_sub_id </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java
@@ -5,6 +5,7 @@ import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo; import java.math.BigDecimal; import java.util.List; /** * @Description: 设å¤åæ¥ç次è¿è¡æ°æ®è¡¨ @@ -30,4 +31,6 @@ BigDecimal findSpindleRunDuration(String equipmentId, String validDate); MdcEquipmentStatisticalDto findByEquipmentAndMonth(String equipmentId, String date); List<MdcEquipmentStatisticalDto> findShiftByEquipmentAndMonth(String equipmentId, String date); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java
@@ -109,4 +109,6 @@ Map<String, Object> teamEquipmentEfficiencyAnalyze(String userId, EquEffVo equEffVo); Map<String, Object> teamEfficiencyAnalyzeByMonth(String userId, EquEffVo equEffVo); Map<String, Object> comprehensiveRateAnalyze(String userId, EquEffVo vo); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
@@ -1931,6 +1931,129 @@ return result; } @Override public Map<String, Object> comprehensiveRateAnalyze(String userId, EquEffVo vo) { Map<String, Object> result = new HashMap<>(); // 1. æ¥æå¤ç LocalDate now = LocalDate.now(); Date start = DateUtils.toDate(now.plusMonths(-12).toString(), DateUtils.STR_DATE); Date end = DateUtils.toDate(now.plusMonths(-1).toString(), DateUtils.STR_DATE); List<String> monthBetween = DateUtils.getMonthBetween(start, end); List<String> dateList = monthBetween.stream() .map(date -> date.substring(date.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "æ") .collect(Collectors.toList()); result.put("dateList", dateList); // 1. å¤çç产ID List<String> mdcProductionIds = StringUtils.isBlank(vo.getProductionIds()) ? Collections.singletonList(vo.getProductionId()) : Arrays.asList(vo.getProductionIds().split(",")); List<String> allProductionIds = mdcProductionService.findChildren(mdcProductionIds); if (allProductionIds.isEmpty()) { return result; // æåè¿åç©ºç»æ } //æ°æ®æéè¿æ»¤ allProductionIds = mdcProductionService.findProIdsByUId(userId, allProductionIds); // 2. è·å设å¤å表 List<MdcEquipment> equipmentList = StringUtils.isNotBlank(vo.getEquipmentType()) ? mdcEquipmentService.findByProIdsAndType(allProductionIds, Arrays.asList(vo.getEquipmentType().split(","))) : mdcEquipmentService.findByProductionIds(allProductionIds); if (equipmentList.isEmpty()) { return result; } // 3. æ°æ®å¤ç List<String> equipmentIdList = equipmentList.stream() .map(MdcEquipment::getEquipmentId) .collect(Collectors.toList()); String startStr = monthBetween.get(0).replaceAll("-", ""); String endStr = monthBetween.get(monthBetween.size() - 1).replaceAll("-", ""); List<ComRateDto> comRateDtoList = mdcEfficiencyReportMapper.comprehensiveRateAnalyze(equipmentIdList, startStr, endStr); if (comRateDtoList.isEmpty()) { return result; // æåè¿åç©ºç»æ } List<ComRateDto> dataList = new ArrayList<>(); Map<String, ComRateDto> map = comRateDtoList.stream().collect(Collectors.toMap(ComRateDto::getTheMonth, comRateDto -> comRateDto)); monthBetween.forEach(date -> { String d = date.replaceAll("-", ""); String month = date.substring(date.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "æ"; if (map.containsKey(d)) { ComRateDto comRateDto = map.get(d); comRateDto.setTheMonth(month); comRateDto.setUtilizationRate(comRateDto.getUtilizationRate().setScale(2, RoundingMode.HALF_UP)); comRateDto.setShiftUtilizationRate(comRateDto.getShiftUtilizationRate() != null ? comRateDto.getShiftUtilizationRate().setScale(2, RoundingMode.HALF_UP) : BigDecimal.ZERO); comRateDto.setAmendUtilizationRate(comRateDto.getAmendUtilizationRate().setScale(2, RoundingMode.HALF_UP)); comRateDto.setProcessLong(comRateDto.getProcessLong().divide(new BigDecimal("3600"), 2, RoundingMode.HALF_UP)); dataList.add(comRateDto); } else { ComRateDto comRateDto = new ComRateDto(); comRateDto.setTheMonth(month); dataList.add(comRateDto); } }); result.put("dataList", dataList); if (StringUtils.isNotBlank(vo.getShiftId())) { List<MdcShiftSub> shiftSubList = mdcShiftSubService.list(new LambdaQueryWrapper<MdcShiftSub>().eq(MdcShiftSub::getShiftId, vo.getShiftId())); if (shiftSubList == null || shiftSubList.isEmpty()) { return result; } List<String> shiftSubNameList = shiftSubList.stream().map(MdcShiftSub::getShiftSubName).collect(Collectors.toList()); result.put("shiftSubList", shiftSubNameList); List<ComShiftRateDto> comShiftRateDtoList = mdcEfficiencyReportMapper.comprehensiveShiftRateAnalyze(equipmentIdList, startStr, endStr, vo.getShiftId()); Map<String, List<ComShiftRateDto>> groupMap; if (comShiftRateDtoList != null && !comShiftRateDtoList.isEmpty()) { groupMap = comShiftRateDtoList.stream().collect(Collectors.groupingBy(ComShiftRateDto::getShiftSub)); } else { groupMap = new HashMap<>(); } List<ComShiftDto> shiftDataList = new ArrayList<>(); shiftSubList.forEach(mdcShiftSub -> { ComShiftDto comShiftDto = new ComShiftDto(); comShiftDto.setShiftSubName(mdcShiftSub.getShiftSubName()); if (groupMap.containsKey(mdcShiftSub.getId())) { List<ComShiftRateDto> csrd = groupMap.get(mdcShiftSub.getId()); Map<String, ComShiftRateDto> collect = csrd.stream().collect(Collectors.toMap(ComShiftRateDto::getTheMonth, comShiftRateDto -> comShiftRateDto)); List<ComShiftChildDto> comShiftChildDtoList = new ArrayList<>(); monthBetween.forEach(date -> { String d = date.replaceAll("-", ""); String month = date.substring(date.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "æ"; if (collect.containsKey(d)) { ComShiftRateDto comShiftRateDto = collect.get(d); ComShiftChildDto comShiftChildDto = new ComShiftChildDto(); comShiftChildDto.setMonth(month); comShiftChildDto.setUtilizationRate(comShiftRateDto.getUtilizationRate().setScale(2, RoundingMode.HALF_UP)); comShiftChildDtoList.add(comShiftChildDto); } else { ComShiftChildDto comShiftChildDto = new ComShiftChildDto(); comShiftChildDto.setMonth(month); comShiftChildDtoList.add(comShiftChildDto); } }); comShiftDto.setDataList(comShiftChildDtoList); } else { List<ComShiftChildDto> comShiftChildDtoList = new ArrayList<>(); monthBetween.forEach(date -> { String month = date.substring(date.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "æ"; ComShiftChildDto comShiftChildDto = new ComShiftChildDto(); comShiftChildDto.setMonth(month); comShiftChildDtoList.add(comShiftChildDto); }); comShiftDto.setDataList(comShiftChildDtoList); } shiftDataList.add(comShiftDto); }); result.put("shiftDataList", shiftDataList); } return result; } // æåçå¹³åå¼è®¡ç®æ¹æ³ private TeamEquEffDto calculateAverages(List<TeamEquEffDto> items) { BigDecimal size = new BigDecimal(items.size()); lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java
@@ -99,6 +99,11 @@ return this.baseMapper.findByEquipmentAndMonth(equipmentId, date); } @Override public List<MdcEquipmentStatisticalDto> findShiftByEquipmentAndMonth(String equipmentId, String date) { return this.baseMapper.findShiftByEquipmentAndMonth(equipmentId, date); } @Transactional(readOnly = true) public List<MdcEquipmentStatisticalShiftInfo> equipmentShiftStatisticalProcess(Equipment equipment, String dateTime) { Date initDate = null; lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/EquEffVo.java
@@ -23,6 +23,14 @@ */ private String teamCodes; /** * 设å¤ç±»å */ private String equipmentType; /** * çå¶id */ private String shiftId; /** * æä»½ */ private String month;