yangys
2024-01-22 eddf49b6123277d934bd1479e86922ce77bb31a7
增加设备数据明细查询接口
已修改4个文件
已添加4个文件
713 ■■■■■ 文件已修改
mdc-parent/mdc-collect/src/main/java/com/qianwen/mdc/MdcCollectApplication.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mdc-parent/mdc-collect/src/main/java/com/qianwen/mdc/service/focas/JNAFocas.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mdc-parent/mdc-collect/src/test/java/com/qianwen/mdc/service/focas/FocasClientTest.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mdc-parent/mdc-collect/src/test/java/com/qianwen/mdc/service/focas/MyJNAFocas.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/controller/MachineDataController.java 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/dto/machine/MachiningDataFullDTO.java 361 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/mapper/MachiningDataMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mdc-parent/mdc-showdb-mysql/src/main/resources/mapper/MachiningDataMapper.xml 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mdc-parent/mdc-collect/src/main/java/com/qianwen/mdc/MdcCollectApplication.java
@@ -5,8 +5,11 @@
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.system.ApplicationHome;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
import com.qianwen.mdc.service.focas.JNAFocas;
@ServletComponentScan(basePackages = {"com.qianwen.mdc.listener"})
@SpringBootApplication
@@ -18,5 +21,10 @@
    public static void main(String[] args) {
        logger.trace("MdcCollectionApplication start");
        SpringApplication.run(MdcCollectApplication.class, args);
        ApplicationHome ah = new ApplicationHome(JNAFocas.class);
        String dllPath = ah.getSource().getParentFile().toString() + "\\lib\\focas\\";
        System.out.println("dllPath="+dllPath);
    }
}
mdc-parent/mdc-collect/src/main/java/com/qianwen/mdc/service/focas/JNAFocas.java
@@ -9,6 +9,7 @@
public interface JNAFocas extends Library {
    public static final ApplicationHome ah = new ApplicationHome(JNAFocas.class);
    public static final String dllPath = ah.getSource().getParentFile().toString() + "\\lib\\focas\\";
    //public static final String dllPath = "lib\\focas\\";
    public static final JNAFocas HxFocas = (JNAFocas) Native.load(dllPath + "HxFocasApi", JNAFocas.class);
    public static final JNAFocas Fwlib32 = (JNAFocas) Native.load(dllPath + "Fwlib32", JNAFocas.class);
    public static final JNAFocas Fwlibe1 = (JNAFocas) Native.load(dllPath + "fwlibe1", JNAFocas.class);
mdc-parent/mdc-collect/src/test/java/com/qianwen/mdc/service/focas/FocasClientTest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.qianwen.mdc.service.focas;
import org.junit.jupiter.api.Test;
import com.sun.jna.Native;
import com.sun.jna.ptr.ShortByReference;
public class FocasClientTest {
    public static final String dllPath = "D:\\mdc\\lib\\focas\\";
    //public static final MyJNAFocas HxFocas = (MyJNAFocas) Native.load(dllPath + "HxFocasApi", JNAFocas.class);
    public static final MyJNAFocas Fwlib32 = (MyJNAFocas) Native.load(dllPath + "Fwlib64", MyJNAFocas.class);
    @Test
    public void testConn() {
        ShortByReference flibHndl = new ShortByReference();
        //short result = Fwlib32.connectServer("localhost", (short)8193, 5000, flibHndl);
        //short ret = Fwlib32.disconnectServer(flibHndl.getValue());
        /*
        FocasClient c = new FocasClient();
        c.setIp("localhost");
        c.setPort((short)8193);//默认端口
        int cresult = c.connect();
        System.out.println(cresult);
        c.disconnect();
        */
    }
}
mdc-parent/mdc-collect/src/test/java/com/qianwen/mdc/service/focas/MyJNAFocas.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.qianwen.mdc.service.focas;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.ptr.ShortByReference;
public interface MyJNAFocas  extends Library {
    public static final String dllPath = "lib\\focas\\";
    //public static final JNAFocas HxFocas = (JNAFocas) Native.load(dllPath + "HxFocasApi", JNAFocas.class);
    public static final JNAFocas Fwlib32 = (JNAFocas) Native.load(dllPath + "Fwlib32", JNAFocas.class);
    //public static final JNAFocas Fwlibe1 = (JNAFocas) Native.load(dllPath + "fwlibe1", JNAFocas.class);
     short connectServer(String ipAddr, short port, int timeout, ShortByReference flibHndl);
     short disconnectServer(short flibHndl);
}
mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/controller/MachineDataController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,239 @@
package com.qianwen.mdc.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.qianwen.mdc.common.OpResult;
import com.qianwen.mdc.domain.AccountToken;
import com.qianwen.mdc.domain.MachiningData;
import com.qianwen.mdc.dto.machine.MachiningDataFullDTO;
import com.qianwen.mdc.mapper.AccountTokenMapper;
import com.qianwen.mdc.mapper.MachineMapper;
import com.qianwen.mdc.mapper.MachiningDataMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.List;
@RestController
@CrossOrigin
@RequestMapping(value = "/machinedata", method = RequestMethod.POST)
public class MachineDataController {
     @Autowired
        private AccountTokenMapper mdcTokenMapper;
        @Autowired
        private MachineMapper machineMapper;
        @Autowired
        private MachiningDataMapper machiningDataMapper;
        public static final Logger logger = LoggerFactory.getLogger(MachineDataController.class);
        /*
    @RequestMapping(value = "/current", method = RequestMethod.POST)
    public JSONObject getCurrentMachineData(@RequestHeader(value = "mdc-token", defaultValue = "") String token,
            String pageNo) {
        //TODO  checktoken
        JSONObject jsonResult = new JSONObject();
        jsonResult.put("result", "SUCCESS");
        List<MdcMachineData> list = mdcMachineDataMapper.selectAll();
        String totalPage = String.format("%d", (list.size() - 1) / 10 + 1);
        jsonResult.put("totalPage", totalPage);
        JSONArray jsonArray = new JSONArray();
        jsonResult.put("list", jsonArray);
        int curRecord = (Integer.parseInt(pageNo) - 1) * 10;
        for (int i=curRecord; i<curRecord+10; i++) {
            if (i >= list.size()) {
                break;
            }
            MdcMachineData mdcMachineData = list.get(i);
            JSONObject item = new JSONObject();
            jsonArray.add(item);
            Machine mdcMachineObj = new Machine();
            mdcMachineObj.setId(mdcMachineData.getMachineId());
            MdcMachine mdcMachine = mdcMachineMapper.selectOne(mdcMachineObj);
            item.put("name", mdcMachine.getName());
            DateFormat df = new SimpleDateFormat("HH:mm:ss");
            item.put("time", df.format(mdcMachineData.getTime()));
            item.put("state", mdcMachineData.getState());
            item.put("spindleSpeed", mdcMachineData.getSpindleSpeed());
            item.put("spindleOverride", mdcMachineData.getSpindleOverride());
            item.put("spindleLoad", mdcMachineData.getSpindleLoad());
            item.put("feedrateOverride", mdcMachineData.getFeedrateOverride());
            item.put("feedRate", mdcMachineData.getFeedRate());
            item.put("rapidFeed", mdcMachineData.getRapidFeed());
            item.put("progName", mdcMachineData.getProgName());
            item.put("alarmNo", mdcMachineData.getAlarmNo());
            item.put("alarmMsg", mdcMachineData.getAlarmMsg());
            item.put("toolNo", mdcMachineData.getToolNo());
            item.put("toolName", mdcMachineData.getToolName());
        }
        return jsonResult;
    }
    @RequestMapping(value = "/history", method = RequestMethod.POST)
    public JSONObject getHistoryMachineData(@RequestHeader(value = "mdc-token", defaultValue = "") String token,
            String pageNo) {
        //checktoken
        JSONObject jsonResult = new JSONObject();
        jsonResult.put("result", "SUCCESS");
        List<MachineDataHistory> list = mdcMachineDataHistoryMapper.selectAll();
        String totalPage = String.format("%d", (list.size() - 1) / 10 + 1);
        jsonResult.put("totalPage", totalPage);
        JSONArray jsonArray = new JSONArray();
        jsonResult.put("list", jsonArray);
        int curRecord = (Integer.parseInt(pageNo) - 1) * 10;
        for (int i=curRecord; i<curRecord+10; i++) {
            if (i >= list.size()) {
                break;
            }
            MdcMachineDataHistory machineDataHistory = list.get(i);
            JSONObject item = new JSONObject();
            jsonArray.add(item);
            MdcMachine mdcMachineObj = new MdcMachine();
            mdcMachineObj.setId(machineDataHistory.getMachineId());
            MdcMachine mdcMachine = mdcMachineMapper.selectOne(mdcMachineObj);
            item.put("name", mdcMachine.getName());
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            item.put("time", df.format(machineDataHistory.getTime()));
            item.put("state", machineDataHistory.getState());
            item.put("spindleSpeed", machineDataHistory.getSpindleSpeed());
            item.put("spindleOverride", machineDataHistory.getSpindleOverride());
            item.put("spindleLoad", machineDataHistory.getSpindleLoad());
            item.put("feedrateOverride", machineDataHistory.getFeedrateOverride());
            item.put("feedRate", machineDataHistory.getFeedRate());
            item.put("rapidFeed", machineDataHistory.getRapidFeed());
            item.put("progName", machineDataHistory.getProgName());
            item.put("alarmNo", machineDataHistory.getAlarmNo());
            item.put("alarmMsg", machineDataHistory.getAlarmMsg());
            item.put("toolNo", machineDataHistory.getToolNo());
            item.put("toolName", machineDataHistory.getToolName());
        }
        return jsonResult;
    }*/
    @RequestMapping(value = "/getbyid", method = RequestMethod.POST)
    private OpResult<JSONObject> getMachineDetailById(@RequestHeader(value = "mdc-token", defaultValue = "") String token,
            Long machineId) {
        //应该是选择表内最新的一条数据显示(list.get(list.size()-1)),然后
        /*
        MdcMachineData mdcMachineDataObj = new MdcMachineData();
        mdcMachineDataObj.setMachineId(Integer.parseInt(machineId));
        List<MdcMachineData> list = mdcMachineDataMapper.select(mdcMachineDataObj);
        String totalPage = String.format("%d", (list.size() - 1) / 10 + 1);
        */
        try {
            JSONObject jsonResult = new JSONObject();
            MachiningDataFullDTO data = machiningDataMapper.machineLastData(machineId);
            //jsonResult.put("totalPage", totalPage);
            if (data != null) {
                /*
                JSONObject machineStatus = new JSONObject();
                Machine machine = machineMapper.selectById(machineId)
                machineStatus.put("name", machine.getName());
                DateFormat df = new SimpleDateFormat("HH:mm:ss");
                machineStatus.put("time", df.format(machineData.getTime()));
                machineStatus.put("state", machineData.getState());
                machineStatus.put("feedRate", machineData.getFeedRate());
                machineStatus.put("rapidFeed", machineData.getRapidFeed());
                machineStatus.put("progName", machineData.getProgName());
                machineStatus.put("alarmNo", machineData.getAlarmNo());
                machineStatus.put("alarmMsg", machineData.getAlarmMsg());
                machineStatus.put("toolNo", machineData.getToolNo());
                machineStatus.put("toolName", machineData.getToolName());
                machineStatus.put("operId", machineData.getOperId());
                if ("STOP".equals(machineData.getState())) {
                    machineStatus.put("spindleSpeed", "0");
                    machineStatus.put("spindleOverride", "0");
                    machineStatus.put("spindleLoad", "0");
                    machineStatus.put("feedrateOverride", "0");
                } else {
                    machineStatus.put("spindleSpeed", machineData.getSpindleSpeed());
                    machineStatus.put("spindleOverride", machineData.getSpindleOverride());
                    machineStatus.put("spindleLoad", machineData.getSpindleLoad());
                    machineStatus.put("feedrateOverride", machineData.getFeedrateOverride());
                }
                */
                jsonResult.put("status", data);
            } else {
                jsonResult.put("status", new JSONObject());
            }
            jsonResult.put("list",machiningDataMapper.machineLastData(machineId, 10));
            return OpResult.success(jsonResult);
        }catch(Exception e) {
            logger.error("查询明细失败",e);
            return OpResult.fail(e.getMessage());
        }
        /*
        JSONArray jsonArray = new JSONArray();
        int curRecord = (Integer.parseInt(pageNo) - 1) * 10;
        jsonResult.put("list", jsonArray);
        for (int i=curRecord; i<curRecord+10; i++) {
            if (i >= list.size()) {
                break;
            }
            MdcMachineData machineData = list.get(i);
            JSONObject item = new JSONObject();
            jsonArray.add(item);
            MdcMachine mdcMachineObj = new MdcMachine();
            mdcMachineObj.setId(machineData.getMachineId());
            MdcMachine machine = mdcMachineMapper.selectOne(mdcMachineObj);
            item.put("name", machine.getName());
            DateFormat df = new SimpleDateFormat("HH:mm:ss");
            item.put("time", df.format(machineData.getTime()));
            item.put("state", machineData.getState());
            item.put("spindleSpeed", machineData.getSpindleSpeed());
            item.put("spindleOverride", machineData.getSpindleOverride());
            item.put("spindleLoad", machineData.getSpindleLoad());
            item.put("feedrateOverride", machineData.getFeedrateOverride());
            item.put("feedRate", machineData.getFeedRate());
            item.put("rapidFeed", machineData.getRapidFeed());
            item.put("progName", machineData.getProgName());
            item.put("alarmNo", machineData.getAlarmNo());
            item.put("alarmMsg", machineData.getAlarmMsg());
            item.put("toolNo", machineData.getToolNo());
            item.put("toolName", machineData.getToolName());
            item.put("operId", machineData.getOperId());
        }
    */
    }
}
mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/dto/machine/MachiningDataFullDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,361 @@
package com.qianwen.mdc.dto.machine;
public class MachiningDataFullDTO {
    private Long id;
    private Long machineId;
    private String machineName;
    private Integer mdcTime;
    private Integer updateTime;
    private String state;
    /**
     * machine mode: auto/manual
     */
    private String mode;
    /**
     * operation mode(JOG:0<=X<100;MDA:100<=X<200;AUTO:200<=X<300;REF:300<=X<400;other:9000<=X<=9999)
     */
    private Integer opMode;
    /**
     * ä¸»è½´è½¬é€Ÿ
     */
    private Integer spindleSpeed;
    /**
     * ä¸»è½´å€çއ
     */
    private Integer spindleOverride;
    /**
     * ä¸»è½´è´Ÿè½½
     */
    private Integer spindleLoad;
    /**
     * è¿›ç»™å€çއ
     */
    private Integer feedrateOverride;
    /**
     * è¿›ç»™çއ
     */
    private Integer feedRate;
    /**
     * å¿«é€Ÿè¿›ç»™å€çއ G00的倍率
     */
    private Integer rapidFeedOverride;
    /**
     * å¿«é€Ÿè¿›ç»™
     */
    private Integer rapidFeed;
    /**
     * ç¨‹åºåç§°
     */
    private String progName;
    /**
     * program block
     */
    private String progBlock;
    /**
     * æŠ¥è­¦ç¼–号
     */
    private String alarmNo;
    /**
     * alarm message
     */
    private String alarmMsg;
    /**
     * åˆ€å…·ç¼–号
     */
    private Integer toolNo;
    /**
     * åˆ€å…·åç§°
     */
    private String toolName;
    /**
     * operation id
     */
    private Integer operId;
    /**
     * axis names
     */
    private String axisNames;
    /**
     * è½´ ç»å¯¹åæ ‡
     */
    private String axisAbsolute;
    /**
     * è½´ ç›¸å¯¹åæ ‡
     */
    private String axisRelative;
    /**
     * è½´ä¼ºæœè´Ÿè½½
     */
    private String axisServoloads;
    /**
     * is maintain: 1/0
     */
    private Boolean isMaintain;
    /**
     * is part complete
     */
    private Boolean isPartComplete;
    public String getMachineName() {
        return machineName;
    }
    public void setMachineName(String machineName) {
        this.machineName = machineName;
    }
    public Boolean getIsMaintain() {
        return isMaintain;
    }
    public void setIsMaintain(Boolean isMaintain) {
        this.isMaintain = isMaintain;
    }
    public Boolean getIsPartComplete() {
        return isPartComplete;
    }
    public void setIsPartComplete(Boolean isPartComplete) {
        this.isPartComplete = isPartComplete;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getMachineId() {
        return machineId;
    }
    public void setMachineId(Long machineId) {
        this.machineId = machineId;
    }
    public Integer getMdcTime() {
        return mdcTime;
    }
    public void setMdcTime(Integer mdcTime) {
        this.mdcTime = mdcTime;
    }
    public Integer getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Integer updateTime) {
        this.updateTime = updateTime;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
    public String getMode() {
        return mode;
    }
    public void setMode(String mode) {
        this.mode = mode;
    }
    public Integer getOpMode() {
        return opMode;
    }
    public void setOpMode(Integer opMode) {
        this.opMode = opMode;
    }
    public Integer getSpindleSpeed() {
        return spindleSpeed;
    }
    public void setSpindleSpeed(Integer spindleSpeed) {
        this.spindleSpeed = spindleSpeed;
    }
    public Integer getSpindleOverride() {
        return spindleOverride;
    }
    public void setSpindleOverride(Integer spindleOverride) {
        this.spindleOverride = spindleOverride;
    }
    public Integer getSpindleLoad() {
        return spindleLoad;
    }
    public void setSpindleLoad(Integer spindleLoad) {
        this.spindleLoad = spindleLoad;
    }
    public Integer getFeedrateOverride() {
        return feedrateOverride;
    }
    public void setFeedrateOverride(Integer feedrateOverride) {
        this.feedrateOverride = feedrateOverride;
    }
    public Integer getFeedRate() {
        return feedRate;
    }
    public void setFeedRate(Integer feedRate) {
        this.feedRate = feedRate;
    }
    public Integer getRapidFeedOverride() {
        return rapidFeedOverride;
    }
    public void setRapidFeedOverride(Integer rapidFeedOverride) {
        this.rapidFeedOverride = rapidFeedOverride;
    }
    public Integer getRapidFeed() {
        return rapidFeed;
    }
    public void setRapidFeed(Integer rapidFeed) {
        this.rapidFeed = rapidFeed;
    }
    public String getProgName() {
        return progName;
    }
    public void setProgName(String progName) {
        this.progName = progName;
    }
    public String getProgBlock() {
        return progBlock;
    }
    public void setProgBlock(String progBlock) {
        this.progBlock = progBlock;
    }
    public String getAlarmNo() {
        return alarmNo;
    }
    public void setAlarmNo(String alarmNo) {
        this.alarmNo = alarmNo;
    }
    public String getAlarmMsg() {
        return alarmMsg;
    }
    public void setAlarmMsg(String alarmMsg) {
        this.alarmMsg = alarmMsg;
    }
    public Integer getToolNo() {
        return toolNo;
    }
    public void setToolNo(Integer toolNo) {
        this.toolNo = toolNo;
    }
    public String getToolName() {
        return toolName;
    }
    public void setToolName(String toolName) {
        this.toolName = toolName;
    }
    public Integer getOperId() {
        return operId;
    }
    public void setOperId(Integer operId) {
        this.operId = operId;
    }
    public String getAxisNames() {
        return axisNames;
    }
    public void setAxisNames(String axisNames) {
        this.axisNames = axisNames;
    }
    public String getAxisAbsolute() {
        return axisAbsolute;
    }
    public void setAxisAbsolute(String axisAbsolute) {
        this.axisAbsolute = axisAbsolute;
    }
    public String getAxisRelative() {
        return axisRelative;
    }
    public void setAxisRelative(String axisRelative) {
        this.axisRelative = axisRelative;
    }
    public String getAxisServoloads() {
        return axisServoloads;
    }
    public void setAxisServoloads(String axisServoloads) {
        this.axisServoloads = axisServoloads;
    }
}
mdc-parent/mdc-show/src/main/java/com/qianwen/mdc/mapper/MachiningDataMapper.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qianwen.mdc.domain.MachiningData;
import com.qianwen.mdc.dto.machine.MachiningDataFullDTO;
public interface MachiningDataMapper extends BaseMapper<MachiningData> {
    
@@ -18,4 +19,18 @@
     * @return
     */
    List<MachiningData> machineLastDatasAfterUpdateTime(@Param("machineId")Long machineId,@Param("updateTime") int updateTime);
    /**
     * æŸè®¾å¤‡æœ€åŽä¸€æ¡é‡‡é›†çš„æ•°æ®
     * @param machineId è®¾å¤‡id
     * @return
     */
    MachiningDataFullDTO machineLastData(Long machineId);
    /**
     * æŸè®¾å¤‡æœ€åŽn条(limit限定)采集的数据
     * @param machineId è®¾å¤‡id
     * @return æ•°æ®åˆ—表
     */
    MachiningDataFullDTO machineLastData(@Param("machineId")Long machineId,@Param("limit")int limit);
}
mdc-parent/mdc-showdb-mysql/src/main/resources/mapper/MachiningDataMapper.xml
@@ -31,9 +31,43 @@
    <result column="is_maintain" jdbcType="BIT" property="isMaintain" />
    <result column="is_part_complete" jdbcType="BIT" property="isPartComplete" />
    
