| | |
| | | */
|
| | | 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;
|
| | |
|
| | |
| | | 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");
|
| | | }
|
| | |
|
| | |
| | | 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();
|
| | | }
|
| | | }
|
| | |
| | | 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();
|
| | | }
|
| | |
|
| | |
|
| | |
| | | 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);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | 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 {
|
| | |
| | |
|
| | | 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":
|
| | |
| | | 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();
|
| | |
| | | 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
|
| | |
| | | }
|
| | |
|
| | | /**
|
| | | * @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;
|