y_ys79
2024-01-12 0412fec56593fee1b1fc0a1437c83d7356dd892c
整理代码
已修改1个文件
228 ■■■■ 文件已修改
mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/service/statistic/MdcStatisticThread.java 228 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/service/statistic/MdcStatisticThread.java
@@ -21,15 +21,15 @@
 */
public class MdcStatisticThread implements Runnable {
    
    private final Machine mdcMachine;
    private MachiningDataNc mdcDataNc;
    private MachineStatus mdcMachineStatus;
    private final Machine machine;
    private MachiningDataNc machiningDataNc;
    private MachineStatus machineStatus;
    private final RedisUtil redisUtil;
    private final int mdcInterval;
    private final MachiningDataMapper mdcDataMapper;
    private final MachiningDataNcMapper mdcDataNcMapper;
    private final MachineStatusMapper mdcMachineStatusMapper;
    private final MachiningDataMapper machiningDataMapper;
    private final MachiningDataNcMapper machiningDataNcMapper;
    private final MachineStatusMapper machineStatusMapper;
    private int dayStart = 0;
@@ -51,12 +51,12 @@
    private final Logger logger = LoggerFactory.getLogger(getClass());
    
    public MdcStatisticThread(Machine mdcMachine, Integer mdcInterval, Map<String, Object> mappers) {
        this.mdcMachine = mdcMachine;
        this.machine = mdcMachine;
        this.mdcInterval = mdcInterval;
        mdcDataMapper = (MachiningDataMapper) mappers.get("mdcDataMapper");
        mdcDataNcMapper = (MachiningDataNcMapper) mappers.get("mdcDataNcMapper");
        mdcMachineStatusMapper = (MachineStatusMapper) mappers.get("mdcMachineStatusMapper");
        machiningDataMapper = (MachiningDataMapper) mappers.get("mdcDataMapper");
        machiningDataNcMapper = (MachiningDataNcMapper) mappers.get("mdcDataNcMapper");
        machineStatusMapper = (MachineStatusMapper) mappers.get("mdcMachineStatusMapper");
        redisUtil = (RedisUtil) mappers.get("redisUtil");
    }
@@ -77,47 +77,47 @@
                        if (mdcData.getIsPartComplete()) {
                            cycleCount++;//TODO: 计算完工件数 ,这里可以直接统计
                        }
                        mdcMachineStatus.setTime(mdcData.getUpdateTime());
                        machineStatus.setTime(mdcData.getUpdateTime());
                    }
                    MachiningData lastData = mdcDatas.get(mdcDatas.size() - 1);
                    Integer opMode = lastData.getOpMode();
                    if ((opMode >= 200) && (opMode < 300)) {
                        mdcMachineStatus.setMode("AUTO");
                        machineStatus.setMode("AUTO");
                    } else {
                        mdcMachineStatus.setMode("MANUAL");
                        machineStatus.setMode("MANUAL");
                    }
                    mdcMachineStatus.setSpindleSpeed(lastData.getSpindleSpeed());
                    mdcMachineStatus.setSpindleOverride(lastData.getSpindleOverride());
                    mdcMachineStatus.setSpindleLoad(lastData.getSpindleLoad());
                    mdcMachineStatus.setFeedrateOverride(lastData.getFeedrateOverride());
                    mdcMachineStatus.setFeedRate(lastData.getFeedRate());
                    mdcMachineStatus.setRapidFeedOverride(lastData.getRapidFeedOverride());
                    mdcMachineStatus.setRapidFeed(lastData.getRapidFeed());
                    mdcMachineStatus.setProgName(lastData.getProgName());
                    mdcMachineStatus.setToolNo(lastData.getToolNo());
                    mdcMachineStatus.setToolName(lastData.getToolName());
                    mdcMachineStatus.setOperId(lastData.getOperId());
                    mdcMachineStatus.setCycleCount(cycleCount);//old var1
                    machineStatus.setSpindleSpeed(lastData.getSpindleSpeed());
                    machineStatus.setSpindleOverride(lastData.getSpindleOverride());
                    machineStatus.setSpindleLoad(lastData.getSpindleLoad());
                    machineStatus.setFeedrateOverride(lastData.getFeedrateOverride());
                    machineStatus.setFeedRate(lastData.getFeedRate());
                    machineStatus.setRapidFeedOverride(lastData.getRapidFeedOverride());
                    machineStatus.setRapidFeed(lastData.getRapidFeed());
                    machineStatus.setProgName(lastData.getProgName());
                    machineStatus.setToolNo(lastData.getToolNo());
                    machineStatus.setToolName(lastData.getToolName());
                    machineStatus.setOperId(lastData.getOperId());
                    machineStatus.setCycleCount(cycleCount);//old var1
                    //mdcMachineStatus.setcy(String.valueOf(cycleTime));
                    mdcMachineStatus.setCycleTime(cycleTime);//old var2
                    machineStatus.setCycleTime(cycleTime);//old var2
                    //mdcMachineStatus.setVar3(String.valueOf(machineOnTime));
                    mdcMachineStatus.setMachineOnTime(machineOnTime);//var3
                    mdcMachineStatus.setVar4(lastData.getAxisNames());
                    mdcMachineStatus.setVar5(lastData.getAxisAbsolute());
                    machineStatus.setMachineOnTime(machineOnTime);//var3
                    machineStatus.setVar4(lastData.getAxisNames());
                    machineStatus.setVar5(lastData.getAxisAbsolute());
                    //mdcMachineStatus.setVar6(lastData.getAxisServoloads());//轴伺服负载
                    mdcMachineStatus.setAxisServoloads(lastData.getAxisServoloads());//轴伺服负载
                    mdcMachineStatus.setVar8(String.valueOf(pmaintenanceStatisticTime));
                    mdcMachineStatus.setVar9(pmaintenanceFlag ? "1" : "0");
                    machineStatus.setAxisServoloads(lastData.getAxisServoloads());//轴伺服负载
                    machineStatus.setVar8(String.valueOf(pmaintenanceStatisticTime));
                    machineStatus.setVar9(pmaintenanceFlag ? "1" : "0");
                    lastMdcDataTime = lastData.getUpdateTime();
                }
                insertOrUpdateMachineStatus();
                saveMachineStatus();
                Thread.sleep(mdcInterval);
            } catch (Exception e) {
                logger.error("[{}] exception", mdcMachine.getName());
                logger.error("[{}] exception", machine.getName());
                e.printStackTrace();
            }
        }
