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();
|
|
private final String today = LocalDate.now().toString();
|
|
|
/**
|
* 昨日概况(产品合格率 设备利用率 计划完成率)
|
*
|
* @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<TodayProductionDto> todayProductionSchedule() {
|
return mdcLargeScreenMapper.todayProductionSchedule(today);
|
}
|
|
/**
|
* 今日产品合格率
|
*
|
* @return
|
*/
|
@Override
|
public List<TodayProductionPassRateDto> todayProductionPassRate() {
|
List<MdcProductDayschedule> list = mdcLargeScreenMapper.todayProductionPassRate(today);
|
List<TodayProductionPassRateDto> 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<ClazzCompletionCountDto> todayClazzCompletionCount() {
|
return mdcLargeScreenMapper.todayClazzCompletionCount(today);
|
}
|
|
/**
|
* 今日设备运行效率
|
*
|
* @return
|
*/
|
@Override
|
public List<EquipmentRateDto> todayEquipmentRate() {
|
return null;
|
// return mdcLargeScreenMapper.todayEquipmentRate();
|
}
|
}
|