lius
2023-08-02 d18833c3accb1e01d01a832887f6dfbd0c025d41
设备日利用率对比接口
已添加1个文件
已修改4个文件
157 ■■■■■ 文件已修改
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/DayUtilizationRateContrastQueryVo.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java
@@ -16,7 +16,6 @@
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * @author: LiuS
@@ -91,4 +90,14 @@
        return Result.OK(result);
    }
    @AutoLog(value = "设备效率报表-设备日利用率对比")
    @ApiOperation(value = "设备效率报表-设备日利用率对比", notes = "设备效率报表-设备日利用率对比")
    @GetMapping("/dayUtilizationRateContrast")
    public Result dayUtilizationRateContrast(DayUtilizationRateContrastQueryVo vo) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        DayUtilizationRateDto result = mdcEfficiencyReportService.dayUtilizationRateContrast(userId, vo);
        return Result.OK(result);
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java
@@ -4,8 +4,6 @@
import org.jeecg.modules.mdc.dto.DayUtilizationRateDto;
import org.jeecg.modules.mdc.vo.*;
import java.util.List;
/**
 * @author: LiuS
 * @create: 2023-06-15 17:25
@@ -65,4 +63,13 @@
     * @return
     */
    DayUtilizationRateDto dayUtilizationRate(String userId, DayUtilizationRateQueryVo vo);
    /**
     * è®¾å¤‡æ—¥åˆ©ç”¨çŽ‡å¯¹æ¯”è®¡ç®—
     *
     * @param userId
     * @param vo
     * @return
     */
    DayUtilizationRateDto dayUtilizationRateContrast(String userId, DayUtilizationRateContrastQueryVo vo);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