@@ -137,37 +137,37 @@
        List<MdcMachineStatus> machineStatus = mdcMachineStatusMapper
                .selectByExampleAndRowBounds(statusExample, rowBounds);
                */
        List<MachineStatus> machineStatusList = mdcMachineStatusMapper.machineLastListByTime(mdcMachine.getId(),dayStart);//当前班的最新一条数据
        List<MachineStatus> machineStatusList = machineStatusMapper.machineLastListByTime(machine.getId(),dayStart);//当前班的最新一条数据
        if (!machineStatusList.isEmpty()) {
            mdcMachineStatus = machineStatusList.get(0);
            machineStatus = machineStatusList.get(0);
        } else {
            mdcMachineStatus = new MachineStatus();
            mdcMachineStatus.setMachineId(mdcMachine.getId());
            mdcMachineStatus.setTime(dayStart);
            mdcMachineStatus.setCycleCount(0);
            machineStatus = new MachineStatus();
            machineStatus.setMachineId(machine.getId());
            machineStatus.setTime(dayStart);
            machineStatus.setCycleCount(0);
            //mdcMachineStatus.setVar2("0");
            mdcMachineStatus.setCycleTime(0);
            mdcMachineStatus.setMachineOnTime(0);
            mdcMachineStatus.setVar4("0");
            mdcMachineStatus.setVar5("0");
            mdcMachineStatus.setAxisServoloads("0");
            machineStatus.setCycleTime(0);
            machineStatus.setMachineOnTime(0);
            machineStatus.setVar4("0");
            machineStatus.setVar5("0");
            machineStatus.setAxisServoloads("0");
            MachiningData lastDayMdcData = getShiftLastMachiningData();
            if (lastDayMdcData != null) {
                mdcMachineStatus.setStatus(lastDayMdcData.getState());
                machineStatus.setStatus(lastDayMdcData.getState());
            } else {
                mdcMachineStatus.setStatus("STOP");
                machineStatus.setStatus("STOP");
            }
            mdcMachineStatusMapper.insert(mdcMachineStatus);
            machineStatusMapper.insert(machineStatus);
        }
        lastMdcDataTime = mdcMachineStatus.getTime();
        lastMdcDataTime = machineStatus.getTime();
        //cycleCount = Integer.parseInt(mdcMachineStatus.getVar1());
        cycleCount = mdcMachineStatus.getCycleCount();
        cycleCount = machineStatus.getCycleCount();
        //cycleTime = Integer.parseInt(mdcMachineStatus.getVar2());
        cycleTime = mdcMachineStatus.getCycleTime();
        machineOnTime = mdcMachineStatus.getMachineOnTime();
        cycleTime = machineStatus.getCycleTime();
        machineOnTime = machineStatus.getMachineOnTime();
    }
   
    
