Lius
2024-05-09 efc5dece153d8e51f9e18e136a35558c4ae8a894
update
已修改11个文件
207 ■■■■■ 文件已修改
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/EquipmentMachingDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOvertimeDurationJob.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentWorklineMapper.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/EquipmentMachingDto.java
@@ -77,6 +77,7 @@
    private String ALRMstate;
    //工件名称
    private String ProductName;
    private String ProductCount;
    //机床X轴坐标
    private String Xmachine;
    //机床Y轴坐标
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOvertimeDurationJob.java
@@ -128,7 +128,7 @@
                } else {
                    // 没有班次配置,计算全天的设备加工状态
                    Date startDate = DateUtils.toDate(date + " " + value, DateUtils.STR_DATE_TIME_SMALL);
                    Date endDate = DateUtils.plusTime(startDate, 1);
                    Date endDate = DateUtils.plusTime(startDate, 1);
                    List<MdcEquipmentRunningSection> equipmentRunningSectionList = mdcEquipmentRunningSectionService.selectRunningData(mdcEquipment.getEquipmentId(), startDate, endDate);
                    if (equipmentRunningSectionList != null && !equipmentRunningSectionList.isEmpty()) {
                        // 时间修正
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java
@@ -39,11 +39,14 @@
    Integer isTableExist(@Param("tableName") String tableName);
    @InterceptorIgnore(tenantLine = "1")
    List<Map<String, Object>> findRunningData(@Param("tableName") String saveTableName, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
    List<String> findRunningData(@Param("tableName") String saveTableName, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
    @InterceptorIgnore(tenantLine = "1")
    List<EquipmentMachingDto> getEquipProgramNum(@Param("tableName") String saveTableName, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
    @InterceptorIgnore(tenantLine = "1")
    List<MdcEquipmentDto> findProductCountStartTime(@Param("tableName") String saveTableName, @Param("productCount") String productCount);
    MdcEquipmentDto findProductCountStartTime(@Param("tableName") String saveTableName, @Param("productCount") String productCount, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
    @InterceptorIgnore(tenantLine = "1")
    MdcEquipmentDto findProductCountEndTime(@Param("tableName") String saveTableName, @Param("productCount") String productCount, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java
@@ -31,4 +31,6 @@
    MdcDeviceCalendar getFirstData(@Param("equipmentId") String equipmentId);
    List<MdcDeviceCalendarVo> listByEquipmentAndDates(@Param("equipmentId") String equipmentId, @Param("stringDates") List<String> stringDates);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentWorklineMapper.xml
@@ -6,8 +6,8 @@
        select top 1 [${tableName}].* from [${tableName}] order by CollectTime  desc
    </select>
    <select id="findRunningData" resultType="java.util.Map">
        select [${tableName}].* from [${tableName}] where ProductCount &lt;&gt; '' AND CollectTime between #{ startTime } AND #{ endTime }  order by CollectTime  asc
    <select id="findRunningData" resultType="java.lang.String">
        SELECT ProductCount FROM [${tableName}] WHERE CollectTime BETWEEN #{ startTime } AND #{ endTime } GROUP BY ProductCount ORDER BY ProductCount
    </select>
    <select id="getEquipProgramNum" resultType="org.jeecg.modules.mdc.dto.EquipmentMachingDto">
@@ -15,6 +15,10 @@
    </select>
    <select id="findProductCountStartTime" resultType="org.jeecg.modules.mdc.dto.MdcEquipmentDto">
        SELECT TOP 1 [${tableName}].* FROM [${tableName}] WHERE ProductCount = #{ productCount } ORDER BY CollectTime ASC
        SELECT TOP 1 [${tableName}].* FROM [${tableName}] WHERE ProductCount = #{ productCount } AND CollectTime BETWEEN #{ startTime } AND #{ endTime } ORDER BY CollectTime ASC
    </select>
    <select id="findProductCountEndTime" resultType="org.jeecg.modules.mdc.dto.MdcEquipmentDto">
        SELECT TOP 1 [${tableName}].* FROM [${tableName}] WHERE ProductCount = #{ productCount } AND CollectTime BETWEEN #{ startTime } AND #{ endTime } ORDER BY CollectTime DESC
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml
@@ -121,4 +121,35 @@
        SELECT TOP 1 * FROM mdc_device_calendar WHERE equipment_id = #{ equipmentId } ORDER BY effective_date ASC
    </select>
    <select id="listByEquipmentAndDates" resultType="org.jeecg.modules.mdc.vo.MdcDeviceCalendarVo">
        SELECT
            t1.*,
            t2.shift_name,
            t3.shift_sub_name,
            t3.start_date,
            t3.end_date,
            t3.sleep_start_date,
            t3.sleep_end_date,
            t3.is_day_span,
            t4.equipment_name
        FROM
            mdc_device_calendar t1
            LEFT JOIN mdc_shift t2 ON t1.shift_id = t2.id
            LEFT JOIN mdc_shift_sub t3 ON t1.shift_sub_id = t3.id
            LEFT JOIN mdc_equipment t4 ON t1.equipment_id = t4.equipment_id
        <where>
            <if test="equipmentId != null and equipmentId != ''">
                AND t4.equipment_id = #{ equipmentId }
            </if>
            <if test="stringDates != null and stringDates.size() > 0 ">
                AND t1.effective_date IN
                <foreach collection="stringDates" item="stringDate" index="index" open="(" close=")" separator=",">
                    #{ stringDate }
                </foreach>
            </if>
        </where>
        ORDER BY
            t1.effective_date ASC
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java
@@ -1,11 +1,10 @@
package org.jeecg.modules.mdc.service;
import org.jeecg.modules.mdc.dto.MdcEquipmentDto;
import org.jeecg.modules.mdc.dto.EquipmentMachingDto;
import org.jeecg.modules.mdc.dto.MdcEquipmentDto;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * @author: LiuS
@@ -30,7 +29,7 @@
    /**
     * 查询一段时间内的数据
     */
    List<Map<String, Object>> findRunningData(String tableName, Date startTime, Date endTime);
    List<String> findRunningData(String tableName, Date startTime, Date endTime);
    /**
     * 查找法兰克设备运行的程序号
@@ -48,5 +47,13 @@
     * @param productCount
     * @return
     */
    MdcEquipmentDto findProductCountStartTime(String saveTableName, String productCount);
    MdcEquipmentDto findProductCountStartTime(String saveTableName, String productCount, Date startTime, Date endTime);
    /**
     * 查询法拉克设备加工工件结束时间
     * @param saveTableName
     * @param productCount
     * @return
     */
    MdcEquipmentDto findProductCountEndTime(String saveTableName, String productCount, Date startTime, Date endTime);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java
@@ -46,7 +46,7 @@
    }
    @Override
    public List<Map<String, Object>> findRunningData(String tableName, Date startTime, Date endTime) {
    public List<String> findRunningData(String tableName, Date startTime, Date endTime) {
        return equipmentWorkLineMapper.findRunningData(tableName, startTime, endTime);
    }
@@ -56,10 +56,18 @@
    }
    @Override
    public MdcEquipmentDto findProductCountStartTime(String saveTableName, String productCount) {
    public MdcEquipmentDto findProductCountStartTime(String saveTableName, String productCount, Date startTime, Date endTime) {
        try {
            List<MdcEquipmentDto> macingDataList = equipmentWorkLineMapper.findProductCountStartTime(saveTableName, productCount);
            return !macingDataList.isEmpty() ? macingDataList.get(0) : null;
            return equipmentWorkLineMapper.findProductCountStartTime(saveTableName, productCount, startTime, endTime);
        } catch (Exception e) {
            return null;
        }
    }
    @Override
    public MdcEquipmentDto findProductCountEndTime(String saveTableName, String productCount, Date startTime, Date endTime) {
        try {
            return equipmentWorkLineMapper.findProductCountEndTime(saveTableName, productCount, startTime, endTime);
        } catch (Exception e) {
            return null;
        }
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java
@@ -114,19 +114,16 @@
     */
    @Override
    public List<MdcDeviceCalendarVo> listByEquipmentAndDate(String equipmentId, List<String> stringDates) {
        List<MdcDeviceCalendarVo> result = new ArrayList<>();
        try {
            for (String stringDate : stringDates) {
                List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = this.baseMapper.listByEquipmentAndDate(equipmentId, stringDate);
                if (mdcDeviceCalendarVos != null && !mdcDeviceCalendarVos.isEmpty()) {
                    result.addAll(mdcDeviceCalendarVos);
                }
            List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = this.baseMapper.listByEquipmentAndDates(equipmentId, stringDates);
            if (mdcDeviceCalendarVos != null && !mdcDeviceCalendarVos.isEmpty()) {
                return mdcDeviceCalendarVos;
            } else {
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return result;
    }
    /**
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java
@@ -704,7 +704,7 @@
     */
    private Map<String, List<MdcDeviceCalendarVo>> mdcDeviceCalendarMap(String equipmentid, List<String> stringDates) {
        List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = mdcDeviceCalendarService.listByEquipmentAndDate(equipmentid, stringDates);
        if (mdcDeviceCalendarVos.isEmpty()) {
        if (mdcDeviceCalendarVos == null || mdcDeviceCalendarVos.isEmpty()) {
            return null;
        }
        Map<String, List<MdcDeviceCalendarVo>> map = new HashMap<>();
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java
@@ -1,10 +1,10 @@
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.apache.commons.lang.StringUtils;
import org.jeecg.modules.mdc.dto.MdcEquipmentDto;
import org.jeecg.modules.mdc.dto.MdcProcessCountDto;
import org.jeecg.modules.mdc.entity.MdcDeviceCalendar;
import org.jeecg.modules.mdc.entity.MdcEquipment;
import org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection;
import org.jeecg.modules.mdc.entity.MdcProcessCount;
@@ -21,6 +21,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.*;
/**
@@ -53,14 +54,12 @@
    public void runningProcessCount() {
        // 获取所有设备
        //List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "2140198"));
        List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list();
        List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getDriveType, "FANUC"));
        List<MdcProcessCount> result = new ArrayList<>();
        for (MdcEquipment mdcEquipment : mdcEquipmentList) {
            if ("FANUC".equals(mdcEquipment.getDriveType())) {
                List<MdcProcessCount> mdcProcessCountList = processCount(mdcEquipment);
                if (mdcProcessCountList != null && !mdcProcessCountList.isEmpty()) {
                    result.addAll(mdcProcessCountList);
                }
            List<MdcProcessCount> mdcProcessCountList = processCount(mdcEquipment);
            if (mdcProcessCountList != null && !mdcProcessCountList.isEmpty()) {
                result.addAll(mdcProcessCountList);
            }
        }
        if (!result.isEmpty()) {
@@ -123,7 +122,6 @@
        return result == null ? BigDecimal.ZERO : result;
    }
//    @Transactional(readOnly = true)
    List<MdcProcessCount> processCount(MdcEquipment mdcEquipment) {
        Date initDate = null;
        //取最后的统计数据
@@ -132,11 +130,9 @@
            initDate = DateUtils.toDate(lastData.getTheDate(), DateUtils.STRDATE);
            initDate = DateUtils.plusTime(initDate, 1);
        } else {
            //初次取值 取最早时间
            MdcDeviceCalendar mdcDeviceCalendar = mdcDeviceCalendarService.getFirstData(mdcEquipment.getEquipmentId());
            if (mdcDeviceCalendar != null) {
                initDate = DateUtils.toDate(mdcDeviceCalendar.getEffectiveDate(), DateUtils.STRDATE);
            }
            //初次取值 取当前时间往前推一个月时间
//            MdcDeviceCalendar mdcDeviceCalendar = mdcDeviceCalendarService.getFirstData(mdcEquipment.getEquipmentId());
            initDate = DateUtils.toDate(LocalDate.now().plusMonths(-1).toString(), DateUtils.STR_DATE);
        }
        if (initDate == null) {
            return null;
@@ -153,7 +149,7 @@
        // 获取设备班次信息
        Map<String, List<MdcDeviceCalendarVo>> listMap = this.mdcDeviceCalendarMap(mdcEquipment.getEquipmentId(), stringDates);
        if (listMap == null || listMap.isEmpty()) {
            listMap = new HashMap<>();
            return null;
        }
        List<MdcProcessCount> resultList = new ArrayList<>();
        for (String stringDate : stringDates) {
@@ -162,11 +158,17 @@
                // 处理班制班次时间
                MdcDateVo mdcDateVo = this.handleDeviceCalendar(mdcDeviceCalendarVos);
                // 查找设备单表运行数据
                List<Map<String, Object>> mdcEquipmentDtoList = equipmentWorkLineService.findRunningData(mdcEquipment.getSaveTableName(), mdcDateVo.getStartTime(), mdcDateVo.getEndTime());
                if (mdcEquipmentDtoList == null || mdcEquipmentDtoList.isEmpty()) {
                List<String> productCountList = new ArrayList<>();
                try {
                    productCountList = equipmentWorkLineService.findRunningData(mdcEquipment.getSaveTableName(), mdcDateVo.getStartTime(), mdcDateVo.getEndTime());
                } catch (Exception e) {
                    continue;
                }
                Map<String, Object> firstMap = new HashMap<>(mdcEquipmentDtoList.get(0));
                if (productCountList == null || productCountList.isEmpty()) {
                    continue;
                }
/*                Map<String, Object> firstMap = new HashMap<>(mdcEquipmentDtoList.get(0));
                Map<String, Object> mdcEquipmentDtoMap = mdcEquipmentDtoList.get(0);
                for (int i = 1; i < mdcEquipmentDtoList.size(); i++) {
                    String productCount1 = mdcEquipmentDtoList.get(i).get("ProductCount").toString();
@@ -180,6 +182,9 @@
                            //根据productCount值查询开始时间
                            String productCount = mdcEquipmentDtoList.get(i - 1).get("ProductCount").toString();
                            MdcEquipmentDto mdcEquipmentDto = equipmentWorkLineService.findProductCountStartTime(mdcEquipment.getSaveTableName(), productCount);
                            if (mdcEquipmentDto == null) {
                                continue;
                            }
                            start = mdcEquipmentDto.getCollectTime();
                            //程序号
                            sequenceNumber = mdcEquipmentDtoList.get(i - 1).get("Sequencenumber").toString();
@@ -190,36 +195,53 @@
                        }
                        mdcEquipmentDtoMap.put("ProductCount", mdcEquipmentDtoList.get(i).get("ProductCount").toString());
                        mdcEquipmentDtoMap.put("CollectTime", mdcEquipmentDtoList.get(i).get("CollectTime").toString());
                        List<MdcEquipmentRunningSection> equipmentRunningSectionList = mdcEquipmentRunningSectionService.selectRunningData(mdcEquipment.getEquipmentId(), start, end);
                        if (equipmentRunningSectionList != null && !equipmentRunningSectionList.isEmpty()) {
                            //时间修正
                            if (equipmentRunningSectionList.get(0).getStartTime().before(start)) {
                                equipmentRunningSectionList.get(0).setStartTime(start);
                    }
                }*/
                for (String productCount : productCountList) {
                    MdcEquipmentDto mdcEquipmentDtoFirst = equipmentWorkLineService.findProductCountStartTime(mdcEquipment.getSaveTableName(), productCount, mdcDateVo.getStartTime(), mdcDateVo.getEndTime());
                    if (mdcEquipmentDtoFirst == null) {
                        continue;
                    }
                    Date start = mdcEquipmentDtoFirst.getCollectTime();
                    MdcEquipmentDto mdcEquipmentDtoLast = equipmentWorkLineService.findProductCountEndTime(mdcEquipment.getSaveTableName(), productCount, mdcDateVo.getStartTime(), mdcDateVo.getEndTime());
                    if (mdcEquipmentDtoLast == null) {
                        continue;
                    }
                    Date end = mdcEquipmentDtoLast.getCollectTime();
                    List<MdcEquipmentRunningSection> equipmentRunningSectionList = mdcEquipmentRunningSectionService.selectRunningData(mdcEquipment.getEquipmentId(), start, end);
                    if (equipmentRunningSectionList != null && !equipmentRunningSectionList.isEmpty()) {
                        //时间修正
                        if (equipmentRunningSectionList.get(0).getStartTime().before(start)) {
                            equipmentRunningSectionList.get(0).setStartTime(start);
                        }
                        if (equipmentRunningSectionList.size() > 1) {
                            if (equipmentRunningSectionList.get(equipmentRunningSectionList.size() - 1).getEndTime().after(end)) {
                                equipmentRunningSectionList.get(equipmentRunningSectionList.size() - 1).setEndTime(end);
                            }
                            if (equipmentRunningSectionList.size() > 1) {
                                if (equipmentRunningSectionList.get(equipmentRunningSectionList.size() - 1).getEndTime().after(end)) {
                                    equipmentRunningSectionList.get(equipmentRunningSectionList.size() - 1).setEndTime(end);
                                }
                        } else {
                            if (equipmentRunningSectionList.get(0).getEndTime().after(end)) {
                                equipmentRunningSectionList.get(0).setEndTime(end);
                            }
                        }
                        //计算加工时长
                        long duration = this.handleProcessDuration(equipmentRunningSectionList);
                        if (duration != 0 && duration < 100000) {
                            MdcProcessCount mdcProcessCount = new MdcProcessCount();
                            mdcProcessCount.setEquipmentId(mdcEquipment.getEquipmentId());
                            mdcProcessCount.setEquipmentName(mdcEquipment.getEquipmentName());
                            if (StringUtils.isBlank(mdcEquipmentDtoFirst.getSequencenumber())) {
                                mdcProcessCount.setSequenceNumber(mdcEquipmentDtoLast.getSequencenumber());
                            } else {
                                if (equipmentRunningSectionList.get(0).getEndTime().after(end)) {
                                    equipmentRunningSectionList.get(0).setEndTime(end);
                                }
                                mdcProcessCount.setSequenceNumber(mdcEquipmentDtoFirst.getSequencenumber());
                            }
                            //计算加工时长
                            long duration = this.handleProcessDuration(equipmentRunningSectionList);
                            if (duration != 0 && duration < 100000) {
                                MdcProcessCount mdcProcessCount = new MdcProcessCount();
                                mdcProcessCount.setEquipmentId(mdcEquipment.getEquipmentId());
                                mdcProcessCount.setEquipmentName(mdcEquipment.getEquipmentName());
                                mdcProcessCount.setSequenceNumber(sequenceNumber);
                                mdcProcessCount.setDuration(duration);
                                mdcProcessCount.setTheDate(stringDate);
                                resultList.add(mdcProcessCount);
                            }
                            mdcProcessCount.setDuration(duration);
                            mdcProcessCount.setTheDate(stringDate);
                            resultList.add(mdcProcessCount);
                        }
                    }
                }
            }
        }
        return resultList;
@@ -272,7 +294,7 @@
    private Map<String, List<MdcDeviceCalendarVo>> mdcDeviceCalendarMap(String equipmentId, List<String> stringDates) {
        List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = mdcDeviceCalendarService.listByEquipmentAndDate(equipmentId, stringDates);
        if (mdcDeviceCalendarVos.isEmpty()) {
        if (mdcDeviceCalendarVos == null || mdcDeviceCalendarVos.isEmpty()) {
            return null;
        }
        Map<String, List<MdcDeviceCalendarVo>> map = new HashMap<>();