  </resultMap>
  
  <resultMap id="DetailResultMap" type="com.qianwen.mdc.dto.machine.MachiningDataFullDTO">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="machine_id" jdbcType="INTEGER" property="machineId" />
    <result column="mdc_time" jdbcType="INTEGER" property="mdcTime" />
    <result column="update_time" jdbcType="INTEGER" property="updateTime" />
    <result column="state" jdbcType="VARCHAR" property="state" />
    <result column="mode" jdbcType="VARCHAR" property="mode" />
    <result column="op_mode" jdbcType="INTEGER" property="opMode" />
    <result column="spindle_speed" jdbcType="INTEGER" property="spindleSpeed" />
    <result column="spindle_override" jdbcType="INTEGER" property="spindleOverride" />
    <result column="spindle_load" jdbcType="INTEGER" property="spindleLoad" />
    <result column="feedrate_override" jdbcType="INTEGER" property="feedrateOverride" />
    <result column="feed_rate" jdbcType="INTEGER" property="feedRate" />
    <result column="rapid_feed_override" jdbcType="INTEGER" property="rapidFeedOverride" />
    <result column="rapid_feed" jdbcType="INTEGER" property="rapidFeed" />
    <result column="prog_name" jdbcType="VARCHAR" property="progName" />
    <result column="prog_block" jdbcType="VARCHAR" property="progBlock" />
    <result column="alarm_no" jdbcType="VARCHAR" property="alarmNo" />
    <result column="alarm_msg" jdbcType="VARCHAR" property="alarmMsg" />
    <result column="tool_no" jdbcType="INTEGER" property="toolNo" />
    <result column="tool_name" jdbcType="VARCHAR" property="toolName" />
    <result column="oper_id" jdbcType="INTEGER" property="operId" />
    <result column="axis_names" jdbcType="VARCHAR" property="axisNames" />
    <result column="axis_absolute" jdbcType="VARCHAR" property="axisAbsolute" />
    <result column="axis_relative" jdbcType="VARCHAR" property="axisRelative" />
    <result column="axis_servoloads" jdbcType="VARCHAR" property="axisServoloads" />
    <result column="is_maintain" jdbcType="BIT" property="isMaintain" />
    <result column="is_part_complete" jdbcType="BIT" property="isPartComplete" />
     <result column="machine_name" jdbcType="VARCHAR" property="machineName" />
  </resultMap>
  <select id="machineLastDataBeforeTime" resultMap="BaseResultMap">
      select id,machine_id,mdc_time,update_time,state,mode,op_mode,spindle_speed,spindle_override,spindle_load,feedrate_override,
      feed_rate, rapid_feed_override,rapid_feed,prog_name,prog_block,alarm_no,alarm_msg,tool_no,tool_name,oper_id,
@@ -50,4 +84,11 @@
       from machining_data where machine_id=#{machineId} and update_time &gt;#{updateTime} order by id asc, update_time asc limit 1
  </select>
  
  <select id="machineLastData" resultMap="DetailResultMap">
      select d.id,d.machine_id,mdc_time,update_time,state,mode,op_mode,spindle_speed,spindle_override,spindle_load,feedrate_override,
      feed_rate, rapid_feed_override,rapid_feed,prog_name,prog_block,alarm_no,alarm_msg,tool_no,tool_name,oper_id,
    axis_names,axis_absolute,axis_relative,axis_servoloads,is_maintain,is_part_complete,
    ma.machine_name
       from machining_data d left join machine_account ma on d.machine_id=ma.machine_id where d.machine_id=#{machineId} order by id desc limit 1
  </select>
</mapper>