@@ -181,26 +181,26 @@
        RowBounds dataNcRowBounds = new RowBounds(0, 1);
        List<MachiningDataNc> mdcDataNcs = mdcDataNcMapper.selectByExampleAndRowBounds(dataNcExample, dataNcRowBounds);
        */
        List<MachiningDataNc> mdcDataNcs = mdcDataNcMapper.machineLastList( mdcMachine.getId());
        List<MachiningDataNc> mdcDataNcs = machiningDataNcMapper.machineLastList( machine.getId());
        if ((mdcDataNcs != null) && (mdcDataNcs.size() != 0)) {
            mdcDataNc = mdcDataNcs.get(0);
            machiningDataNc = mdcDataNcs.get(0);
        } else {
            mdcDataNc = new MachiningDataNc();
            mdcDataNc.setMachineId(mdcMachine.getId());
            machiningDataNc = new MachiningDataNc();
            machiningDataNc.setMachineId(machine.getId());
            MachiningData lastDayMdcData = getShiftLastMachiningData();
            if (lastDayMdcData != null) {
                mdcDataNc.setState(lastDayMdcData.getState());
                mdcDataNc.setStartTime(lastDayMdcData.getMdcTime());
                mdcDataNc.setEndTime(lastDayMdcData.getUpdateTime());
                machiningDataNc.setState(lastDayMdcData.getState());
                machiningDataNc.setStartTime(lastDayMdcData.getMdcTime());
                machiningDataNc.setEndTime(lastDayMdcData.getUpdateTime());
            } else {
                //mdcMachineStatus.setStatus("STOP");
                mdcDataNc.setState("STOP");//TODO 这是yys改的,以前是上一行的mdcMachineStatus妇之
                mdcDataNc.setStartTime(dayStart);
                mdcDataNc.setEndTime(dayStart);
                machiningDataNc.setState("STOP");//TODO 这是yys改的,以前是上一行的mdcMachineStatus妇之
                machiningDataNc.setStartTime(dayStart);
                machiningDataNc.setEndTime(dayStart);
            }
            mdcDataNcMapper.insert(mdcDataNc);
            machiningDataNcMapper.insert(machiningDataNc);
        }
    }
