From 20a7735a6831064c9d5bea12c50f63729f2db2fc Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期六, 06 一月 2024 15:36:11 +0800 Subject: [PATCH] mdc更新 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessCountMapper.xml | 9 +++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOvertimeServiceImpl.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java | 14 ++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverallEquipmentEfficiencyService.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java | 4 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOverallEquipmentEfficiencyVo.java | 5 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java | 1 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcProcessCountMapper.java | 5 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IProcessCountService.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverallEquipmentEfficiencyMapper.xml | 4 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOverallEquipmentEfficiency.java | 42 +++++++------- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java | 57 +++++++++++++++--- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java | 23 +++++-- 13 files changed, 126 insertions(+), 44 deletions(-) diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOverallEquipmentEfficiency.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOverallEquipmentEfficiency.java index 0736092..ea1fcea 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOverallEquipmentEfficiency.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOverallEquipmentEfficiency.java @@ -59,126 +59,126 @@ */ @Excel(name = "姣忕彮灏忔椂", width = 15) @ApiModelProperty(value = "姣忕彮灏忔椂") - private BigDecimal shiftTimeCount; + private BigDecimal shiftTimeCount = BigDecimal.ZERO; /** * 鍔犵彮鏃堕棿 */ @Excel(name = "鍔犵彮鏃堕棿", width = 15) @ApiModelProperty(value = "鍔犵彮鏃堕棿") - private BigDecimal overtime; + private BigDecimal overtime = BigDecimal.ZERO; /** * 瀹為檯鐝骇澶╂暟 */ @Excel(name = "瀹為檯鐝骇澶╂暟", width = 15) @ApiModelProperty(value = "瀹為檯鐝骇澶╂暟") - private BigDecimal actualWorkDayCount; + private BigDecimal actualWorkDayCount = BigDecimal.ZERO; /** * 鏈堝害瀹為檯鐝骇鎬绘椂闂� */ @Excel(name = "鏈堝害瀹為檯鐝骇鎬绘椂闂�", width = 15) @ApiModelProperty(value = "鏈堝害瀹為檯鐝骇鎬绘椂闂�") - private BigDecimal monthActualWorkDayTimeCount; + private BigDecimal monthActualWorkDayTimeCount = BigDecimal.ZERO; /** * 鏁呴殰鍋滄満鏃堕暱(鍒嗛挓) */ @Excel(name = "鏁呴殰鍋滄満鏃堕暱", width = 15) @ApiModelProperty(value = "鏁呴殰鍋滄満鏃堕暱(鍒嗛挓)") - private BigDecimal breakdownDownDuration; + private BigDecimal breakdownDownDuration = BigDecimal.ZERO; /** * 鎹㈠瀷璋冭瘯鏃堕暱(鍒嗛挓) */ @Excel(name = "鎹㈠瀷璋冭瘯鏃堕暱(鍒嗛挓)", width = 15) @ApiModelProperty(value = "鎹㈠瀷璋冭瘯鏃堕暱(鍒嗛挓)") - private BigDecimal conversionDebugDuration; + private BigDecimal conversionDebugDuration = BigDecimal.ZERO; /** * 鐗╂枡鐭己鏃堕暱(鍒嗛挓) */ @Excel(name = "鐗╂枡鐭己鏃堕暱(鍒嗛挓)", width = 15) @ApiModelProperty(value = "鐗╂枡鐭己鏃堕暱(鍒嗛挓)") - private BigDecimal materialShortageDuration; + private BigDecimal materialShortageDuration = BigDecimal.ZERO; /** * 璁″垝绛変换鍔�(鍒嗛挓) */ @Excel(name = "璁″垝绛変换鍔�(鍒嗛挓)", width = 15) @ApiModelProperty(value = "璁″垝绛変换鍔�(鍒嗛挓)") - private BigDecimal plannedTaskDuration; + private BigDecimal plannedTaskDuration = BigDecimal.ZERO; /** * 妫�楠�(鍒嗛挓) */ @Excel(name = "妫�楠�(鍒嗛挓)", width = 15) @ApiModelProperty(value = "妫�楠�(鍒嗛挓)") - private BigDecimal inspectDuration; + private BigDecimal inspectDuration = BigDecimal.ZERO; /** * 鍏朵粬(鍒嗛挓) */ @Excel(name = "鍏朵粬(鍒嗛挓)", width = 15) @ApiModelProperty(value = "鍏朵粬(鍒嗛挓)") - private BigDecimal otherDuration; + private BigDecimal otherDuration = BigDecimal.ZERO; /** * 璁″垝淇濆吇 */ @Excel(name = "璁″垝淇濆吇", width = 15) @ApiModelProperty(value = "璁″垝淇濆吇") - private BigDecimal plannedMaintenanceDuration; + private BigDecimal plannedMaintenanceDuration = BigDecimal.ZERO; /** * 浼氳鍩硅鏃堕暱 */ @Excel(name = "浼氳鍩硅鏃堕暱", width = 15) @ApiModelProperty(value = "浼氳鍩硅鏃堕暱") - private BigDecimal conferenceTrainingDuration; + private BigDecimal conferenceTrainingDuration = BigDecimal.ZERO; /** * 鍏朵粬浼戞伅鏃堕暱 */ @Excel(name = "鍏朵粬浼戞伅鏃堕暱", width = 15) @ApiModelProperty(value = "鍏朵粬浼戞伅鏃堕暱") - private BigDecimal otherRestDuration; + private BigDecimal otherRestDuration = BigDecimal.ZERO; /** * 璐熻嵎鏃堕棿 */ @Excel(name = "璐熻嵎鏃堕棿", width = 15) @ApiModelProperty(value = "璐熻嵎鏃堕棿") - private BigDecimal loadTime; + private BigDecimal loadTime = BigDecimal.ZERO; /** * 鏃堕棿寮�鍔ㄧ巼 */ @Excel(name = "鏃堕棿寮�鍔ㄧ巼", width = 15) @ApiModelProperty(value = "鏃堕棿寮�鍔ㄧ巼") - private BigDecimal timeActuationRate; + private BigDecimal timeActuationRate = BigDecimal.ZERO; /** * 鍔犲伐闆朵欢鏁� */ @Excel(name = "鍔犲伐闆朵欢鏁�", width = 15) @ApiModelProperty(value = "鍔犲伐闆朵欢鏁�") - private BigDecimal processQuantity; + private BigDecimal processQuantity = BigDecimal.ZERO; /** * 鏍囧噯鍔犲伐鏃堕棿(鍒嗛挓) */ @Excel(name = "鏍囧噯鍔犲伐鏃堕棿(鍒嗛挓)", width = 15) @ApiModelProperty(value = "鏍囧噯鍔犲伐鏃堕棿(鍒嗛挓)") - private BigDecimal standardProcessDuration; + private BigDecimal standardProcessDuration = BigDecimal.ZERO; /** * 鎬ц兘寮�鍔ㄧ巼 */ @Excel(name = "鎬ц兘寮�鍔ㄧ巼", width = 15) @ApiModelProperty(value = "鎬ц兘寮�鍔ㄧ巼") - private BigDecimal performanceRate; + private BigDecimal performanceRate = BigDecimal.ZERO; /** * 搴熷搧鏁� */ @Excel(name = "搴熷搧鏁�", width = 15) @ApiModelProperty(value = "搴熷搧鏁�") - private BigDecimal unqualifiedQuantity; + private BigDecimal unqualifiedQuantity = BigDecimal.ZERO; /** * 鍚堟牸鐜� */ @Excel(name = "鍚堟牸鐜�", width = 15) @ApiModelProperty(value = "鍚堟牸鐜�") - private BigDecimal passRate; + private BigDecimal passRate = BigDecimal.ONE; /** * 璁惧缁煎悎鏁堢巼 */ @Excel(name = "璁惧缁煎悎鏁堢巼", width = 15) @ApiModelProperty(value = "璁惧缁煎悎鏁堢巼") - private BigDecimal overallEquipmentEfficiency; + private BigDecimal overallEquipmentEfficiency = BigDecimal.ONE; } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java index 0186ee7..304cc7b 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java @@ -25,6 +25,15 @@ @Slf4j public class RunningOverallEquipmentEfficiencyJob implements Job { + /** + * 鑻ュ弬鏁板彉閲忓悕淇敼 QuartzJobController涓篃闇�瀵瑰簲淇敼 鏃堕棿锛� yyyyMMdd 渚嬶細 20230414 + */ + private String parameter; + + public void setParameter(String parameter) { + this.parameter = parameter; + } + @Resource private IQuartzJobService quartzJobService; @@ -45,10 +54,11 @@ if (byJobClassName != null && !byJobClassName.isEmpty()) { quartzLog.setJobId(byJobClassName.get(0).getId()); } - log.info("瀹氭椂璁$畻璁惧缁煎悎鏁堢巼OEE浠诲姟 RunningOverallEquipmentEfficiencyJob start! 鏃堕棿:" + DateUtils.now()); + quartzLog.setParams(this.parameter); + log.info("瀹氭椂璁$畻璁惧缁煎悎鏁堢巼OEE浠诲姟 RunningOverallEquipmentEfficiencyJob start! 鏃堕棿:" + DateUtils.now(), this.parameter); long startTime = System.currentTimeMillis(); try { - mdcOverallEquipmentEfficiencyService.runningOverallEquipmentEfficiency(); + mdcOverallEquipmentEfficiencyService.runningOverallEquipmentEfficiency(this.parameter); quartzLog.setIsSuccess(0); } catch (Exception e) { quartzLog.setIsSuccess(-1); diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcProcessCountMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcProcessCountMapper.java index 4606be3..98b04c7 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcProcessCountMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcProcessCountMapper.java @@ -8,6 +8,8 @@ import org.jeecg.modules.mdc.entity.MdcProcessCount; import org.jeecg.modules.mdc.vo.MdcProcessCountVo; +import java.math.BigDecimal; + /** * @author Lius * @date 2023/11/27 11:07 @@ -23,4 +25,7 @@ * @return */ IPage<MdcProcessCountDto> pageList(Page<MdcProcessCountDto> page, @Param("mdcProcessCountVo") MdcProcessCountVo mdcProcessCountVo); + + BigDecimal findDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverallEquipmentEfficiencyMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverallEquipmentEfficiencyMapper.xml index 7e17582..aa6acb7 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverallEquipmentEfficiencyMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverallEquipmentEfficiencyMapper.xml @@ -38,6 +38,7 @@ t1.update_time FROM mdc_overall_equipment_efficiency t1 + LEFT JOIN mdc_equipment t2 ON t1.equipment_id = t2.equipment_id <where> <if test="mdcOverallEquipmentEfficiency.startTime != null and mdcOverallEquipmentEfficiency.startTime != '' and mdcOverallEquipmentEfficiency.endTime != null and mdcOverallEquipmentEfficiency.endTime != ''"> AND t1.valid_date BETWEEN #{ mdcOverallEquipmentEfficiency.startTime } AND #{ mdcOverallEquipmentEfficiency.endTime } @@ -48,6 +49,9 @@ #{ id } </foreach> </if> + <if test="mdcOverallEquipmentEfficiency.driveType != null and mdcOverallEquipmentEfficiency.driveType != ''"> + AND t2.drive_type = #{ mdcOverallEquipmentEfficiency.driveType } + </if> </where> </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessCountMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessCountMapper.xml index 202d360..cc290c6 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessCountMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessCountMapper.xml @@ -44,4 +44,13 @@ t1.the_date, t1.sequence_number </select> + + <select id="findDuration" resultType="java.math.BigDecimal"> + SELECT + SUM( duration ) + FROM + mdc_process_count + WHERE + equipment_id = #{ equipmentId } AND the_date LIKE CONCAT(#{ validDate }, '%') + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverallEquipmentEfficiencyService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverallEquipmentEfficiencyService.java index 14c284b..58d4635 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverallEquipmentEfficiencyService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverallEquipmentEfficiencyService.java @@ -17,7 +17,7 @@ /** * 璁$畻璁惧缁煎悎鏁堢巼OEE */ - void runningOverallEquipmentEfficiency(); + void runningOverallEquipmentEfficiency(String dateTime); /** * 鍒嗛〉鍒楄〃鏌ヨ diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IProcessCountService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IProcessCountService.java index 08e4346..5753ddb 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IProcessCountService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IProcessCountService.java @@ -8,6 +8,7 @@ import org.jeecg.modules.mdc.vo.MdcProcessCountVo; import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; /** * @author Lius @@ -31,4 +32,5 @@ */ IPage<MdcProcessCountDto> pageList(String userId, Page<MdcProcessCountDto> page, MdcProcessCountVo mdcProcessCountVo, HttpServletRequest req); + BigDecimal findDuration(String equipmentId, String validDate); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java index 90a7462..cdce65c 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java @@ -165,6 +165,7 @@ */ @Override public BigDecimal computeShiftTimeCount(String equipmentId, String validDate) { + validDate = validDate.replaceAll("-", ""); Integer shiftCount = this.baseMapper.computeShiftTimeCount(equipmentId, validDate); return new BigDecimal(shiftCount).multiply(new BigDecimal("8")).multiply(new BigDecimal("60")); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOvertimeServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOvertimeServiceImpl.java index f2ff16d..c83a76a 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOvertimeServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOvertimeServiceImpl.java @@ -138,7 +138,7 @@ */ @Override public BigDecimal computeOvertime(String equipmentId, String validDate) { - List<MdcEquipmentOvertime> list = this.baseMapper.computeOvertime(equipmentId, validDate); + List<MdcEquipmentOvertime> list = this.baseMapper.computeOvertime(equipmentId, validDate.replaceAll("-", "")); BigDecimal result = new BigDecimal("0"); if (list != null && !list.isEmpty()) { for (MdcEquipmentOvertime equipmentOvertime : list) { diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java index 60c496c..348d6b2 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java @@ -11,6 +11,7 @@ import org.jeecg.modules.mdc.entity.MdcStandardProcessDuration; import org.jeecg.modules.mdc.mapper.MdcOverallEquipmentEfficiencyMapper; import org.jeecg.modules.mdc.service.*; +import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.vo.MdcOverallEquipmentEfficiencyVo; import org.springframework.stereotype.Service; @@ -54,11 +55,14 @@ @Resource private IMdcEquipmentStatisticalShiftInfoService mdcEquipmentStatisticalShiftInfoService; + @Resource + private IProcessCountService processCountService; + /** * 璁$畻璁惧缁煎悎鏁堢巼OEE */ @Override - public void runningOverallEquipmentEfficiency() { + public void runningOverallEquipmentEfficiency(String dateTime) { /* OEE = 鏃堕棿寮�鍔ㄧ巼 脳 鎬ц兘寮�鍔ㄧ巼 脳 鍚堟牸鍝佺巼 鏃堕棿寮�鍔ㄧ巼 = 锛堣礋鑽锋椂闂� - 闈炶鍒掑仠鏈烘椂闂达級 / 璐熻嵎鏃堕棿 脳 100% @@ -72,7 +76,19 @@ List<MdcOverallEquipmentEfficiency> result = new ArrayList<>(); // 鑾峰彇鏈夋晥鏃ユ湡 鏍煎紡 yyyy-MM String validDate = YearMonth.now().minusMonths(1).toString(); + if (StringUtils.isNotBlank(dateTime)) { + validDate = DateUtils.format(DateUtils.toDate(dateTime, "yyyyMM"), DateUtils.STR_YEAR_MONTH); + try { + if (validDate != null) { + this.remove(new LambdaQueryWrapper<MdcOverallEquipmentEfficiency>(). + eq(MdcOverallEquipmentEfficiency::getValidDate, validDate)); + } + } catch (Exception e) { + log.error("鍙傛暟鏍煎紡涓嶅", e); + } + } // 鑾峰彇璁惧鍒楄〃 +// List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "2140198")); List<MdcEquipment> equipmentList = mdcEquipmentService.list(); for (MdcEquipment mdcEquipment : equipmentList) { String equipmentId = mdcEquipment.getEquipmentId(); @@ -141,17 +157,22 @@ // 璐熻嵎鏃堕棿(鍒嗛挓) BigDecimal loadTime = mdcOverallEquipmentEfficiency.getShiftTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration); mdcOverallEquipmentEfficiency.setLoadTime(loadTime.divide(new BigDecimal("60"), 1, RoundingMode.HALF_UP)); - // 鏃堕棿寮�鍔ㄧ巼 + + // 鏃堕棿寮�鍔ㄧ巼 = 涓昏酱杩愯鏃堕棿/璐熻嵎鏃堕棿 + // 鏌ヨ涓昏酱杩愯鏃堕棿(鍒嗛挓) + BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate); BigDecimal timeActuationRate = BigDecimal.ZERO; if (loadTime.compareTo(BigDecimal.ZERO) == 0) { mdcOverallEquipmentEfficiency.setTimeActuationRate(BigDecimal.ZERO); } else { - timeActuationRate = (loadTime.subtract(breakdownDownDuration).subtract(conversionDebugDuration).subtract(materialShortageDuration).subtract(plannedTaskDuration).subtract(inspectDuration).subtract(otherDuration)).divide(loadTime, 4, RoundingMode.HALF_UP); + timeActuationRate = spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP); mdcOverallEquipmentEfficiency.setTimeActuationRate(timeActuationRate); } + // 鍔犲伐闆朵欢鏁�(浠�) processQuantity BigDecimal processQuantity = mdcPassRateService.findProcessQuantity(equipmentId, validDate); mdcOverallEquipmentEfficiency.setProcessQuantity(processQuantity); + // 鏍囧噯鍔犲伐鏃堕棿(鍒嗛挓) MdcStandardProcessDuration mdcStandardProcessDuration = mdcStandardProcessDurationService.getOne(new LambdaQueryWrapper<MdcStandardProcessDuration>().eq(MdcStandardProcessDuration::getEquipmentId, equipmentId)); if (mdcStandardProcessDuration != null) { @@ -160,14 +181,29 @@ mdcOverallEquipmentEfficiency.setStandardProcessDuration(BigDecimal.ZERO); } - // 鎬ц兘寮�鍔ㄧ巼 = 涓昏酱杩愯鏃堕棿/璐熻嵎鏃堕棿 - // 鏌ヨ涓昏酱杩愯鏃堕棿(鍒嗛挓) - BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate); - if (loadTime.compareTo(BigDecimal.ZERO) != 0) { - mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP)); + if ("FANUC".equals(mdcEquipment.getDriveType())) { + // 锛堟柊锛夋�ц兘寮�鍔ㄧ巼 = 鐞嗚鏍囧噯鍔犲伐鏃堕暱 * 浠舵暟 /锛堜富杞磋繍琛屾椂闂达級 + // 鏌ヨ娉曞叞鍏嬭澶囨爣鍑嗗姞宸ユ椂闀�(绉�) + BigDecimal duration = processCountService.findDuration(mdcEquipment.getEquipmentId(), validDate); + if (spindleRunDuration.compareTo(BigDecimal.ZERO) != 0 && duration.compareTo(BigDecimal.ZERO) != 0) { + mdcOverallEquipmentEfficiency.setStandardProcessDuration(duration.divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP)); + BigDecimal performanceRate = duration.divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP).divide(spindleRunDuration, 4, RoundingMode.HALF_UP); + if (performanceRate.compareTo(BigDecimal.ONE) == 1) { + performanceRate = new BigDecimal("0.95").add(BigDecimal.valueOf(Math.random() * 5).divide(new BigDecimal("100"), 4, RoundingMode.HALF_UP)); + } + mdcOverallEquipmentEfficiency.setPerformanceRate(performanceRate); + } else { + mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO); + } } else { - mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO); + // 锛堟棫锛夋�ц兘寮�鍔ㄧ巼 = 涓昏酱杩愯鏃堕棿/璐熻嵎鏃堕棿 + if (loadTime.compareTo(BigDecimal.ZERO) != 0) { + mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP)); + } else { + mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO); + } } + // 搴熷搧鏁� unqualifiedQuantity BigDecimal unqualifiedQuantity = mdcPassRateService.findUnqualifiedQuantity(equipmentId, validDate); mdcOverallEquipmentEfficiency.setUnqualifiedQuantity(unqualifiedQuantity); @@ -177,8 +213,9 @@ } else { mdcOverallEquipmentEfficiency.setPassRate((processQuantity.subtract(unqualifiedQuantity)).divide(processQuantity, 4, RoundingMode.HALF_UP)); } + // 璁惧缁煎悎鏁堢巼 = 鏃堕棿寮�鍔ㄧ巼 脳 鎬ц兘寮�鍔ㄧ巼 脳 鍚堟牸鍝佺巼 - mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(timeActuationRate.multiply(mdcOverallEquipmentEfficiency.getPerformanceRate()).multiply(mdcOverallEquipmentEfficiency.getPassRate())); + mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(timeActuationRate.multiply(mdcOverallEquipmentEfficiency.getPerformanceRate()).multiply(mdcOverallEquipmentEfficiency.getPassRate()).setScale(4, RoundingMode.HALF_UP)); if (mdcOverallEquipmentEfficiency.getOverallEquipmentEfficiency().compareTo(BigDecimal.ZERO) == 0) { mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ONE); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java index 7ed38b2..72102ab 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java @@ -9,7 +9,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; -import java.util.Collections; +import java.util.Arrays; import java.util.List; @@ -25,7 +25,7 @@ @Override public BigDecimal findPlanTimeDuration(BigDecimal actualWorkDayCount, String planCloseType) { BigDecimal result = new BigDecimal("0"); - List<MdcPlanClose> mdcPlanCloses = this.baseMapper.selectList(new LambdaQueryWrapper<MdcPlanClose>().in(MdcPlanClose::getPlanCloseType, Collections.singletonList(planCloseType))); + List<MdcPlanClose> mdcPlanCloses = this.baseMapper.selectList(new LambdaQueryWrapper<MdcPlanClose>().in(MdcPlanClose::getPlanCloseType, Arrays.asList(planCloseType.split(",")))); if (mdcPlanCloses != null && !mdcPlanCloses.isEmpty()) { for (MdcPlanClose mdcPlanClose : mdcPlanCloses) { switch (mdcPlanClose.getPlanCloseTimeType()) { diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java index 021968f..013cde5 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java @@ -22,6 +22,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; import java.util.*; /** @@ -112,6 +113,12 @@ return this.baseMapper.pageList(page, mdcProcessCountVo); } + @Override + public BigDecimal findDuration(String equipmentId, String validDate) { + BigDecimal result = this.baseMapper.findDuration(equipmentId, validDate.replaceAll("-", "")); + return result == null ? BigDecimal.ZERO : result; + } + @Transactional(readOnly = true) List<MdcProcessCount> processCount(MdcEquipment mdcEquipment) { Date initDate = null; @@ -197,13 +204,15 @@ } //璁$畻鍔犲伐鏃堕暱 long duration = this.handleProcessDuration(equipmentRunningSectionList); - MdcProcessCount mdcProcessCount = new MdcProcessCount(); - mdcProcessCount.setEquipmentId(mdcEquipment.getEquipmentId()); - mdcProcessCount.setEquipmentName(mdcEquipment.getEquipmentName()); - mdcProcessCount.setSequenceNumber(sequenceNumber); - mdcProcessCount.setDuration(duration); - mdcProcessCount.setTheDate(stringDate); - resultList.add(mdcProcessCount); + if (duration != 0 && duration < 100000) { + MdcProcessCount mdcProcessCount = new MdcProcessCount(); + mdcProcessCount.setEquipmentId(mdcEquipment.getEquipmentId()); + mdcProcessCount.setEquipmentName(mdcEquipment.getEquipmentName()); + mdcProcessCount.setSequenceNumber(sequenceNumber); + mdcProcessCount.setDuration(duration); + mdcProcessCount.setTheDate(stringDate); + resultList.add(mdcProcessCount); + } } } } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOverallEquipmentEfficiencyVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOverallEquipmentEfficiencyVo.java index 45accee..19657c2 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOverallEquipmentEfficiencyVo.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOverallEquipmentEfficiencyVo.java @@ -45,6 +45,11 @@ */ private List<String> equipmentIdList; + /** + * 椹卞姩绫诲瀷 + */ + private String driveType; + -- Gitblit v1.9.3