lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java
@@ -51,4 +51,10 @@ */ public static final String OTHER_REST = "休息用餐,预防性维修"; public static final String DAY = "天"; public static final String WEEK = "周"; public static final String MONTH = "月"; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOverallEquipmentEfficiency.java
@@ -50,10 +50,10 @@ @ApiModelProperty(value = "有效日期") private String validDate; /** * 班次id * 班次 */ @ApiModelProperty(value = "班次id") private String shiftSubId; @ApiModelProperty(value = "班次") private String shift; /** * 每班小时 */ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java
@@ -23,9 +23,9 @@ List<MdcDeviceCalendarVo> findAcquiesceShift(); List<String> computeActualWorkDayCount(@Param("shiftSubId") String shiftSubId, @Param("equipmentId") String equipmentId, @Param("validDate") String validDate); List<String> computeActualWorkDayCount(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); List<String> findShiftSort(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); Integer computeShiftTimeCount(@Param("shiftSubId") String shiftSubId, @Param("equipmentId") String equipmentId, @Param("validDate") String validDate); Integer computeShiftTimeCount(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentOvertimeMapper.java
@@ -40,5 +40,5 @@ * @param validDate * @return */ List<MdcEquipmentOvertime> computeOvertime(@Param("shiftSubId") String shiftSubId, @Param("equipmentId") String equipmentId, @Param("validDate") String validDate); List<MdcEquipmentOvertime> computeOvertime(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java
@@ -20,5 +20,5 @@ */ MdcEquipmentStatisticalShiftInfo getMaxStaticsData(@Param("equipmentId") String equipmentid); BigDecimal findSpindleRunDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate, @Param("shiftSubId") String shiftSubId); BigDecimal findSpindleRunDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml
@@ -93,18 +93,17 @@ WHERE effective_date LIKE CONCAT(#{ validDate }, '%') AND equipment_id = #{ equipmentId } AND shift_sub_id = #{ shiftSubId } </select> <!--查询班次分类--> <select id="findShiftSort" resultType="java.lang.String"> SELECT DISTINCT shift_sub_id SELECT DISTINCT t2.shift_name FROM mdc_device_calendar mdc_device_calendar t1 LEFT JOIN mdc_shift t2 ON t1.shift_id = t2.id WHERE effective_date LIKE CONCAT(#{ validDate }, '%') AND equipment_id = #{ equipmentId } t1.effective_date LIKE CONCAT(#{ validDate }, '%') AND t1.equipment_id = #{ equipmentId } </select> <!--查询班次数量--> @@ -116,7 +115,6 @@ WHERE effective_date LIKE CONCAT(#{ validDate }, '%') AND equipment_id = #{ equipmentId } AND shift_sub_id = #{ shiftSubId } </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOvertimeMapper.xml
@@ -88,6 +88,5 @@ WHERE mdc.effective_date LIKE CONCAT(#{ validDate }, '%') AND mdc.equipment_id = #{ equipmentId } AND mdc.shift_sub_id = #{ shiftSubId } </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml
@@ -15,7 +15,6 @@ mdc_equipment_statistical_shift_info WHERE equipment_id = #{ equipmentId } AND shift_sub_id = #{ shiftSubId } AND the_date LIKE CONCAT(#{ validDate },'%') </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverallEquipmentEfficiencyMapper.xml
@@ -10,7 +10,7 @@ t1.equipment_name, t1.equipment_model, t1.valid_date, t2.shift_sub_name shiftSubId, t1.shift, t1.shift_time_count, t1.overtime, t1.actual_work_day_count, @@ -37,17 +37,10 @@ t1.update_by, t1.update_time FROM mdc_overall_equipment_efficiency t1 LEFT JOIN mdc_shift_sub t2 ON t1.shift_sub_id = t2.id LEFT JOIN mdc_shift t3 ON t2.shift_id = t3.id mdc_overall_equipment_efficiency t1 <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 } </if> <if test="mdcOverallEquipmentEfficiency.shiftId != null and mdcOverallEquipmentEfficiency.shiftId != ''"> AND t3.id = #{ mdcOverallEquipmentEfficiency.shiftId } </if> <if test="mdcOverallEquipmentEfficiency.shiftSubId != null and mdcOverallEquipmentEfficiency.shiftSubId != ''"> AND t1.shift_sub_id = #{ mdcOverallEquipmentEfficiency.shiftSubId } </if> <if test="mdcOverallEquipmentEfficiency.equipmentIdList != null and mdcOverallEquipmentEfficiency.equipmentIdList.size() > 0 "> AND t1.equipment_id IN lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java
@@ -41,12 +41,11 @@ /** * 计算实际班产天数 * * @param shiftSubId * @param equipmentId * @param validDate * @return */ BigDecimal computeActualWorkDayCount(String shiftSubId, String equipmentId, String validDate); BigDecimal computeActualWorkDayCount(String equipmentId, String validDate); /** * 查询班次分类 @@ -60,12 +59,11 @@ /** * 计算班次时间 * * @param shiftSubId * @param equipmentId * @param validDate * @return */ BigDecimal computeShiftTimeCount(String shiftSubId, String equipmentId, String validDate); BigDecimal computeShiftTimeCount(String equipmentId, String validDate); /** * 生成设备工作日历 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentOvertimeService.java
@@ -41,10 +41,9 @@ /** * 计算加班时间 * * @param shiftSubId * @param equipmentId * @param validDate * @return */ BigDecimal computeOvertime(String shiftSubId, String equipmentId, String validDate); BigDecimal computeOvertime(String equipmentId, String validDate); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java
@@ -24,9 +24,8 @@ * * @param equipmentId * @param validDate * @param shiftSubId * @return */ BigDecimal findSpindleRunDuration(String equipmentId, String validDate, String shiftSubId); BigDecimal findSpindleRunDuration(String equipmentId, String validDate); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPlanCloseService.java
@@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.mdc.entity.MdcPlanClose; import java.math.BigDecimal; /** * @Description: mdc计划停机维护表 * @Author: Lius @@ -11,4 +13,5 @@ */ public interface IMdcPlanCloseService extends IService<MdcPlanClose> { BigDecimal findPlanTimeDuration(BigDecimal actualWorkDayCount, String planCloseType); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java
@@ -146,15 +146,14 @@ /** * 计算实际班产天数 * * @param shiftSubId * @param equipmentId * @param validDate * @return */ @Override public BigDecimal computeActualWorkDayCount(String shiftSubId, String equipmentId, String validDate) { public BigDecimal computeActualWorkDayCount(String equipmentId, String validDate) { validDate = validDate.replaceAll("-", ""); List<String> validDateList = this.baseMapper.computeActualWorkDayCount(shiftSubId, equipmentId, validDate); List<String> validDateList = this.baseMapper.computeActualWorkDayCount(equipmentId, validDate); return new BigDecimal(validDateList.size()); } @@ -174,14 +173,13 @@ /** * 计算班次时间 * * @param shiftSubId * @param equipmentId * @param validDate * @return */ @Override public BigDecimal computeShiftTimeCount(String shiftSubId, String equipmentId, String validDate) { Integer shiftCount = this.baseMapper.computeShiftTimeCount(shiftSubId, equipmentId, validDate); public BigDecimal computeShiftTimeCount(String equipmentId, String validDate) { Integer shiftCount = this.baseMapper.computeShiftTimeCount(equipmentId, validDate); return new BigDecimal(shiftCount).multiply(new BigDecimal("8")).multiply(new BigDecimal("60")); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOvertimeServiceImpl.java
@@ -132,14 +132,13 @@ /** * 计算加班时间(分钟) * * @param shiftSubId * @param equipmentId * @param validDate * @return */ @Override public BigDecimal computeOvertime(String shiftSubId, String equipmentId, String validDate) { List<MdcEquipmentOvertime> list = this.baseMapper.computeOvertime(shiftSubId, equipmentId, validDate); public BigDecimal computeOvertime(String equipmentId, String validDate) { List<MdcEquipmentOvertime> list = this.baseMapper.computeOvertime(equipmentId, validDate); BigDecimal result = new BigDecimal("0"); if (list != null && !list.isEmpty()) { for (MdcEquipmentOvertime equipmentOvertime : list) { lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java
@@ -84,9 +84,9 @@ * @return */ @Override public BigDecimal findSpindleRunDuration(String equipmentId, String validDate, String shiftSubId) { public BigDecimal findSpindleRunDuration(String equipmentId, String validDate) { validDate = validDate.replaceAll("-", ""); BigDecimal duration = this.baseMapper.findSpindleRunDuration(equipmentId, validDate, shiftSubId); BigDecimal duration = this.baseMapper.findSpindleRunDuration(equipmentId, validDate); if (duration != null && duration.compareTo(BigDecimal.ZERO) != 0) { return duration.divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP); } else { lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java
@@ -76,117 +76,114 @@ List<MdcEquipment> equipmentList = mdcEquipmentService.list(); for (MdcEquipment mdcEquipment : equipmentList) { String equipmentId = mdcEquipment.getEquipmentId(); // 查询班次分类 MdcOverallEquipmentEfficiency mdcOverallEquipmentEfficiency = new MdcOverallEquipmentEfficiency(); // 时间开动率计算 mdcOverallEquipmentEfficiency.setEquipmentId(equipmentId); mdcOverallEquipmentEfficiency.setEquipmentName(mdcEquipment.getEquipmentName()); mdcOverallEquipmentEfficiency.setEquipmentModel(mdcEquipment.getEquipmentModel()); mdcOverallEquipmentEfficiency.setValidDate(validDate); // 查询班制分类 List<String> shiftSubIdList = mdcDeviceCalendarService.findShiftSort(equipmentId, validDate); if (shiftSubIdList != null && !shiftSubIdList.isEmpty()) { String shift = String.join(",", shiftSubIdList); mdcOverallEquipmentEfficiency.setShift(shift); } BigDecimal shiftTimeCount = mdcDeviceCalendarService.computeShiftTimeCount(equipmentId, validDate); mdcOverallEquipmentEfficiency.setShiftTimeCount(shiftTimeCount); // 计算加班时间 BigDecimal overtime = mdcEquipmentOvertimeService.computeOvertime(equipmentId, validDate); mdcOverallEquipmentEfficiency.setOvertime(overtime); // 计算实际班产天数 BigDecimal actualWorkDayCount = mdcDeviceCalendarService.computeActualWorkDayCount(equipmentId, validDate); mdcOverallEquipmentEfficiency.setActualWorkDayCount(actualWorkDayCount); // 月度实际班产总时间(分钟) mdcOverallEquipmentEfficiency.setMonthActualWorkDayTimeCount(mdcOverallEquipmentEfficiency.getShiftTimeCount().add(overtime)); // 故障停机时长统计(分钟) BigDecimal breakdownDownDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.BREAKDOWN_DOWN); mdcOverallEquipmentEfficiency.setBreakdownDownDuration(breakdownDownDuration); // 换型调试时长统计(分钟) BigDecimal conversionDebugDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.CONVERSION_DEBUG); mdcOverallEquipmentEfficiency.setConversionDebugDuration(conversionDebugDuration); // 物料短缺时长统计(分钟) BigDecimal materialShortageDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.MATERIAL_SHORTAGE); mdcOverallEquipmentEfficiency.setMaterialShortageDuration(materialShortageDuration); // 计划等任务时长统计(分钟) BigDecimal plannedTaskDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.PLANNED_TASK); mdcOverallEquipmentEfficiency.setPlannedTaskDuration(plannedTaskDuration); // 检验时长统计(分钟) BigDecimal inspectDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.INSPECT); mdcOverallEquipmentEfficiency.setInspectDuration(inspectDuration); // 其他时长统计(分钟) BigDecimal otherDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.OTHER); mdcOverallEquipmentEfficiency.setOtherDuration(otherDuration); // 计划保养时长统计(分钟) BigDecimal plannedMaintenanceDuration = new BigDecimal("0"); BigDecimal plannedMaintenanceDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.PLANNED_MAINTENANCE); mdcOverallEquipmentEfficiency.setPlannedMaintenanceDuration(plannedMaintenanceDuration); // 会议/培训时长统计(分钟) BigDecimal conferenceTrainingDuration = new BigDecimal("0"); BigDecimal conferenceTrainingDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.CONFERENCE_TRAINING); mdcOverallEquipmentEfficiency.setConferenceTrainingDuration(conferenceTrainingDuration); // 其它休息时长统计(分钟) BigDecimal otherRestDuration = new BigDecimal("0"); if (shiftSubIdList != null && !shiftSubIdList.isEmpty()) { for (String shiftSubId : shiftSubIdList) { MdcOverallEquipmentEfficiency mdcOverallEquipmentEfficiency = new MdcOverallEquipmentEfficiency(); // 时间开动率计算 mdcOverallEquipmentEfficiency.setEquipmentId(equipmentId); mdcOverallEquipmentEfficiency.setEquipmentName(mdcEquipment.getEquipmentName()); mdcOverallEquipmentEfficiency.setEquipmentModel(mdcEquipment.getEquipmentModel()); mdcOverallEquipmentEfficiency.setValidDate(validDate); // 班次 班次时间 mdcOverallEquipmentEfficiency.setShiftSubId(shiftSubId); BigDecimal shiftTimeCount = mdcDeviceCalendarService.computeShiftTimeCount(shiftSubId, equipmentId, validDate); mdcOverallEquipmentEfficiency.setShiftTimeCount(shiftTimeCount); // 计算加班时间 BigDecimal overtime = mdcEquipmentOvertimeService.computeOvertime(shiftSubId, equipmentId, validDate); mdcOverallEquipmentEfficiency.setOvertime(overtime); // 计算实际班产天数 BigDecimal actualWorkDayCount = mdcDeviceCalendarService.computeActualWorkDayCount(shiftSubId, equipmentId, validDate); mdcOverallEquipmentEfficiency.setActualWorkDayCount(actualWorkDayCount); // 月度实际班产总时间(分钟) mdcOverallEquipmentEfficiency.setMonthActualWorkDayTimeCount(mdcOverallEquipmentEfficiency.getShiftTimeCount().add(overtime)); // 故障停机时长统计(分钟) mdcOverallEquipmentEfficiency.setBreakdownDownDuration(breakdownDownDuration); // 换型调试时长统计(分钟) mdcOverallEquipmentEfficiency.setConversionDebugDuration(conversionDebugDuration); // 物料短缺时长统计(分钟) mdcOverallEquipmentEfficiency.setMaterialShortageDuration(materialShortageDuration); // 计划等任务时长统计(分钟) mdcOverallEquipmentEfficiency.setPlannedTaskDuration(plannedTaskDuration); // 检验时长统计(分钟) mdcOverallEquipmentEfficiency.setInspectDuration(inspectDuration); // 其他时长统计(分钟) mdcOverallEquipmentEfficiency.setOtherDuration(otherDuration); // 计划保养时长统计(分钟) mdcOverallEquipmentEfficiency.setPlannedMaintenanceDuration(plannedMaintenanceDuration); // 会议/培训时长统计(分钟) mdcOverallEquipmentEfficiency.setConferenceTrainingDuration(conferenceTrainingDuration); // 其它休息时长统计(分钟) mdcOverallEquipmentEfficiency.setOtherRestDuration(otherRestDuration); /* 负荷时间(小时) = 工作日历时间 - 计划停机时间 工作日历时间 = 日历时间 - 法定假日 - 双休日 + 加班时间 计划停机时间 = 计划保养时长 + 会议/培训时长 + 会议/培训时长 */ // mdcOverallEquipmentEfficiency.getShiftTimeCount() - plannedMaintenanceDuration - conferenceTrainingDuration - otherRestDuration // 负荷时间(分钟) BigDecimal loadTime = mdcOverallEquipmentEfficiency.getShiftTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration); mdcOverallEquipmentEfficiency.setLoadTime(loadTime.divide(new BigDecimal("60"), 1, RoundingMode.HALF_UP)); // 时间开动率 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); 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) { mdcOverallEquipmentEfficiency.setStandardProcessDuration(new BigDecimal(mdcStandardProcessDuration.getDuration()).multiply(processQuantity)); } else { mdcOverallEquipmentEfficiency.setStandardProcessDuration(BigDecimal.ZERO); } // 性能开动率 = 主轴运行时间/负荷时间 // 查询主轴运行时间(分钟) BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate, shiftSubId); 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); // 合格率 if (processQuantity.compareTo(BigDecimal.ZERO) == 0) { mdcOverallEquipmentEfficiency.setPassRate(BigDecimal.ONE); } else { mdcOverallEquipmentEfficiency.setPassRate((processQuantity.subtract(unqualifiedQuantity)).divide(processQuantity, 4, RoundingMode.HALF_UP)); } // 设备综合效率 = 时间开动率 × 性能开动率 × 合格品率 mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(timeActuationRate.multiply(mdcOverallEquipmentEfficiency.getPerformanceRate()).multiply(mdcOverallEquipmentEfficiency.getPassRate())); if (mdcOverallEquipmentEfficiency.getOverallEquipmentEfficiency().compareTo(BigDecimal.ZERO) == 0) { mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ONE); } result.add(mdcOverallEquipmentEfficiency); } BigDecimal otherRestDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.OTHER_REST); mdcOverallEquipmentEfficiency.setOtherRestDuration(otherRestDuration); /* 负荷时间(小时) = 工作日历时间 - 计划停机时间 工作日历时间 = 日历时间 - 法定假日 - 双休日 + 加班时间 计划停机时间 = 计划保养时长 + 会议/培训时长 + 会议/培训时长 */ // mdcOverallEquipmentEfficiency.getShiftTimeCount() - plannedMaintenanceDuration - conferenceTrainingDuration - otherRestDuration // 负荷时间(分钟) BigDecimal loadTime = mdcOverallEquipmentEfficiency.getShiftTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration); mdcOverallEquipmentEfficiency.setLoadTime(loadTime.divide(new BigDecimal("60"), 1, RoundingMode.HALF_UP)); // 时间开动率 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); 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) { mdcOverallEquipmentEfficiency.setStandardProcessDuration(new BigDecimal(mdcStandardProcessDuration.getDuration()).multiply(processQuantity)); } else { 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)); } else { mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO); } // 废品数 unqualifiedQuantity BigDecimal unqualifiedQuantity = mdcPassRateService.findUnqualifiedQuantity(equipmentId, validDate); mdcOverallEquipmentEfficiency.setUnqualifiedQuantity(unqualifiedQuantity); // 合格率 if (processQuantity.compareTo(BigDecimal.ZERO) == 0) { mdcOverallEquipmentEfficiency.setPassRate(BigDecimal.ONE); } else { mdcOverallEquipmentEfficiency.setPassRate((processQuantity.subtract(unqualifiedQuantity)).divide(processQuantity, 4, RoundingMode.HALF_UP)); } // 设备综合效率 = 时间开动率 × 性能开动率 × 合格品率 mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(timeActuationRate.multiply(mdcOverallEquipmentEfficiency.getPerformanceRate()).multiply(mdcOverallEquipmentEfficiency.getPassRate())); if (mdcOverallEquipmentEfficiency.getOverallEquipmentEfficiency().compareTo(BigDecimal.ZERO) == 0) { mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ONE); } result.add(mdcOverallEquipmentEfficiency); } super.saveBatch(result); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java
@@ -1,11 +1,16 @@ package org.jeecg.modules.mdc.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.modules.mdc.entity.MdcPlanClose; import org.jeecg.modules.mdc.mapper.MdcPlanCloseMapper; import org.jeecg.modules.mdc.service.IMdcPlanCloseService; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.Collections; import java.util.List; /** @@ -17,4 +22,27 @@ @Service public class MdcPlanCloseServiceImpl extends ServiceImpl<MdcPlanCloseMapper, MdcPlanClose> implements IMdcPlanCloseService { @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))); if (mdcPlanCloses != null && !mdcPlanCloses.isEmpty()) { for (MdcPlanClose mdcPlanClose : mdcPlanCloses) { switch (mdcPlanClose.getPlanCloseTimeType()) { case "天": result = result.add(actualWorkDayCount.multiply(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong()))); break; case "周": result = result.add(new BigDecimal("4").multiply(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong()))); break; case "月": result = result.add(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong())); break; default: break; } } } return result; } }