@@ -906,8 +906,8 @@
            DayRateDto dayRateDto = new DayRateDto();
            dayRateDto.setDateTime(dateList.get(i + 1));
            String dateTime = DateUtils.dateConvertion(vo.getDateTime());
            Date startTime = DateUtils.toDate(dateTime + " " + dateList.get(i), DateUtils.STR_DATE_TIME_MIN);
            Date endTime = DateUtils.toDate(dateTime + " " + dateList.get(i + 1), DateUtils.STR_DATE_TIME_MIN);
            Date startTime = DateUtils.toDate(dateTime + " " + dateList.get(i) + ":00", DateUtils.STR_DATE_TIME_SMALL);
            Date endTime = DateUtils.toDate(dateTime + " " + dateList.get(i + 1) + ":00", DateUtils.STR_DATE_TIME_SMALL);
            List<MdcEquipmentRunningSection> runningSections = mdcEquipmentRunningSectionService.listEquipmentRunningSection(vo.getEquipmentId(), startTime.getTime(), endTime.getTime());
            if (runningSections != null && !runningSections.isEmpty()) {
                // æ—¶é—´ä¿®æ­£
@@ -940,6 +940,74 @@
        return result;
    }
    /**
     * è®¾å¤‡æ—¥åˆ©ç”¨çŽ‡å¯¹æ¯”åˆ†æž
     *
     * @param userId
     * @param vo
     * @return
     */
    @Override
    public DayUtilizationRateDto dayUtilizationRateContrast(String userId, DayUtilizationRateContrastQueryVo vo) {
        DayUtilizationRateDto result = new DayUtilizationRateDto();
        if (StringUtils.isBlank(vo.getEquipmentId())) {
            List<String> equipmentIds;
            // èŽ·å–ç”¨æˆ·æ‹¥æœ‰è®¾å¤‡æƒé™
            if ("2".equals(vo.getTypeTree())) {
                // éƒ¨é—¨å±‚级
                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null);
            } else {
                // äº§çº¿å±‚级
                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null);
            }
            if (equipmentIds != null && !equipmentIds.isEmpty()) {
                vo.setEquipmentId(equipmentIds.get(0));
            }
        }
        result.setEquipmentId(vo.getEquipmentId());
        MdcEquipment mdcEquipment = mdcEquipmentService.getOne(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, vo.getEquipmentId()));
        result.setEquipmentName(mdcEquipment.getEquipmentName());
        Date start = DateUtils.toDate(vo.getStartDate(), DateUtils.STRDATE);
        Date end = DateUtils.toDate(vo.getEndDate(), DateUtils.STRDATE);
        List<String> dateList = DateUtils.getDatesStringLists(start, end);
        result.setDateList(dateList);
        List<String> datesStringList = DateUtils.getDatesStringList(start, end);
        List<DayRateDto> dayRateDtoList = new ArrayList<>();
        for (String date : datesStringList) {
            DayRateDto dayRateDto = new DayRateDto();
            String format = DateUtils.format(DateUtils.toDate(date, DateUtils.STR_DATE), DateUtils.STR_MMDD);
            dayRateDto.setDateTime(format);
            Date startTime = DateUtils.toDate(date + " " + vo.getStartTime() + ":00", DateUtils.STR_DATE_TIME_SMALL);
            Date endTime = DateUtils.toDate(date + " " + vo.getEndTime() + ":00", DateUtils.STR_DATE_TIME_SMALL);
            List<MdcEquipmentRunningSection> runningSections = mdcEquipmentRunningSectionService.listEquipmentRunningSection(vo.getEquipmentId(), startTime.getTime(), endTime.getTime());
            if (runningSections != null && !runningSections.isEmpty()) {
                //时间修正
                runningSections.get(0).setStartTime(startTime);
                if (runningSections.size() > 1) {
                    runningSections.get(runningSections.size() - 1).setEndTime(endTime);
                } else {
                    runningSections.get(0).setEndTime(endTime);
                }
                // åˆ©ç”¨çŽ‡è®¡ç®—
                BigDecimal processLong = new BigDecimal("0");
                for (MdcEquipmentRunningSection runningSection : runningSections) {
                    if (runningSection.getStatus() == 3) {
                        long duration = DateUtils.differentSecond(runningSection.getStartTime(), runningSection.getEndTime());
                        processLong = processLong.add(new BigDecimal(duration));
                    }
                }
                BigDecimal totalLong = new BigDecimal(DateUtils.differentSecond(startTime, endTime));
                BigDecimal utilizationRate = processLong.divide(totalLong, 6, BigDecimal.ROUND_HALF_UP);
                dayRateDto.setUtilizationRate(utilizationRate);
            } else {
                dayRateDto.setUtilizationRate(new BigDecimal("0"));
            }
            dayRateDtoList.add(dayRateDto);
        }
        result.setDayRateDto(dayRateDtoList);
        return result;
    }
    private StatisticalAnalysisVo efficiencyStatisticalRate(List<MdcEfficiencyDto> efficiencyList) {
        StatisticalAnalysisVo vo = new StatisticalAnalysisVo();
        for (MdcEfficiencyDto mdcEfficiencyDto : efficiencyList) {
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java
@@ -164,6 +164,7 @@
    public static final String STR_DATE_TIME_FULL = "yyyyMMddHHmmssSSS";
    public static final String STR_HHMMSS = "HH:mm:ss";
    public static final String STR_HHMM = "HH:mm";
    public static final String STR_MMDD = "MM-dd";
    /**
     * <p>
@@ -672,6 +673,26 @@
        return list;
    }
    /**
     * èŽ·å–start/end的所有日期字符串 æ ¼å¼MM-dd
     *
     * @param start
     * @param end
     * @return
     */
    public static List<String> getDatesStringLists(Date start, Date end) {
        List<String> list = new ArrayList<>();
        int i = getDays(start, end);
        for (int j = 0; j <= i; j++) {
            if (j == 0) {
                list.add(format(start, STR_MMDD));
            } else {
                list.add(format(plusTime(start, j), STR_MMDD));
            }
        }
        return list;
    }
    public static List<String> getMonthBetween(Date start, Date end) {
        List<String> list = new ArrayList<>();
        Calendar min = Calendar.getInstance();
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/DayUtilizationRateContrastQueryVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package org.jeecg.modules.mdc.vo;
import lombok.Data;
/**
 * @author: LiuS
 * @create: 2023-08-02 13:50
 */
@Data
public class DayUtilizationRateContrastQueryVo {
    /**
     * æ—¥æœŸ  ->  20220101
     */
    private String startDate;
    /**
     * æ—¥æœŸ  ->  20220101
     */
    private String endDate;
    /**
     * è®¾å¤‡Id
     */
    private String equipmentId;
    /**
     * è®¾å¤‡åç§°
     */
    private String equipmentName;
    /**
     * æ ‘类型    ->  1:车间层级   2:部门层级
     */
    private String typeTree;
    /**
     * æ—¶é—´æ®µ
     */
    private String startTime;
    /**
     * æ—¶é—´æ®µ
     */
    private String endTime;
}