@@ -219,7 +219,7 @@
        RowBounds rowBounds = new RowBounds(0, 1);
        List<MachiningData> mdcDatas = mdcDataMapper.selectByExampleAndRowBounds(mdcDataExample, rowBounds);
        */
        List<MachiningData> mdcDatas =mdcDataMapper.machineLastDataBeforeTime(mdcMachine.getId(),dayStart);
        List<MachiningData> mdcDatas =machiningDataMapper.machineLastDataBeforeTime(machine.getId(),dayStart);
        if (!mdcDatas.isEmpty()) {
            return mdcDatas.get(0);
        } else {
@@ -238,11 +238,11 @@
        
        return mdcDatas;
        */
        return mdcDataMapper.machineLastDatasAfterUpdateTime(mdcMachine.getId(),lastMdcDataTime);
        return machiningDataMapper.machineLastDatasAfterUpdateTime(machine.getId(),lastMdcDataTime);
    }
    private void stateHandler(MachiningData mdcData) {
        int duration = mdcData.getUpdateTime() - Math.max(mdcMachineStatus.getTime(), mdcData.getMdcTime());
        int duration = mdcData.getUpdateTime() - Math.max(machineStatus.getTime(), mdcData.getMdcTime());
        String state = mdcData.getState();
        switch (state) {
            case "STOP":
@@ -264,56 +264,56 @@
                machineOnFlag = true;
                cycleFlag = false;
                machineOnTime += duration;
                mdcMachineStatus.setAlarmNo(mdcData.getAlarmNo());
                mdcMachineStatus.setAlarmMsg(mdcData.getAlarmMsg());
                machineStatus.setAlarmNo(mdcData.getAlarmNo());
                machineStatus.setAlarmMsg(mdcData.getAlarmMsg());
                break;
            default:
                break;
        }
        mdcMachineStatus.setStatus(state);
        machineStatus.setStatus(state);
        if (!"ALARM".equals(state)) {
            mdcMachineStatus.setAlarmNo(null);
            mdcMachineStatus.setAlarmMsg(null);
            machineStatus.setAlarmNo(null);
            machineStatus.setAlarmMsg(null);
        }
        if (mdcDataNc.getEndTime() < mdcData.getMdcTime()) {
        if (machiningDataNc.getEndTime() < mdcData.getMdcTime()) {
            //mdcDataNcMapper.updateByPrimaryKeySelective(mdcDataNc);
            mdcDataNcMapper.updateById(mdcDataNc);
            machiningDataNcMapper.updateById(machiningDataNc);
            
            mdcDataNc.setId(null);
            mdcDataNc.setState("NODATA");
            mdcDataNc.setStartTime(mdcDataNc.getEndTime());
            mdcDataNc.setEndTime(mdcData.getMdcTime());
            machiningDataNc.setId(null);
            machiningDataNc.setState("NODATA");
            machiningDataNc.setStartTime(machiningDataNc.getEndTime());
            machiningDataNc.setEndTime(mdcData.getMdcTime());
            //mdcDataNcMapper.insertSelective(mdcDataNc);
            mdcDataNcMapper.insert(mdcDataNc);
            machiningDataNcMapper.insert(machiningDataNc);
            mdcDataNc.setId(null);
            mdcDataNc.setState(mdcData.getState());
            mdcDataNc.setStartTime(mdcData.getMdcTime());
            mdcDataNc.setEndTime(mdcData.getMdcTime());
            machiningDataNc.setId(null);
            machiningDataNc.setState(mdcData.getState());
            machiningDataNc.setStartTime(mdcData.getMdcTime());
            machiningDataNc.setEndTime(mdcData.getMdcTime());
            //mdcDataNcMapper.insertSelective(mdcDataNc);
            mdcDataNcMapper.insert(mdcDataNc);
            machiningDataNcMapper.insert(machiningDataNc);
        }
        if (state.equals(mdcDataNc.getState())) {
            mdcDataNc.setEndTime(mdcData.getUpdateTime());
        if (state.equals(machiningDataNc.getState())) {
            machiningDataNc.setEndTime(mdcData.getUpdateTime());
            //mdcDataNcMapper.updateByPrimaryKeySelective(mdcDataNc);
            mdcDataNcMapper.updateById(mdcDataNc);
            machiningDataNcMapper.updateById(machiningDataNc);
        } else {
            mdcDataNc.setEndTime(mdcData.getMdcTime());
            machiningDataNc.setEndTime(mdcData.getMdcTime());
            //mdcDataNcMapper.updateByPrimaryKeySelective(mdcDataNc);
            mdcDataNcMapper.updateById(mdcDataNc);
            machiningDataNcMapper.updateById(machiningDataNc);
            
            mdcDataNc.setId(null);
            mdcDataNc.setState(state);
            mdcDataNc.setStartTime(mdcData.getMdcTime());
            mdcDataNc.setEndTime(mdcData.getUpdateTime());
            mdcDataNcMapper.insert(mdcDataNc);
            machiningDataNc.setId(null);
            machiningDataNc.setState(state);
            machiningDataNc.setStartTime(mdcData.getMdcTime());
            machiningDataNc.setEndTime(mdcData.getUpdateTime());
            machiningDataNcMapper.insert(machiningDataNc);
           
        }
    }
    /*
    private void statisticHandler() {
        int time = (int) TimestampUtil.getCurrentTimestamp();
        int dayStartTimestamprt = (int) TimestampUtil.getShiftDayStartTimestamp();
@@ -321,25 +321,25 @@
            time = Math.min(time, dayStartTimestamprt-1);
        }
        switch (mdcMachineStatus.getStatus()) {
        switch (machineStatus.getStatus()) {
            case "RUN":
                machineOnFlag = true;
                cycleFlag = true;
                machineOnTime += time - mdcMachineStatus.getTime();
                cycleTime += time - mdcMachineStatus.getTime();
                machineOnTime += time - machineStatus.getTime();
                cycleTime += time - machineStatus.getTime();
                break;
            case "IDLE":
            case "ALARM":
                machineOnFlag = true;
                cycleFlag = false;
                machineOnTime += time - mdcMachineStatus.getTime();
                machineOnTime += time - machineStatus.getTime();
            default:
                break;
        }
        mdcMachineStatus.setTime(time);
        machineStatus.setTime(time);
    }
    */
    /**
     * @author: tianmingqiang
     * @date: 2020/7/11 11:26
@@ -454,29 +454,25 @@
    }
    /**
     * @author: tianmingqiang
     * @date: 2020/7/3 22:51
     * @description: insertOrUpdateMachineStatus
     * @param:
     * @return: void
     * 保存机床状态记录
     */
    private void insertOrUpdateMachineStatus() {
        int n = mdcMachineStatusMapper.updateById(mdcMachineStatus);
    private void saveMachineStatus() {
        int n = machineStatusMapper.updateById(machineStatus);
        if (n == 0) {
            mdcMachineStatusMapper.insert(mdcMachineStatus);
            machineStatusMapper.insert(machineStatus);
        }
        int newDayStart = (int) TimestampUtil.getShiftDayStartTimestamp();
        if (dayStart < newDayStart) {
            logger.info("[{}] new day insert, status: {}", mdcMachine.getName(), mdcMachineStatus.toString());
            logger.info("[{}] new day insert, status: {}", machine.getName(), machineStatus.toString());
            dayStart = newDayStart;
            mdcMachineStatus.setTime(dayStart);
            mdcMachineStatus.setId(null);
            mdcMachineStatus.setCycleCount(0);//var1
            mdcMachineStatus.setCycleTime(0);//var2
            mdcMachineStatus.setMachineOnTime(0);//var3
            mdcMachineStatus.setVar9("0");
            mdcMachineStatusMapper.insert(mdcMachineStatus);
            machineStatus.setTime(dayStart);
            machineStatus.setId(null);
            machineStatus.setCycleCount(0);//var1
            machineStatus.setCycleTime(0);//var2
            machineStatus.setMachineOnTime(0);//var3
            machineStatus.setVar9("0");
            machineStatusMapper.insert(machineStatus);
            cycleCount = 0;
            cycleTime = 0;