| | |
| | | */ |
| | | public static final String OTHER_REST = "休息用餐,预防性维修"; |
| | | |
| | | public static final String DAY = "天"; |
| | | |
| | | public static final String WEEK = "周"; |
| | | |
| | | public static final String MONTH = "月"; |
| | | |
| | | } |
| | |
| | | @ApiModelProperty(value = "有效日期") |
| | | private String validDate; |
| | | /** |
| | | * 班次id |
| | | * 班次 |
| | | */ |
| | | @ApiModelProperty(value = "班次id") |
| | | private String shiftSubId; |
| | | @ApiModelProperty(value = "班次") |
| | | private String shift; |
| | | /** |
| | | * 每班小时 |
| | | */ |
| | |
| | | |
| | | 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); |
| | | } |
| | |
| | | * @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); |
| | | } |
| | |
| | | */ |
| | | 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); |
| | | } |
| | |
| | | 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> |
| | | |
| | | <!--查询班次数量--> |
| | |
| | | WHERE |
| | | effective_date LIKE CONCAT(#{ validDate }, '%') |
| | | AND equipment_id = #{ equipmentId } |
| | | AND shift_sub_id = #{ shiftSubId } |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | WHERE |
| | | mdc.effective_date LIKE CONCAT(#{ validDate }, '%') |
| | | AND mdc.equipment_id = #{ equipmentId } |
| | | AND mdc.shift_sub_id = #{ shiftSubId } |
| | | </select> |
| | | </mapper> |
| | |
| | | mdc_equipment_statistical_shift_info |
| | | WHERE |
| | | equipment_id = #{ equipmentId } |
| | | AND shift_sub_id = #{ shiftSubId } |
| | | AND the_date LIKE CONCAT(#{ validDate },'%') |
| | | </select> |
| | | </mapper> |
| | |
| | | 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, |
| | |
| | | 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 |
| | |
| | | /** |
| | | * 计算实际班产天数 |
| | | * |
| | | * @param shiftSubId |
| | | * @param equipmentId |
| | | * @param validDate |
| | | * @return |
| | | */ |
| | | BigDecimal computeActualWorkDayCount(String shiftSubId, String equipmentId, String validDate); |
| | | BigDecimal computeActualWorkDayCount(String equipmentId, String validDate); |
| | | |
| | | /** |
| | | * 查询班次分类 |
| | |
| | | /** |
| | | * 计算班次时间 |
| | | * |
| | | * @param shiftSubId |
| | | * @param equipmentId |
| | | * @param validDate |
| | | * @return |
| | | */ |
| | | BigDecimal computeShiftTimeCount(String shiftSubId, String equipmentId, String validDate); |
| | | BigDecimal computeShiftTimeCount(String equipmentId, String validDate); |
| | | |
| | | /** |
| | | * 生成设备工作日历 |
| | |
| | | /** |
| | | * 计算加班时间 |
| | | * |
| | | * @param shiftSubId |
| | | * @param equipmentId |
| | | * @param validDate |
| | | * @return |
| | | */ |
| | | BigDecimal computeOvertime(String shiftSubId, String equipmentId, String validDate); |
| | | BigDecimal computeOvertime(String equipmentId, String validDate); |
| | | } |
| | |
| | | * |
| | | * @param equipmentId |
| | | * @param validDate |
| | | * @param shiftSubId |
| | | * @return |
| | | */ |
| | | BigDecimal findSpindleRunDuration(String equipmentId, String validDate, String shiftSubId); |
| | | BigDecimal findSpindleRunDuration(String equipmentId, String validDate); |
| | | |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import org.jeecg.modules.mdc.entity.MdcPlanClose; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * @Description: mdc计划停机维护表 |
| | | * @Author: Lius |
| | |
| | | */ |
| | | public interface IMdcPlanCloseService extends IService<MdcPlanClose> { |
| | | |
| | | BigDecimal findPlanTimeDuration(BigDecimal actualWorkDayCount, String planCloseType); |
| | | } |
| | |
| | | /** |
| | | * 计算实际班产天数 |
| | | * |
| | | * @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()); |
| | | } |
| | | |
| | |
| | | /** |
| | | * 计算班次时间 |
| | | * |
| | | * @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")); |
| | | } |
| | | |
| | |
| | | /** |
| | | * 计算加班时间(分钟) |
| | | * |
| | | * @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) { |
| | |
| | | * @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 { |
| | |
| | | List<MdcEquipment> equipmentList = mdcEquipmentService.list(); |
| | | for (MdcEquipment mdcEquipment : equipmentList) { |
| | | String equipmentId = mdcEquipment.getEquipmentId(); |
| | | // 查询班次分类 |
| | | List<String> shiftSubIdList = mdcDeviceCalendarService.findShiftSort(equipmentId, validDate); |
| | | // 故障停机时长统计(分钟) |
| | | BigDecimal breakdownDownDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.BREAKDOWN_DOWN); |
| | | // 换型调试时长统计(分钟) |
| | | BigDecimal conversionDebugDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.CONVERSION_DEBUG); |
| | | // 物料短缺时长统计(分钟) |
| | | BigDecimal materialShortageDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.MATERIAL_SHORTAGE); |
| | | // 计划等任务时长统计(分钟) |
| | | BigDecimal plannedTaskDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.PLANNED_TASK); |
| | | // 检验时长统计(分钟) |
| | | BigDecimal inspectDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.INSPECT); |
| | | // 其他时长统计(分钟) |
| | | BigDecimal otherDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.OTHER); |
| | | // 计划保养时长统计(分钟) |
| | | BigDecimal plannedMaintenanceDuration = new BigDecimal("0"); |
| | | // 会议/培训时长统计(分钟) |
| | | BigDecimal conferenceTrainingDuration = new BigDecimal("0"); |
| | | // 其它休息时长统计(分钟) |
| | | 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); |
| | | |
| | | // 查询班制分类 |
| | | 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(shiftSubId, equipmentId, validDate); |
| | | BigDecimal overtime = mdcEquipmentOvertimeService.computeOvertime(equipmentId, validDate); |
| | | mdcOverallEquipmentEfficiency.setOvertime(overtime); |
| | | |
| | | // 计算实际班产天数 |
| | | BigDecimal actualWorkDayCount = mdcDeviceCalendarService.computeActualWorkDayCount(shiftSubId, equipmentId, validDate); |
| | | 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 = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.PLANNED_MAINTENANCE); |
| | | mdcOverallEquipmentEfficiency.setPlannedMaintenanceDuration(plannedMaintenanceDuration); |
| | | // 会议/培训时长统计(分钟) |
| | | BigDecimal conferenceTrainingDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.CONFERENCE_TRAINING); |
| | | mdcOverallEquipmentEfficiency.setConferenceTrainingDuration(conferenceTrainingDuration); |
| | | // 其它休息时长统计(分钟) |
| | | BigDecimal otherRestDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.OTHER_REST); |
| | | mdcOverallEquipmentEfficiency.setOtherRestDuration(otherRestDuration); |
| | | /* |
| | | 负荷时间(小时) = 工作日历时间 - 计划停机时间 |
| | |
| | | |
| | | // 性能开动率 = 主轴运行时间/负荷时间 |
| | | // 查询主轴运行时间(分钟) |
| | | BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate, shiftSubId); |
| | | BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate); |
| | | if (loadTime.compareTo(BigDecimal.ZERO) != 0) { |
| | | mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP)); |
| | | } else { |
| | |
| | | mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ONE); |
| | | } |
| | | result.add(mdcOverallEquipmentEfficiency); |
| | | } |
| | | } |
| | | |
| | | } |
| | | super.saveBatch(result); |
| | | } |
| | |
| | | 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; |
| | | |
| | | |
| | | /** |
| | |
| | | @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; |
| | | } |
| | | } |