package org.jeecg.modules.screen.service.impl; import org.jeecg.modules.mdc.service.IMdcEquipmentStatisticalInfoService; import org.jeecg.modules.mdcJc.entity.MdcProductDayschedule; import org.jeecg.modules.mdcJc.service.IMdcProductDayScheduleService; import org.jeecg.modules.screen.dto.*; import org.jeecg.modules.screen.mapper.MdcLargeScreenMapper; import org.jeecg.modules.screen.service.MdcLargeScreenService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; /** * @author Lius * @date 2024/8/20 11:36 */ @Service public class MdcLargeScreenServiceImpl implements MdcLargeScreenService { @Resource private IMdcProductDayScheduleService mdcProductDayScheduleService; @Resource private MdcLargeScreenMapper mdcLargeScreenMapper; private final String yesterday = LocalDate.now().plusDays(-1).toString().replaceAll("-", ""); private final String today = LocalDate.now().toString().replaceAll("-", ""); /** * 昨日概况(产品合格率 设备利用率 计划完成率) * * @return */ @Override public YesterdayOverviewDto yesterdayOverview() { YesterdayOverviewDto yesterdayOverviewDto = new YesterdayOverviewDto(); MdcProductDayschedule mdcProductDayschedule = mdcProductDayScheduleService.findYesterdayData(); if (mdcProductDayschedule != null) { // 产品合格率 yesterdayOverviewDto.setPassRate(new BigDecimal(mdcProductDayschedule.getQualifiedCount()).divide(new BigDecimal(mdcProductDayschedule.getCompletionCount()), 0, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP)); // 计划完成率 yesterdayOverviewDto.setPlanCompleteRate(new BigDecimal(mdcProductDayschedule.getCompletionCount()).divide(new BigDecimal(mdcProductDayschedule.getPlanCount()), 0, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP)); } // 设备利用率 // String date = LocalDate.now().plusDays(-1).toString().replaceAll("-", ""); BigDecimal equipmentCount = mdcLargeScreenMapper.findEquipmentCount(yesterday); BigDecimal processCount = mdcLargeScreenMapper.findYesterdayProcessCount(yesterday); BigDecimal utilizationRate = BigDecimal.ZERO; if (equipmentCount != null && processCount != null) { utilizationRate = processCount.divide(new BigDecimal("86400").multiply(equipmentCount), 0, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); } yesterdayOverviewDto.setUtilizationRate(utilizationRate); return yesterdayOverviewDto; } /** * 今日生产进度 * * @return */ @Override public List todayProductionSchedule() { return mdcLargeScreenMapper.todayProductionSchedule(today); } /** * 今日产品合格率 * * @return */ @Override public List todayProductionPassRate() { List list = mdcLargeScreenMapper.todayProductionPassRate(today); List result = new ArrayList<>(); if (list != null && !list.isEmpty()) { for (MdcProductDayschedule mdcProductDayschedule : list) { TodayProductionPassRateDto todayProductionPassRateDto = new TodayProductionPassRateDto(); todayProductionPassRateDto.setProductionName(mdcProductDayschedule.getProductName()); todayProductionPassRateDto.setPassRate(new BigDecimal(mdcProductDayschedule.getQualifiedCount()).divide(new BigDecimal(mdcProductDayschedule.getCompletionCount()), 0, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP)); result.add(todayProductionPassRateDto); } } return result; } /** * 今日班组完成量 * * @return */ @Override public List todayClazzCompletionCount() { return mdcLargeScreenMapper.todayClazzCompletionCount(today); } /** * 今日设备运行效率 * * @return */ @Override public List todayEquipmentRate() { return null; // return mdcLargeScreenMapper.todayEquipmentRate(); } }