47个文件已修改
5个文件已添加
12个文件已删除
| New file |
| | |
| | | { |
| | | "plcAddressBegin":"DB44.0", |
| | | "plcAddressLenght":"22", |
| | | "dataType":"word", |
| | | "parameteInfor":[ |
| | | { |
| | | "codeId": "plcRequest", |
| | | "addressIndex": "0", |
| | | "addressLenght": "2", |
| | | "ratio": "1", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "plcReport", |
| | | "addressIndex": "2", |
| | | "addressLenght": "2", |
| | | "ratio": "1", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "mesSend", |
| | | "addressIndex": "4", |
| | | "addressLenght": "2", |
| | | "ratio": "1", |
| | | "unit": "" |
| | | }, |
| | | |
| | | { |
| | | "codeId": "mesSendID", |
| | | "addressIndex": "6", |
| | | "addressLenght": "2", |
| | | "ratio": "1", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "length", |
| | | "addressIndex": "8", |
| | | "addressLenght": "2", |
| | | "ratio": "1", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "width", |
| | | "addressIndex": "10", |
| | | "addressLenght": "2", |
| | | "ratio": "1", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "thickness", |
| | | "addressIndex": "12", |
| | | "addressLenght": "2", |
| | | "ratio": "1", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "mesConfirm", |
| | | "addressIndex": "14", |
| | | "addressLenght": "2", |
| | | "ratio": "1", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "mesConfirmID", |
| | | "addressIndex": "16", |
| | | "addressLenght": "2", |
| | | "ratio": "1", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "alarmStatus", |
| | | "addressIndex": "18", |
| | | "addressLenght": "2", |
| | | "ratio": "1", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "machineStatusWord", |
| | | "addressIndex": "20", |
| | | "addressLenght": "2", |
| | | "ratio": "1", |
| | | "unit": "" |
| | | } |
| | | |
| | | ] |
| | | } |
| | |
| | | "parameterInfo":[ |
| | | { |
| | | "codeId": "plcRequest", |
| | | "addressIndex": "2", |
| | | "addressIndex": "0", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "plcRequestID", |
| | | "addressIndex": "4", |
| | | "addressIndex": "2", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| New file |
| | |
| | | { |
| | | "plcAddressBegin":"0000", |
| | | "plcAddressLength":"50", |
| | | "requestHead":"000100000006010300000032", |
| | | "parameterInfo":[ |
| | | { |
| | | "codeId": "plcRequest", |
| | | "addressIndex": "2", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "plcRequestID", |
| | | "addressIndex": "4", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "plcReport", |
| | | "addressIndex": "10", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "plcReportID", |
| | | "addressIndex": "12", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "mesSend", |
| | | "addressIndex": "20", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "mesSendCount", |
| | | "addressIndex": "22", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "mesConfirm", |
| | | "addressIndex": "40", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "alarmStatus", |
| | | "addressIndex": "62", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "alarmWord1", |
| | | "addressIndex": "64", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "alarmWord2", |
| | | "addressIndex": "66", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "alarmWord3", |
| | | "addressIndex": "68", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "machineStatusWord", |
| | | "addressIndex": "70", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "inputOrOut2", |
| | | "addressIndex": "72", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "inputOrOut3", |
| | | "addressIndex": "74", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "inputOrOut4", |
| | | "addressIndex": "76", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "inputOrOut5", |
| | | "addressIndex": "78", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "inputOrOut6", |
| | | "addressIndex": "80", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "inputOrOut7", |
| | | "addressIndex": "82", |
| | | "addressLength": "2", |
| | | "type": "word", |
| | | "unit": "" |
| | | } |
| | | ] |
| | | |
| | | } |
| | |
| | | "unit": "" |
| | | }, |
| | | { |
| | | "codeId": "mesSend", |
| | | "codeId": "standby27", |
| | | "addressIndex": "22", |
| | | "addressLenght": "2", |
| | | "ratio": "1", |
| | |
| | | "type": "word", |
| | | "unit": "" |
| | | }, |
| | | |
| | | { |
| | | "codeId": "width", |
| | | "addressIndex": "26", |
| | |
| | | public void connect(){ |
| | | try { |
| | | this.socket=new Socket(Ip,Port); |
| | | this.socket.setSoTimeout(2000); |
| | | this.socket.setSoTimeout(1000); |
| | | }catch (Exception e) { |
| | | log.info("The IP address of the host cannot be determined:{}",e.getMessage()); |
| | | } |
| | |
| | | package com.mes; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.mes.common.*; |
| | | import com.mes.job.PLCLoad; |
| | | import com.mes.md.entity.Machine; |
| | | import com.mes.md.mapper.MachineMapper; |
| | | import com.mes.md.mapper.PrimitiveTaskMapper; |
| | | import com.mes.md.mapper.TaskingMapper; |
| | | import com.mes.md.service.LineConfigurationService; |
| | | import com.mes.md.service.PrimitiveTaskService; |
| | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | | @Component |
| | |
| | | PrimitiveTaskService primitiveTaskService; |
| | | @Resource |
| | | LineConfigurationService lineConfigurationService; |
| | | @Resource |
| | | PrimitiveTaskMapper primitiveTaskMapper; |
| | | @Override |
| | | public void run(ApplicationArguments args) throws Exception { |
| | | // TODO Auto-generated method stub |
| | | new MachineLoad(taskingMapper,machineMapper,taskingService,primitiveTaskService,lineConfigurationService).start(); |
| | | new MachineEdging(taskingMapper,machineMapper,taskingService,primitiveTaskService,lineConfigurationService).start(); |
| | | new MachineFlipSlice(machineMapper,taskingService).start(); |
| | | new MachineMarking(machineMapper,taskingService).start(); |
| | | new MachineSilkScreen(machineMapper,taskingService).start(); |
| | | new MachineRotate(machineMapper,taskingService).start(); |
| | | List<Machine> machineListLoad =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"上片").eq(Machine::getState,"开工")); |
| | | List<Machine> machineListEdging =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"磨边").eq(Machine::getState,"开工")); |
| | | List<Machine> machineListFlipSlice =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"翻片").eq(Machine::getState,"开工")); |
| | | List<Machine> machineListMarking =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"自动打标机").eq(Machine::getState,"开工")); |
| | | List<Machine> machineListSilkScreen =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"自动丝印机").eq(Machine::getState,"开工")); |
| | | List<Machine> machineListRotate =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"旋转台").eq(Machine::getState,"开工")); |
| | | List<Machine> machineListLamination =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"自动贴膜机").eq(Machine::getState,"开工")); |
| | | for (Machine item:machineListLoad){ |
| | | new MachineLoad(item,primitiveTaskMapper,taskingMapper,machineMapper,taskingService,primitiveTaskService,lineConfigurationService).start(); |
| | | } |
| | | for (Machine item:machineListEdging){ |
| | | new MachineEdging(item,taskingMapper,machineMapper,taskingService,primitiveTaskService,lineConfigurationService).start(); |
| | | } |
| | | for (Machine item:machineListFlipSlice){ |
| | | new MachineFlipSlice(item,machineMapper,taskingService).start(); |
| | | } |
| | | for (Machine item:machineListMarking){ |
| | | new MachineMarking(item,machineMapper,taskingService).start(); |
| | | } |
| | | for (Machine item:machineListSilkScreen){ |
| | | new MachineSilkScreen(item,machineMapper,taskingService).start(); |
| | | } |
| | | for (Machine item:machineListRotate){ |
| | | new MachineRotate(item,machineMapper,taskingService).start(); |
| | | } |
| | | for (Machine item:machineListLamination){ |
| | | new MachineLamination(item,machineMapper,taskingService).start(); |
| | | } |
| | | } |
| | | } |
| | |
| | | package com.mes.job; |
| | | |
| | | import cn.hutool.json.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import com.mes.common.S7objectFlipSlice; |
| | | import com.mes.common.S7objectMachine; |
| | | import com.mes.common.S7objectMarking; |
| | | import com.mes.device.PlcParameterInfo; |
| | | import com.mes.device.PlcParameterObject; |
| | | import com.mes.md.entity.Machine; |
| | | import com.mes.md.entity.Tasking; |
| | | import com.mes.md.entity.*; |
| | | import com.mes.md.mapper.GlassInfoMapper; |
| | | import com.mes.md.mapper.MachineMapper; |
| | | import com.mes.md.mapper.TaskingMapper; |
| | | import com.mes.md.service.TaskingService; |
| | | import com.mes.md.service.*; |
| | | import com.mes.tools.WebSocketServer; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 自动打标机 |
| | |
| | | @Autowired |
| | | TaskingService taskingService; |
| | | @Autowired |
| | | ProjectService projectService; |
| | | @Autowired |
| | | PrimitiveTaskService primitiveTaskService; |
| | | @Autowired |
| | | KBBTJPDrawingBPService kBBTJPDrawingBPService; |
| | | @Autowired |
| | | LineConfigurationService lineConfigurationService; |
| | | @Autowired |
| | | private GlassInfoMapper glassInfoMapper; |
| | | public int a =1; |
| | | public S7objectMachine s7objectMachine; |
| | | public List<Map> sendRecords = new ArrayList<>(); |
| | | private List<Machine> machineListLoad; |
| | | private List<Machine> machineListEdging; |
| | | private List<Machine> machineListFlipSlice; |
| | | private List<Machine> machineListMarking; |
| | | private List<Machine> machineListSilkScreen; |
| | | private List<Machine> machineListRotate; |
| | | private List<Machine> machineListGlueDispenser; |
| | | private List<Machine> machineListScanQrCode; |
| | | private List<Machine> machineListLamination; |
| | | |
| | | //@Scheduled(fixedDelay = 1000) |
| | | public void plcMachineTask() { |
| | | Long machineId=12L; |
| | | Machine machine=machineMapper.selectById(machineId); |
| | | if (s7objectMachine==null){ |
| | | s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcMarking", EPlcType.S1500); |
| | | s7objectMachine.start(); |
| | | } |
| | | PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject; |
| | | PlcParameterInfo plcRequest =plcParameterObject.getPlcParameter("plcRequest");//请求字 |
| | | PlcParameterInfo plcRequestID =plcParameterObject.getPlcParameter("plcRequestID");//请求ID |
| | | PlcParameterInfo mesSend =plcParameterObject.getPlcParameter("mesSend");//发送字 |
| | | PlcParameterInfo isMark =plcParameterObject.getPlcParameter("isMark");//发送ID【0 不打标,1标准模式,2定制模式】 |
| | | PlcParameterInfo drawingMark =plcParameterObject.getPlcParameter("drawingMark");//打标图纸地址 |
| | | PlcParameterInfo lengthOutOfService =plcParameterObject.getPlcParameter("length(OutOfService)");//长 |
| | | PlcParameterInfo widthOutOfService =plcParameterObject.getPlcParameter("width(OutOfService)");//宽 |
| | | PlcParameterInfo markingMode =plcParameterObject.getPlcParameter("markingMode");// |
| | | |
| | | PlcParameterInfo plcReport =plcParameterObject.getPlcParameter("plcReport");//汇报字 |
| | | PlcParameterInfo plcReportID =plcParameterObject.getPlcParameter("plcReportID");//汇报ID |
| | | PlcParameterInfo mesConfirm =plcParameterObject.getPlcParameter("mesConfirm");//确认字 |
| | | PlcParameterInfo mesConfirmID =plcParameterObject.getPlcParameter("mesConfirmID");//确认ID |
| | | |
| | | String str=S7objectMarking.getinstance().plccontrol.readString("DB14.30"); |
| | | |
| | | //String width=S7objectMarking.getinstance().plccontrol.readWord(widthOutOfService.getAddress()); |
| | | log.info("plcRequest:{},plcRequestID:{},mesSend:{},mesSendID:{},drawingMark:{}," + |
| | | "plcReport:{},plcReportID:{},mesConfirm:{},mesConfirmID:{}" |
| | | ,plcRequest.getValue(),plcRequestID.getValue(),mesSend.getValue(),isMark.getValue(),drawingMark.getValue(), |
| | | plcReport.getValue(),plcReportID.getValue(),mesConfirm.getValue(),mesConfirmID.getValue()); |
| | | if ("0".equals(plcRequest.getValue())&&"1".equals(mesSend.getValue())) { |
| | | //发送字置0 |
| | | log.info("1.发送字置零,清除上次发送的数据{},{},{},{},{}" |
| | | ,markingMode.getValue() |
| | | ,isMark.getValue() |
| | | ,lengthOutOfService.getValue() |
| | | ,widthOutOfService.getValue() |
| | | ,mesSend.getValue()); |
| | | //S7objectMarking.getinstance().plccontrol.writeString(drawingMark.getAddress(),""); |
| | | S7objectMarking.getinstance().plccontrol.writeWord(markingMode.getAddress(), 0); |
| | | S7objectMarking.getinstance().plccontrol.writeWord(lengthOutOfService.getAddress(), 0); |
| | | S7objectMarking.getinstance().plccontrol.writeWord(widthOutOfService.getAddress(), 0); |
| | | S7objectMarking.getinstance().plccontrol.writeWord(isMark.getAddress(), 0); |
| | | S7objectMarking.getinstance().plccontrol.writeWord(mesSend.getAddress(), 0); |
| | | return; |
| | | } |
| | | if ("0".equals(plcReport.getValue())&&"1".equals(mesConfirm.getValue())) { |
| | | log.info("2.确认字置零"); |
| | | //发送字置0 |
| | | S7objectMarking.getinstance().plccontrol.writeWord(mesConfirm.getAddress(), 0); |
| | | return; |
| | | } |
| | | if("1".equals(plcReport.getValue())&&"0".equals(mesConfirm.getValue())){ |
| | | int finishCount=taskingService.finishMachineTask(machine); |
| | | log.info("3、任务完成"); |
| | | if(finishCount>0){//有任务 |
| | | S7objectMarking.getinstance().plccontrol.writeWord(mesConfirm.getAddress(), 1); |
| | | return; |
| | | } |
| | | } |
| | | if("1".equals(plcRequest.getValue())&&"0".equals(mesSend.getValue())&& !plcRequestID.getValue().isEmpty()&&"开工".equals(machine.getState())){ |
| | | Tasking tasking; |
| | | if("0".equals(plcRequestID.getValue())){ |
| | | //标准模式 |
| | | tasking=taskingService.startMachineTask(machine); |
| | | }else{ |
| | | //定制模式 |
| | | tasking=taskingService.startMachineTask(machine,plcRequestID.getValue()); |
| | | } |
| | | //log.info("4、发送任务 设备状态:{}, 数据:{},",machine,tasking); |
| | | if(tasking!=null){ |
| | | //模式:1定制 0 批量 是否打标:0不打标 1打标 |
| | | int isMark_=tasking.getDrawingMarking()==null?0:1; |
| | | int isMarkingMode_="定制".equals(tasking.getTaskType()) ?1:0; |
| | | log.info("4、发送数据:{},{},{},{},{},{}" |
| | | ,tasking.getProgramId() |
| | | ,tasking.getLength().intValue(),tasking.getWidth().intValue(),isMark_,isMarkingMode_,1); |
| | | if(isMark_==1){ |
| | | S7objectMarking.getinstance().plccontrol.writeString(drawingMark.getAddress(), tasking.getProgramId()); |
| | | } |
| | | //S7objectMarking.getinstance().plccontrol.writeUInt32 (mesSendID.getAddress(), 2); |
| | | S7objectMarking.getinstance().plccontrol.writeWord(lengthOutOfService.getAddress(), tasking.getLength().intValue()); |
| | | S7objectMarking.getinstance().plccontrol.writeWord(widthOutOfService.getAddress(), tasking.getWidth().intValue()); |
| | | S7objectMarking.getinstance().plccontrol.writeWord(isMark.getAddress(), isMark_); |
| | | S7objectMarking.getinstance().plccontrol.writeWord(markingMode.getAddress(), isMarkingMode_); |
| | | S7objectMarking.getinstance().plccontrol.writeWord(mesSend.getAddress(), 1); |
| | | return; |
| | | } |
| | | } |
| | | //log.info("无可执行的条件"); |
| | | |
| | | } |
| | | //@Scheduled(fixedDelay = 1000) |
| | | public void markingTasks() { |
| | | //机械手 |
| | | @Scheduled(fixedDelay = 500) |
| | | public void MarkingTasks() { |
| | | machineListLoad =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"上片")); |
| | | JSONObject jsonObject = new JSONObject(); |
| | | Machine machine=machineMapper.selectById(11L); |
| | | List<Tasking> taskingList=taskingService.findMachineTask(machine); |
| | | jsonObject.append("taskingList", taskingList); |
| | | jsonObject.append("machine", machine); |
| | | ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("marking"); |
| | | if (sendwServer != null) { |
| | | for (WebSocketServer webserver : sendwServer) { |
| | | if (webserver != null) { |
| | | try { |
| | | webserver.sendMessage(jsonObject.toString()); |
| | | List<String> messages = webserver.getMessages(); |
| | | if (!messages.isEmpty()) { |
| | | // // 将最后一个消息转换为整数类型的列表 |
| | | webserver.clearMessages(); |
| | | } |
| | | }catch (Exception e) { |
| | | jsonObject.append("sessionMapName", "loadTask"); |
| | | for (Machine machine : machineListLoad) { |
| | | JSONObject jsonObjectItem = new JSONObject(); |
| | | //标准模式 找已领取未完成的第一条任务 |
| | | LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine); |
| | | //此线路已领取的任务 |
| | | List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfiguration.getLineId()); |
| | | //此线路未领取的任务 本地 |
| | | //List<PrimitiveTask> findPrimitiveTask=primitiveTaskService.findPrimitiveTaskNotFinish(); |
| | | //此线路未领取的任务 客户数据库 |
| | | List<KBBTJPDrawingBP> list =kBBTJPDrawingBPService.notReceiveKBBTJPDrawingBP(); |
| | | jsonObjectItem.append("findPrimitiveTask", list); |
| | | jsonObjectItem.append("findPrimitiveTasking", findPrimitiveTasking); |
| | | //jsonObject.append("findPrimitiveTask", findPrimitiveTask); |
| | | jsonObjectItem.append("machine", machine); |
| | | jsonObjectItem.append("sendRecords", sendRecords); |
| | | jsonObject.append(machine.getId().toString(), jsonObjectItem); |
| | | } |
| | | this.webSocketServer(jsonObject); |
| | | } |
| | | //磨边机 |
| | | @Scheduled(fixedDelay = 500) |
| | | public void edgingTasks() { |
| | | machineListEdging =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"磨边")); |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.append("sessionMapName", "edgingTask"); |
| | | for (Machine machine : machineListEdging) { |
| | | JSONObject jsonObjectItem = new JSONObject(); |
| | | List<Tasking> taskingList=taskingService.findMachineTask(machine); |
| | | jsonObjectItem.append("taskingList", taskingList); |
| | | jsonObjectItem.append("machine", machine); |
| | | jsonObjectItem.append("sendRecords", sendRecords); |
| | | jsonObject.append(machine.getId().toString(), jsonObjectItem); |
| | | } |
| | | this.webSocketServer(jsonObject); |
| | | } |
| | | |
| | | //翻片台 |
| | | @Scheduled(fixedDelay = 500) |
| | | public void flipSliceTasks() { |
| | | machineListFlipSlice =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"翻片")); |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.append("sessionMapName", "flipSlice"); |
| | | for (Machine machine : machineListFlipSlice) { |
| | | JSONObject jsonObjectItem = new JSONObject(); |
| | | List<Tasking> taskingList=taskingService.findMachineTask(machine); |
| | | jsonObjectItem.append("taskingList", taskingList); |
| | | jsonObjectItem.append("machine", machine); |
| | | jsonObjectItem.append("sendRecords", sendRecords); |
| | | jsonObject.append(machine.getId().toString(), jsonObjectItem); |
| | | } |
| | | this.webSocketServer(jsonObject); |
| | | } |
| | | |
| | | //打标机 |
| | | @Scheduled(fixedDelay = 500) |
| | | public void markingTasks() { |
| | | machineListMarking =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"自动打标机")); |
| | | |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.append("sessionMapName", "marking"); |
| | | for (Machine machine : machineListMarking) { |
| | | JSONObject jsonObjectItem = new JSONObject(); |
| | | List<Tasking> taskingList=taskingService.findMachineTask(machine); |
| | | jsonObjectItem.append("taskingList", taskingList); |
| | | jsonObjectItem.append("machine", machine); |
| | | jsonObjectItem.append("sendRecords", sendRecords); |
| | | jsonObject.append(machine.getId().toString(), jsonObjectItem); |
| | | } |
| | | this.webSocketServer(jsonObject); |
| | | } |
| | | |
| | | //丝印机 |
| | | @Scheduled(fixedDelay = 500) |
| | | public void silkScreenTasks() { |
| | | machineListSilkScreen =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"自动丝印机")); |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.append("sessionMapName", "silkScreenTask"); |
| | | for (Machine machine : machineListSilkScreen) { |
| | | JSONObject jsonObjectItem = new JSONObject(); |
| | | List<Tasking> taskingList=taskingService.findMachineTask(machine); |
| | | jsonObjectItem.append("taskingList", taskingList); |
| | | jsonObjectItem.append("machine", machine); |
| | | jsonObjectItem.append("sendRecords", sendRecords); |
| | | jsonObject.append(machine.getId().toString(), jsonObjectItem); |
| | | } |
| | | this.webSocketServer(jsonObject); |
| | | } |
| | | //点胶机 |
| | | //@Scheduled(fixedDelay = 500) |
| | | public void glueDispenserTasks() { |
| | | machineListGlueDispenser =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"自动点胶机")); |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.append("sessionMapName", "glueDispenser"); |
| | | for (Machine machine : machineListGlueDispenser) { |
| | | JSONObject jsonObjectItem = new JSONObject(); |
| | | List<Tasking> taskingList=taskingService.findMachineTask(machine); |
| | | jsonObjectItem.append("taskingList", taskingList); |
| | | jsonObjectItem.append("machine", machine); |
| | | jsonObjectItem.append("sendRecords", sendRecords); |
| | | jsonObject.append(machine.getId().toString(), jsonObjectItem); |
| | | } |
| | | this.webSocketServer(jsonObject); |
| | | } |
| | | //旋转台 |
| | | @Scheduled(fixedDelay = 500) |
| | | public void rotateTasks() { |
| | | machineListRotate =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"旋转台")); |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.append("sessionMapName", "rotate"); |
| | | for (Machine machine : machineListRotate) { |
| | | JSONObject jsonObjectItem = new JSONObject(); |
| | | List<Tasking> taskingList=taskingService.findMachineTask(machine); |
| | | jsonObjectItem.append("taskingList", taskingList); |
| | | jsonObjectItem.append("machine", machine); |
| | | jsonObjectItem.append("sendRecords", sendRecords); |
| | | jsonObject.append(machine.getId().toString(), jsonObjectItem); |
| | | } |
| | | this.webSocketServer(jsonObject); |
| | | } |
| | | //贴膜机 |
| | | @Scheduled(fixedDelay = 500) |
| | | public void laminationTasks() { |
| | | machineListLamination =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"自动贴膜机")); |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.append("sessionMapName", "lamination"); |
| | | for (Machine machine : machineListLamination) { |
| | | JSONObject jsonObjectItem = new JSONObject(); |
| | | List<Tasking> taskingList=taskingService.findMachineTask(machine); |
| | | jsonObjectItem.append("taskingList", taskingList); |
| | | jsonObjectItem.append("machine", machine); |
| | | jsonObjectItem.append("sendRecords", sendRecords); |
| | | jsonObject.append(machine.getId().toString(), jsonObjectItem); |
| | | } |
| | | this.webSocketServer(jsonObject); |
| | | } |
| | | |
| | | |
| | | //报工页面查询 |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void manualReporting() { |
| | | |
| | | machineListScanQrCode =machineMapper.selectList(new QueryWrapper<Machine>().lambda().eq(Machine::getName,"识别报工")); |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.append("sessionMapName", "manualReporting"); |
| | | for (Machine machine : machineListScanQrCode) { |
| | | JSONObject jsonObjectItem = new JSONObject(); |
| | | List<Tasking> taskingList=taskingMapper.selectJoinList(Tasking.class,new MPJLambdaWrapper<Tasking>() |
| | | .selectAll(Tasking.class) |
| | | .innerJoin(LineConfiguration.class,LineConfiguration::getId,Tasking::getLineConfigurationId) |
| | | .innerJoin(Machine.class,Machine::getId,LineConfiguration::getMachineId) |
| | | .eq(LineConfiguration::getMachineId,machine.getId()) |
| | | .eq(Tasking::getGlassState,"正常") |
| | | .eq(Tasking::getState,"线上") |
| | | .ne(Tasking::getWorkState,"完工") |
| | | .orderByDesc(Tasking::getOperationRecordTime)); |
| | | jsonObjectItem.append("taskingList", taskingList); |
| | | jsonObjectItem.append("machine", machine); |
| | | jsonObject.append(machine.getId().toString(), jsonObjectItem); |
| | | } |
| | | |
| | | this.webSocketServer(jsonObject); |
| | | } |
| | | //线下玻璃查询 |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void downLineTask() { |
| | | JSONObject jsonObject = new JSONObject(); |
| | | List<Tasking> downLineTask=taskingService.findDownLineTask(); |
| | | jsonObject.append("sessionMapName", "downLineTask"); |
| | | jsonObject.append("downLineTask", downLineTask); |
| | | this.webSocketServer(jsonObject); |
| | | } |
| | | |
| | | |
| | | public void webSocketServer(JSONObject jsonObject) { |
| | | try { |
| | | String sessionMapName=jsonObject.getJSONArray("sessionMapName").get(0).toString(); |
| | | ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get(sessionMapName); |
| | | if (sendwServer != null) { |
| | | for (WebSocketServer webserver : sendwServer) { |
| | | if (webserver != null) { |
| | | try { |
| | | webserver.sendMessage(jsonObject.toString()); |
| | | List<String> messages = webserver.getMessages(); |
| | | if (!messages.isEmpty()) { |
| | | // // 将最后一个消息转换为整数类型的列表 |
| | | webserver.clearMessages(); |
| | | } |
| | | }catch (Exception e) { |
| | | |
| | | } |
| | | } else { |
| | | log.info("Home is closed"); |
| | | } |
| | | } else { |
| | | log.info("Home is closed"); |
| | | } |
| | | } |
| | | }catch (Exception e) { |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | if (machine.getIsLog()>0){ |
| | | s7objectMachine.consoleLogInfo(); |
| | | } |
| | | int edgSpeedInt=PLCEdging.edgSpeed; |
| | | int edgThinnessInt=PLCEdging.thinness; |
| | | int edgSpeedInt=0; |
| | | int edgThinnessInt=0; |
| | | if(!(edgSpeedInt+"").equals(edgSpeed.getValue())||!(edgThinnessInt+"").equals(thinness.getValue())){ |
| | | //给清洗机器发送磨边机速度 |
| | | S7objectCleaning.getinstance().plccontrol.writeWord(edgSpeed.getAddress(), edgSpeedInt); |
| | |
| | | int count =machineService.toggleModeMachine(machine); |
| | | return Result.build(200,"修改成功:"+count,count); |
| | | } |
| | | |
| | | @ApiOperation("当前旋转模式 【1旋转/2不旋转】") |
| | | @PostMapping("/toggleModeRotate") |
| | | @ResponseBody |
| | | public Result toggleModeRotate(@RequestBody Machine machine) { |
| | | int count =machineService.toggleModeRotate(machine); |
| | | return Result.build(200,"修改成功:"+count,count); |
| | | } |
| | | |
| | | @ApiOperation("[手动上片模式] 修改数量") |
| | | @PostMapping("/manualOperationTask") |
| | | @ResponseBody |
| | | public Result manualOperationTask(@RequestBody Machine machine) { |
| | | int count =machineService.manualOperationTask(machine); |
| | | return Result.build(200,"修改成功:"+count,count); |
| | | } |
| | | } |
| | | |
| | |
| | | @TableField(value="[operation record_time]") |
| | | private Date operationRecordTime; |
| | | |
| | | // /** |
| | | // * 操作者 |
| | | // */ |
| | | // private String operationRecord; |
| | | /** |
| | | * 操作者 |
| | | */ |
| | | @TableField(value="operationRecord") |
| | | private String operationRecord; |
| | | |
| | | /** |
| | | * 操作类型 【开始/结束】 |
| | |
| | | * 设备名称 |
| | | */ |
| | | private String name; |
| | | /** |
| | | * 协议文件名称 |
| | | */ |
| | | private String fileName; |
| | | |
| | | /** |
| | | * 设备IP |
| | |
| | | */ |
| | | private Integer todayCount; |
| | | |
| | | // /** |
| | | // * 开机状态 |
| | | // */ |
| | | // private String statePowerOn; |
| | | // |
| | | // /** |
| | | // * 联机状态 |
| | | // */ |
| | | // private String stateOnLine; |
| | | /** |
| | | * 开机状态 |
| | | */ |
| | | private String statePowerOn; |
| | | |
| | | /** |
| | | * 联机状态 |
| | | */ |
| | | private String stateOnLine; |
| | | |
| | | /** |
| | | * 手动任务数量 |
| | | */ |
| | | private int taskCount; |
| | | |
| | | /** |
| | | * 手动任务完成数量 |
| | | */ |
| | | private int finshCount; |
| | | |
| | | /** |
| | | * 旋转模式 1 旋转 2 不旋转 |
| | | */ |
| | | private int rotateMode; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | |
| | | |
| | | |
| | |
| | | */ |
| | | private Integer unusualCount; |
| | | |
| | | /** |
| | | * 上片数量 |
| | | */ |
| | | private Integer loadCount; |
| | | |
| | | } |
| | |
| | | */ |
| | | private Integer menuSequence; |
| | | |
| | | /** |
| | | * 页面参数:用于控制同页面展示不同数据 |
| | | */ |
| | | private String params; |
| | | |
| | | |
| | | } |
| | |
| | | */ |
| | | public interface LineConfigurationService extends MPJBaseService<LineConfiguration> { |
| | | LineConfiguration machineLineConfiguration(Machine machine); |
| | | LineConfiguration machineLineConfigurationBefore(Machine machine); |
| | | LineConfiguration machineLineConfigurationAfter(Machine machine); |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | int openOrCloseMachine(Machine machine); |
| | | |
| | | /** |
| | | * @param machine 添加手动上片任务 |
| | | * @return |
| | | */ |
| | | int manualOperationTask(Machine machine); |
| | | /** |
| | | * @param machine 切换设备模式:(上片:【1定制/2标准】),其他设备暂时没有模式 |
| | | * @return |
| | | */ |
| | | int toggleModeMachine(Machine machine); |
| | | |
| | | /** |
| | | * @param machine 切换旋转模式:(旋转:【1旋转/2不旋转】) |
| | | * @return |
| | | */ |
| | | int toggleModeRotate(Machine machine); |
| | | } |
| | |
| | | .selectAs(RoleMenu::getMenuId,"menu_id") |
| | | .selectAs(RoleMenu::getPageId,"page_id") |
| | | .selectAs(RoleMenu::getMenuSequence,"remark") |
| | | .selectAs(RoleMenu::getParams,"params") |
| | | .selectAs(Menu::getMenuName,"menu_name") |
| | | .selectAs(Menu::getMenuNumber,"menu_number") |
| | | .selectAs(Menu::getRemark,"menu_remark") |
| | |
| | | page.put("page_number",item.get("page_number")); |
| | | page.put("page_url",item.get("page_url")); |
| | | page.put("menu_sequence",item.get("menu_sequence")); |
| | | page.put("params",item.get("params")); |
| | | thisPages.add(page); |
| | | thisMenu.put("pages",thisPages); |
| | | thisMenus.set(index,thisMenu); |
| | |
| | | page.put("page_number",item.get("page_number")); |
| | | page.put("page_url",item.get("page_url")); |
| | | page.put("menu_sequence",item.get("menu_sequence")); |
| | | page.put("params",item.get("params")); |
| | | thisPages.add(page); |
| | | thisMenu.put("pages",thisPages); |
| | | thisMenus.add(thisMenu); |
| | |
| | | page.put("page_number",item.get("page_number")); |
| | | page.put("page_url",item.get("page_url")); |
| | | page.put("menu_sequence",item.get("menu_sequence")); |
| | | page.put("params",item.get("params")); |
| | | pages.add(page); |
| | | menu.put("pages",pages); |
| | | menus.add(menu); |
| | |
| | | @Service |
| | | public class LineConfigurationServiceImpl extends MPJBaseServiceImpl<LineConfigurationMapper, LineConfiguration> implements LineConfigurationService { |
| | | |
| | | |
| | | /** |
| | | * @param machine 当前设备配置 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public LineConfiguration machineLineConfiguration(Machine machine){ |
| | | List<LineConfiguration> machineLineConfiguration=baseMapper.selectJoinList(LineConfiguration.class,new MPJLambdaWrapper<LineConfiguration>() |
| | |
| | | } |
| | | return machineLineConfiguration.get(0); |
| | | } |
| | | /** |
| | | * @param machine 当前设备的上一设备配置 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public LineConfiguration machineLineConfigurationBefore(Machine machine){ |
| | | List<LineConfiguration> machineLineConfiguration=baseMapper.selectJoinList(LineConfiguration.class,new MPJLambdaWrapper<LineConfiguration>() |
| | | .selectAll(LineConfiguration.class) |
| | | .eq(LineConfiguration::getMachineId,machine.getId())); |
| | | if(!machineLineConfiguration.isEmpty()){ |
| | | List<LineConfiguration> machineLineConfigurationBefore=baseMapper.selectJoinList(LineConfiguration.class,new MPJLambdaWrapper<LineConfiguration>() |
| | | .selectAll(LineConfiguration.class) |
| | | .eq(LineConfiguration::getLineId,machineLineConfiguration.get(0).getLineId()) |
| | | .eq(LineConfiguration::getIsStart,1) |
| | | .lt(LineConfiguration::getProcessSequence,machineLineConfiguration.get(0).getProcessSequence()) |
| | | .orderByDesc(LineConfiguration::getProcessSequence)); |
| | | if (!machineLineConfigurationBefore.isEmpty()){ |
| | | return machineLineConfigurationBefore.get(0); |
| | | } |
| | | |
| | | } |
| | | return null; |
| | | |
| | | } |
| | | /** |
| | | * @param machine 当前设备的下一设备配置 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public LineConfiguration machineLineConfigurationAfter(Machine machine){ |
| | | List<LineConfiguration> machineLineConfiguration=baseMapper.selectJoinList(LineConfiguration.class,new MPJLambdaWrapper<LineConfiguration>() |
| | | .selectAll(LineConfiguration.class) |
| | | .eq(LineConfiguration::getMachineId,machine.getId())); |
| | | if(!machineLineConfiguration.isEmpty()){ |
| | | List<LineConfiguration> machineLineConfigurationBefore=baseMapper.selectJoinList(LineConfiguration.class,new MPJLambdaWrapper<LineConfiguration>() |
| | | .selectAll(LineConfiguration.class) |
| | | .eq(LineConfiguration::getLineId,machineLineConfiguration.get(0).getLineId()) |
| | | .eq(LineConfiguration::getIsStart,1) |
| | | .gt(LineConfiguration::getProcessSequence,machineLineConfiguration.get(0).getProcessSequence()) |
| | | .orderByAsc(LineConfiguration::getProcessSequence)); |
| | | if (!machineLineConfigurationBefore.isEmpty()){ |
| | | return machineLineConfigurationBefore.get(0); |
| | | } |
| | | |
| | | } |
| | | return null; |
| | | } |
| | | } |
| | |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | /** |
| | | * @param machine 切换设备模式:(上片:【1定制/2标准】),其他设备暂时没有模式 |
| | | * @param machine 添加手动上片任务 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public int manualOperationTask(Machine machine){ |
| | | Machine oldmachine=baseMapper.selectById(machine); |
| | | if(!Objects.isNull(oldmachine)){ |
| | | oldmachine.setTaskCount(machine.getTaskCount()); |
| | | oldmachine.setFinshCount(machine.getFinshCount()); |
| | | return baseMapper.updateById(oldmachine); |
| | | } |
| | | return 0; |
| | | } |
| | | /** |
| | | * @param machine 切换设备模式:(上片:【1定制/2标准/3手动】,翻片:【1定制/2标准】 旋转:【1定制/2标准】),其他设备暂时没有模式 |
| | | * @return |
| | | */ |
| | | @Override |
| | |
| | | return 0; |
| | | } |
| | | |
| | | /** |
| | | * @param machine 切换旋转模式:(旋转:【1旋转/2不旋转】) |
| | | * @return |
| | | */ |
| | | @Override |
| | | public int toggleModeRotate(Machine machine){ |
| | | Machine oldmachine=baseMapper.selectById(machine); |
| | | if(!Objects.isNull(oldmachine)){ |
| | | oldmachine.setRotateMode(machine.getRotateMode()); |
| | | return baseMapper.updateById(oldmachine); |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | newData.setScanId(item.getScanId()); |
| | | newData.setProgramId(item.getProgramId()); |
| | | newData.setBatchNumber(item.getBatchNumber() == null ? "" : item.getBatchNumber()); |
| | | newData.setLineConfigurationId(item.getLineConfigurationId()); |
| | | newData.setTaskType(item.getTaskType()); |
| | | newData.setLength(item.getLength()); |
| | | newData.setWidth(item.getWidth()); |
| | |
| | | newData.setR_3_2(item.getR_3_2()); |
| | | newData.setR_4_1(item.getR_4_1()); |
| | | newData.setR_4_2(item.getR_4_2()); |
| | | newData.setSilkScreenY(item.getSilkScreenY()); |
| | | newData.setOperationRecord(item.getOperationRecord()); |
| | | newData.setOperationMode(item.getOperationMode()); |
| | | newData.setOperationRecordTime(item.getOperationRecordTime()); |
| | | newData.setCreateDate(new Date()); |
| | | kBBTProgramsOperationLogBPMapper.insert(newData); |
| | | return newData; |
| | |
| | | .eq(Tasking::getScanId,scan_id) |
| | | .eq(Tasking::getGlassState,"正常") |
| | | .eq(Tasking::getState,"线上") |
| | | .ne(Tasking::getWorkState,"完工") |
| | | .le(LineConfiguration::getProcessSequence,machineLineConfiguration.get(0).getProcessSequence()) |
| | | .orderByAsc(Tasking::getTaskSequence)); |
| | | if(!list.isEmpty()){ |
| | |
| | | @Override |
| | | public int finishMachineTask(Machine machine) { |
| | | List<Tasking> list=this.findMachineWorkStateTask(machine,"正在工作"); |
| | | //当前设备的线路配置 |
| | | //查询当前设备线路配置 |
| | | List<LineConfiguration> machineLineConfiguration=lineConfigurationMapper.selectJoinList(LineConfiguration.class,new MPJLambdaWrapper<LineConfiguration>() |
| | | .selectAll(LineConfiguration.class) |
| | | .eq(LineConfiguration::getMachineId,machine.getId())); |
| | | if(!machineLineConfiguration.isEmpty()){ |
| | | //当前设备存在线路配置,查询当前设备 在线路配置表中的下一设备 |
| | | List<LineConfiguration> listLineConfiguration=lineConfigurationMapper.selectJoinList(LineConfiguration.class,new MPJLambdaWrapper<LineConfiguration>() |
| | | .selectAll(LineConfiguration.class) |
| | | .eq(LineConfiguration::getLineId,machineLineConfiguration.get(0).getLineId()) |
| | |
| | | .orderByAsc(LineConfiguration::getProcessSequence) |
| | | .orderByAsc(LineConfiguration::getPrioritySequence) |
| | | ); |
| | | |
| | | if(!list.isEmpty()){ |
| | | //标记任务状态 |
| | | Tasking tasking=list.get(0); |
| | | LineConfiguration thisLineConfiguration=lineConfigurationMapper.selectById(tasking.getLineConfigurationId()); |
| | | tasking.setOperationRecord(thisLineConfiguration.getRemark()+thisLineConfiguration.getLineId()); |
| | | tasking.setOperationRecordTime(new Date()); |
| | | tasking.setOperationMode("结束"); |
| | | //listLineConfiguration不是空,表示当前设备配置关系中有下一设备 |
| | | // 否则表示无下一工序,即当前工序为最后一工序 标记状态完工 |
| | | if (!listLineConfiguration.isEmpty()){ |
| | | tasking.setLineConfigurationId(listLineConfiguration.get(0).getId()); |
| | | tasking.setWorkState("等待"); |
| | |
| | | else{ |
| | | tasking.setWorkState("完工"); |
| | | return baseMapper.updateById(tasking); |
| | | //return this.stopTasking(tasking); |
| | | } |
| | | |
| | | } |
| | |
| | | LineConfigurationService lineConfigurationService; |
| | | public static int thinness = 40; |
| | | public static int edgSpeed = 40; |
| | | public static Long machineId = 6L; |
| | | //public static Long machineId = 6L; |
| | | public List<Map> sendRecords = new ArrayList<>(); |
| | | |
| | | public MachineEdging(TaskingMapper taskingMapper, MachineMapper machineMapper, TaskingService taskingService, PrimitiveTaskService primitiveTaskService, LineConfigurationService lineConfigurationService){ |
| | | public Machine thisMachine; |
| | | public MachineEdging(Machine machine,TaskingMapper taskingMapper, MachineMapper machineMapper, TaskingService taskingService, PrimitiveTaskService primitiveTaskService, LineConfigurationService lineConfigurationService){ |
| | | this.thisMachine = machine; |
| | | this.taskingMapper = taskingMapper; |
| | | this.machineMapper = machineMapper; |
| | | this.taskingService = taskingService; |
| | |
| | | } |
| | | |
| | | public void plcStart() { |
| | | Machine machine=machineMapper.selectById(machineId); |
| | | ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),"PlcEdging"); |
| | | Machine machine=machineMapper.selectById(thisMachine.getId()); |
| | | ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),machine.getFileName()); |
| | | try { |
| | | modbusTcp1.connect(); |
| | | PlcAgreement plcAgreement=modbusTcp1.getPlcAgreement("PlcEdging"); |
| | |
| | | |
| | | PlcParameter plcRequest =plcAgreement.getPlcParameter("plcRequest");//请求字 |
| | | PlcParameter mesSend =plcAgreement.getPlcParameter("mesSend");//发送字 |
| | | |
| | | |
| | | PlcParameter plcReport =plcAgreement.getPlcParameter("plcReport");//汇报字 |
| | | PlcParameter plcReportID =plcAgreement.getPlcParameter("plcReportID");//汇报ID |
| | |
| | | if(((1==plcRequest.getValueInt()&&0==mesSend.getValueInt()) |
| | | &&"开工".equals(machine.getState()) |
| | | &&taskingCount.size()<machine.getMaxTaskCount())){ |
| | | Machine loadMachine=machineMapper.selectById(2L); |
| | | //Machine loadMachine=machineMapper.selectById(2L); |
| | | LineConfiguration lineConfigurationBefore=lineConfigurationService.machineLineConfigurationBefore(machine); |
| | | Machine loadMachine=machineMapper.selectById(lineConfigurationBefore.getMachineId()); |
| | | Tasking tasking; |
| | | String scan_id=""; |
| | | if(loadMachine.getMode()==1){ |
| | | //标准模式 找已领取未完成的第一条任务 |
| | | LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine); |
| | | List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfiguration.getLineId()); |
| | | //LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine); |
| | | List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfigurationBefore.getLineId()); |
| | | //添加数据: |
| | | for(PrimitiveTask primitiveTask:findPrimitiveTasking){ |
| | | List<Tasking> taskingTopList=taskingMapper.selectList(new QueryWrapper<Tasking>().lambda() |
| | |
| | | ); |
| | | //任务数>已上数量 |
| | | if(taskingTopList.size()<primitiveTask.getTaskQuantity()){ |
| | | LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine); |
| | | Tasking taskingAdd=primitiveTaskService.convertListTasking(primitiveTask,lineConfiguration.getId()); |
| | | Integer taskSequence=1; |
| | | if (machine.getTodayCount()>0&&machine.getTodayCount()<5000){ |
| | |
| | | tasking=taskingService.startMachineTask(machine); |
| | | }else{ |
| | | //定制模式 |
| | | String PlcRequestID_=clientTCPSocket(); |
| | | LineConfiguration lineConfigurationAfter=lineConfigurationService.machineLineConfigurationBefore(machine); |
| | | Machine scanMachine=machineMapper.selectById(lineConfigurationAfter.getMachineId()); |
| | | String PlcRequestID_=clientTCPSocket(scanMachine); |
| | | //String PlcRequestID_=",,46408889"; |
| | | if (PlcRequestID_==null||PlcRequestID_.lastIndexOf(",")<0){ |
| | | modbusTcp1.close(); |
| | |
| | | modbusTcp1.close(); |
| | | return; |
| | | } |
| | | }else if(0==plcRequest.getValueInt()){ |
| | | errorMachine(machine,""); |
| | | } |
| | | //} |
| | | |
| | |
| | | machineMapper.updateById(machine); |
| | | } |
| | | } |
| | | public String clientTCPSocket() { |
| | | public String clientTCPSocket(Machine machine) { |
| | | try { |
| | | Machine machine=machineMapper.selectById(4L); |
| | | //Machine machine=machineMapper.selectById(4L); |
| | | Socket clientSocket = new Socket(machine.getIp(), machine.getPort()); |
| | | try { |
| | | clientSocket.setSoTimeout(1000); |
| | |
| | | private S7objectMachine s7objectMachine; |
| | | public static int thinness = 40; |
| | | public static int edgSpeed = 40; |
| | | public static Long machineId = 6L; |
| | | //public static Long machineId = 6L; |
| | | public List<Map> sendRecords = new ArrayList<>(); |
| | | public Machine thisMachine; |
| | | |
| | | public MachineFlipSlice(MachineMapper machineMapper, TaskingService taskingService){ |
| | | public MachineFlipSlice(Machine machine,MachineMapper machineMapper, TaskingService taskingService){ |
| | | this.thisMachine = machine; |
| | | this.machineMapper = machineMapper; |
| | | this.taskingService = taskingService; |
| | | } |
| | | |
| | | public void plcStart() { |
| | | Long machineId=26L; |
| | | Machine machine=machineMapper.selectById(machineId); |
| | | //Long machineId=26L; |
| | | Machine machine=machineMapper.selectById(thisMachine.getId()); |
| | | if (s7objectMachine==null){ |
| | | s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcFlipSlice", EPlcType.S1200); |
| | | s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),machine.getFileName(), EPlcType.S1200); |
| | | s7objectMachine.start(); |
| | | } |
| | | PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject; |
| | |
| | | }else if(!scan_id.isEmpty()){ |
| | | taskingService.scanMachineAdd(machine,scan_id); |
| | | } |
| | | }else if("0".equals(plcRequest.getValue())){ |
| | | nullMachine(machine); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package com.mes.plcTaskThread; |
| | | |
| | | import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType; |
| | | import com.mes.common.S7objectMachine; |
| | | import com.mes.device.PlcParameterInfo; |
| | | import com.mes.device.PlcParameterObject; |
| | | import com.mes.md.entity.Machine; |
| | | import com.mes.md.entity.Tasking; |
| | | import com.mes.md.mapper.MachineMapper; |
| | | import com.mes.md.service.TaskingService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Slf4j |
| | | public class MachineLamination extends Thread{ |
| | | |
| | | |
| | | private MachineMapper machineMapper; |
| | | private TaskingService taskingService; |
| | | private S7objectMachine s7objectMachine; |
| | | public Machine thisMachine; |
| | | public MachineLamination(Machine machine, MachineMapper machineMapper, TaskingService taskingService){ |
| | | this.thisMachine = machine; |
| | | this.machineMapper = machineMapper; |
| | | this.taskingService = taskingService; |
| | | } |
| | | |
| | | public void plcStart() { |
| | | Machine machine=machineMapper.selectById(thisMachine.getId()); |
| | | if (s7objectMachine==null){ |
| | | s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),machine.getFileName(), EPlcType.S1200); |
| | | s7objectMachine.start(); |
| | | } |
| | | PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject; |
| | | PlcParameterInfo plcRequest =plcParameterObject.getPlcParameter("plcRequest");//请求字 |
| | | PlcParameterInfo mesSend =plcParameterObject.getPlcParameter("mesSend");//发送字 |
| | | PlcParameterInfo lengthOutOfService =plcParameterObject.getPlcParameter("length");//长 |
| | | PlcParameterInfo widthOutOfService =plcParameterObject.getPlcParameter("width");//宽 |
| | | PlcParameterInfo markingMode =plcParameterObject.getPlcParameter("thickness");//厚度 |
| | | |
| | | PlcParameterInfo plcReport =plcParameterObject.getPlcParameter("plcReport");//汇报字 |
| | | PlcParameterInfo mesConfirm =plcParameterObject.getPlcParameter("mesConfirm");//确认字 |
| | | PlcParameterInfo mesConfirmID =plcParameterObject.getPlcParameter("mesConfirmID");//确认ID |
| | | if (machine.getIsLog()>0){ |
| | | s7objectMachine.consoleLogInfo(); |
| | | } |
| | | if ("0".equals(plcRequest.getValue())&&"1".equals(mesSend.getValue())) { |
| | | //发送字置0 |
| | | log.info("1.发送字置零,清除上次发送的数据{}",mesSend.getValue()); |
| | | s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 0); |
| | | return; |
| | | } |
| | | if ("0".equals(plcReport.getValue())&&"1".equals(mesConfirm.getValue())) { |
| | | log.info("2.确认字置零"); |
| | | //发送字置0 |
| | | s7objectMachine.plccontrol.writeWord(mesConfirm.getAddress(), 0); |
| | | return; |
| | | } |
| | | if("1".equals(plcReport.getValue())&&"0".equals(mesConfirm.getValue())){ |
| | | |
| | | |
| | | int finishCount=taskingService.finishMachineTask(machine); |
| | | log.info("3、任务完成"); |
| | | if(finishCount>0){//有任务 |
| | | s7objectMachine.plccontrol.writeWord(mesConfirm.getAddress(), 1); |
| | | return; |
| | | } |
| | | return; |
| | | } |
| | | List<Tasking> taskingCount=taskingService.findMachineWorkStateTask(machine,"正在工作"); |
| | | if("1".equals(plcRequest.getValue())&&"0".equals(mesSend.getValue()) |
| | | &&"开工".equals(machine.getState()) |
| | | &&taskingCount.size()<machine.getMaxTaskCount()){ |
| | | |
| | | Tasking tasking=taskingService.startMachineTask(machine); |
| | | if(tasking!=null){ |
| | | log.info("4、发送数据:{},{},{}",tasking.getLength().intValue(),tasking.getWidth().intValue(),1); |
| | | s7objectMachine.plccontrol.writeWord(lengthOutOfService.getAddress(), tasking.getLength().intValue());//x |
| | | s7objectMachine.plccontrol.writeWord(widthOutOfService.getAddress(), tasking.getWidth().intValue());//y |
| | | |
| | | s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void run() { |
| | | while (this != null) { |
| | | try { |
| | | Thread.sleep(1000); |
| | | plcStart(); |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | PrimitiveTaskMapper primitiveTaskMapper; |
| | | |
| | | LineConfigurationService lineConfigurationService; |
| | | |
| | | public Long machineId = 2L; |
| | | public Machine thisMachine; |
| | | //public Long machineId = 2L; |
| | | public List<Map> sendRecords = new ArrayList<>(); |
| | | public MachineLoad(TaskingMapper taskingMapper, MachineMapper machineMapper, TaskingService taskingService, PrimitiveTaskService primitiveTaskService, LineConfigurationService lineConfigurationService){ |
| | | public MachineLoad(Machine machine,PrimitiveTaskMapper primitiveTaskMapper,TaskingMapper taskingMapper, MachineMapper machineMapper, TaskingService taskingService, PrimitiveTaskService primitiveTaskService, LineConfigurationService lineConfigurationService){ |
| | | this.thisMachine = machine; |
| | | this.primitiveTaskMapper = primitiveTaskMapper; |
| | | this.taskingMapper = taskingMapper; |
| | | this.machineMapper = machineMapper; |
| | | this.taskingService = taskingService; |
| | |
| | | this.lineConfigurationService = lineConfigurationService; |
| | | } |
| | | public void plcStart() { |
| | | Machine machine=machineMapper.selectById(machineId); |
| | | ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),"PlcLoad"); |
| | | Machine machine=machineMapper.selectById(thisMachine.getId()); |
| | | ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),machine.getFileName()); |
| | | modbusTcp1.connect(); |
| | | PlcAgreement plcAgreement=modbusTcp1.getPlcAgreement("PlcLoad"); |
| | | try { |
| | | if(!modbusTcp1.read(plcAgreement)){ |
| | | log.info("通讯读取新数据失败"); |
| | | if(!"关机".equals(machine.getStatePowerOn())){ |
| | | machine.setStatePowerOn("关机"); |
| | | machineMapper.updateById(machine); |
| | | } |
| | | modbusTcp1.close(); |
| | | return; |
| | | } |
| | | if(!"开机".equals(machine.getStatePowerOn())){ |
| | | machine.setStatePowerOn("开机"); |
| | | machineMapper.updateById(machine); |
| | | } |
| | | PlcParameter plcRequest =plcAgreement.getPlcParameter("plcRequest");//请求字 |
| | | PlcParameter mesSend =plcAgreement.getPlcParameter("mesSend");//发送字 |
| | |
| | | LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine); |
| | | List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfiguration.getLineId()); |
| | | for(PrimitiveTask primitiveTask:findPrimitiveTasking){ |
| | | primitiveTask.setReportCount(primitiveTask.getReportCount()+plcReportID.getValueInt()); |
| | | primitiveTask.setLoadCount(primitiveTask.getLoadCount()+1); |
| | | primitiveTaskMapper.updateById(primitiveTask); |
| | | break; |
| | | } |
| | | }else if(machine.getMode()==3){ |
| | | machine.setFinshCount(machine.getFinshCount()+plcReportID.getValueInt()); |
| | | machineMapper.updateById(machine); |
| | | } |
| | | String send = HexUtil.intTo2ByteHex(1); |
| | | modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart()/ 2)); |
| | |
| | | LineConfiguration lineConfiguration=lineConfigurationService.machineLineConfiguration(machine); |
| | | List<PrimitiveTask> findPrimitiveTasking=primitiveTaskService.findPrimitiveTasking(machine,lineConfiguration.getLineId()); |
| | | for(PrimitiveTask primitiveTask:findPrimitiveTasking){ |
| | | //任务数>已上数量 |
| | | List<Tasking> taskingTopList=taskingMapper.selectList(new QueryWrapper<Tasking>().lambda() |
| | | .eq(Tasking::getScanId,primitiveTask.getScanId()) |
| | | .eq(Tasking::getState,"线上") |
| | | .eq(Tasking::getGlassState,"正常") |
| | | ); |
| | | if (primitiveTask.getTaskQuantity()>primitiveTask.getReportCount()){ |
| | | loadCount=primitiveTask.getTaskQuantity()-taskingTopList.size(); |
| | | loadCount=(loadCount>0?loadCount:0); |
| | | //任务数-已上数量>0 返回1 |
| | | if((primitiveTask.getTaskQuantity()-primitiveTask.getLoadCount())>0){ |
| | | loadCount=1; |
| | | } |
| | | break; |
| | | } |
| | | }else{ |
| | | }else if(machine.getMode()==2){ |
| | | //定制模式 |
| | | loadCount=1; |
| | | }else if (machine.getMode()==3){ |
| | | loadCount=machine.getTaskCount()-machine.getFinshCount(); |
| | | loadCount=(loadCount>0?1:0); |
| | | } |
| | | if(loadCount>0){ |
| | | log.info("4、发送任务 任务数据:{}, 设备状态:{}, ",loadCount,machine); |
| | |
| | | private S7objectMachine s7objectMachine; |
| | | public static int thinness = 40; |
| | | public static int edgSpeed = 40; |
| | | public static Long machineId = 6L; |
| | | //public static Long machineId = 6L; |
| | | public List<Map> sendRecords = new ArrayList<>(); |
| | | |
| | | public MachineMarking(MachineMapper machineMapper, TaskingService taskingService){ |
| | | public Machine thisMachine; |
| | | public MachineMarking(Machine machine,MachineMapper machineMapper, TaskingService taskingService){ |
| | | this.thisMachine = machine; |
| | | this.machineMapper = machineMapper; |
| | | this.taskingService = taskingService; |
| | | } |
| | | |
| | | public void plcStart() { |
| | | Long machineId=12L; |
| | | Machine machine=machineMapper.selectById(machineId); |
| | | //Long machineId=12L; |
| | | Machine machine=machineMapper.selectById(thisMachine.getId()); |
| | | // S7objectMachine s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcMarking", EPlcType.S1500); |
| | | // s7objectMachine.start(); |
| | | if (s7objectMachine==null){ |
| | | s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcMarking", EPlcType.S1500); |
| | | s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),machine.getFileName(), EPlcType.S1500); |
| | | s7objectMachine.start(); |
| | | } |
| | | PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject; |
| | |
| | | if(isMark_==1){ |
| | | s7objectMachine.plccontrol.writeString(drawingMark.getAddress(), tasking.getProgramId()); |
| | | } |
| | | s7objectMachine.plccontrol.writeWord(lengthOutOfService.getAddress(), tasking.getLength().intValue()); |
| | | s7objectMachine.plccontrol.writeWord(widthOutOfService.getAddress(), tasking.getWidth().intValue()); |
| | | s7objectMachine.plccontrol.writeWord(widthOutOfService.getAddress(), tasking.getWidth().intValue());//y |
| | | s7objectMachine.plccontrol.writeWord(lengthOutOfService.getAddress(), tasking.getLength().intValue());//x |
| | | s7objectMachine.plccontrol.writeWord(isMark.getAddress(), isMark_); |
| | | s7objectMachine.plccontrol.writeWord(markingMode.getAddress(), isMarkingMode_); |
| | | s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1); |
| | | |
| | | SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | String sendRecord=df.format(new Date())+" "+ |
| | | tasking.getScanId()+"-"+ |
| | | tasking.getProgramId()+"-"+ |
| | | tasking.getLength()+"-"+ |
| | | tasking.getWidth()+"-"+ |
| | | isMark_+"-"+ |
| | | isMarkingMode_; |
| | | if (sendRecords.size()>7){ |
| | | sendRecords.remove(0); |
| | | } |
| | | Map sendContentMap=new HashMap(); |
| | | sendContentMap.put("sendContent",sendRecord); |
| | | sendRecords.add(sendContentMap); |
| | | return; |
| | | } |
| | | } |
| | |
| | | private S7objectMachine s7objectMachine; |
| | | public static Long machineId = 6L; |
| | | public List<Map> sendRecords = new ArrayList<>(); |
| | | public Machine thisMachine; |
| | | |
| | | public MachineRotate(MachineMapper machineMapper, TaskingService taskingService){ |
| | | public MachineRotate(Machine machine,MachineMapper machineMapper, TaskingService taskingService){ |
| | | this.thisMachine = machine; |
| | | this.machineMapper = machineMapper; |
| | | this.taskingService = taskingService; |
| | | } |
| | | public void plcStart() { |
| | | //旋转台 |
| | | Long machineId=20L; |
| | | Machine machine=machineMapper.selectById(machineId); |
| | | //Long machineId=20L; |
| | | Machine machine=machineMapper.selectById(thisMachine.getId()); |
| | | if (s7objectMachine==null){ |
| | | s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcRotate", EPlcType.S1200); |
| | | s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),machine.getFileName(), EPlcType.S1200); |
| | | s7objectMachine.start(); |
| | | } |
| | | PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject; |
| | |
| | | s7objectMachine.plccontrol.writeWord(length.getAddress(), tasking.getLength().intValue()); |
| | | s7objectMachine.plccontrol.writeWord(width.getAddress(), tasking.getWidth().intValue()); |
| | | s7objectMachine.plccontrol.writeString(mesSendId.getAddress(), tasking.getTaskSequence().toString()); |
| | | s7objectMachine.plccontrol.writeWord(rotateType.getAddress(), 1); |
| | | s7objectMachine.plccontrol.writeWord(rotateType.getAddress(), machine.getRotateMode()); |
| | | s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1); |
| | | SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | String sendRecord=df.format(new Date())+" "+ |
| | |
| | | }else if(!scan_id.isEmpty()){ |
| | | taskingService.scanMachineAdd(machine,scan_id); |
| | | } |
| | | }else if("0".equals(plcRequest.getValue())){ |
| | | nullMachine(machine); |
| | | } |
| | | |
| | | } |
| | |
| | | private TaskingService taskingService; |
| | | public static Long machineId = 14L; |
| | | public List<Map> sendRecords = new ArrayList<>(); |
| | | |
| | | public MachineSilkScreen(MachineMapper machineMapper, TaskingService taskingService){ |
| | | public Machine thisMachine; |
| | | public MachineSilkScreen(Machine machine,MachineMapper machineMapper, TaskingService taskingService){ |
| | | this.thisMachine = machine; |
| | | this.machineMapper = machineMapper; |
| | | this.taskingService = taskingService; |
| | | } |
| | | |
| | | public void plcStart() { |
| | | Machine machine=machineMapper.selectById(machineId); |
| | | String fileName="PlcSilkScreen"; |
| | | Machine machine=machineMapper.selectById(thisMachine.getId()); |
| | | String fileName=machine.getFileName(); |
| | | ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),fileName); |
| | | modbusTcp1.connect(); |
| | | PlcAgreement plcAgreement=modbusTcp1.getPlcAgreement(fileName); |
| | |
| | | import com.mes.service.PlcParameter; |
| | | import com.mes.utils.HexUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.http.protocol.HTTP; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | |
| | | public Long machineId = 2L; |
| | | public List<Map> sendRecords = new ArrayList<>(); |
| | | |
| | | // public void plcStart1(PlcAgreement plcAgreement,String zuKey) { |
| | | // //逻辑组 :请求组,完成组,其他组 |
| | | // //List<Map<String,String>> map=new ArrayList<>();//逻辑组 |
| | | // Map<String,Map<String,Map<String,String>>> map=new HashMap<>();//请求逻辑组 |
| | | |
| | | // Map<String,Map<String,String>> zuMap=map.get(zuKey); |
| | | // |
| | | // for(String key:map.keySet()){ |
| | | // boolean istrue=false; |
| | | // if(plcAgreement.getPlcParameter(key).getValueString()==map.get(key)){ |
| | | // istrue=true; |
| | | // } |
| | | // map.put(key,plcAgreement.getPlcParameter(key).getValueString()); |
| | | // } |
| | | // |
| | | // } |
| | | |
| | | public void plcStart() { |
| | | Machine machine=machineMapper.selectById(machineId); |
| | | ModbusTcp modbusTcp1 =new ModbusTcp(machine.getIp(),machine.getPort(),"PlcLoad"); |
| | |
| | | public void testSaoMa() { |
| | | try { |
| | | // 创建TCP客户端并连接到服务器 |
| | | String serverAddress = "192.168.1.8"; |
| | | String serverAddress = "10.36.164.19"; |
| | | int serverPort = 2001; |
| | | Socket clientSocket = new Socket(serverAddress, serverPort); |
| | | // 创建输入流和输出流 |
| | |
| | | com\mes\md\mapper\TaskingMapper.class |
| | | com\mes\md\entity\Machine.class |
| | | com\mes\md\mapper\RoleMapper.class |
| | | com\mes\md\service\TaskingLogService.class |
| | | com\mes\md\mapper\KBBTProgramsDeviceStatusLogBPMapper.class |
| | | com\mes\md\service\impl\ProjectServiceImpl.class |
| | | com\mes\md\service\impl\OrderOriginalPieceServiceImpl.class |
| | | com\mes\md\service\AccountService.class |
| | | com\mes\DeviceInteractionModuleApplication.class |
| | | com\mes\job\PLCScanQRVerify.class |
| | | com\mes\md\service\ProjectService.class |
| | | com\mes\md\service\WorkTaskDetailService.class |
| | | com\mes\common\S7objectMachine.class |
| | | com\mes\md\service\impl\EquipmentLogServiceImpl.class |
| | | com\mes\job\PLCRotate.class |
| | | com\mes\md\controller\WorkTaskDetailController.class |
| | | com\mes\md\controller\MenuController.class |
| | | com\mes\md\entity\OrderOriginalPiece.class |
| | |
| | | com\mes\md\service\MenuService.class |
| | | com\mes\md\mapper\KBBTJPDrawingBPMapper.class |
| | | com\mes\md\controller\GlassInfoController.class |
| | | com\mes\md\service\KBBTProgramsOperationLogBPService.class |
| | | com\mes\md\mapper\PageMapper.class |
| | | com\mes\md\service\ProjectLogService.class |
| | | com\mes\md\entity\Project.class |
| | | com\mes\md\mapper\PrimitiveTaskMapper.class |
| | | com\mes\md\service\impl\EdgeGrindingLogServiceImpl.class |
| | | com\mes\job\AddTask.class |
| | | com\mes\md\entity\KBBTProgramsOperationLogBP.class |
| | | com\mes\md\entity\LineConfiguration.class |
| | | com\mes\edgstoragecage\controller\EdgStorageCageController.class |
| | | com\mes\edgstoragecage\entity\EdgStorageCage.class |
| | |
| | | com\mes\plcTaskThread\MachineSilkScreen.class |
| | | com\mes\md\entity\EquipmentLog.class |
| | | com\mes\md\service\KBBTJPDrawingBPService.class |
| | | com\mes\md\mapper\KBBTProgramsDeviceOlnlineLogBPMapper.class |
| | | com\mes\plcTaskThread\MachineRotate.class |
| | | com\mes\md\controller\PrimitiveTaskController.class |
| | | com\mes\md\controller\RoleMenuController.class |
| | |
| | | com\mes\md\mapper\WorkTaskDetailMapper.class |
| | | com\mes\md\service\LineService.class |
| | | com\mes\md\service\impl\PageServiceImpl.class |
| | | com\mes\md\entity\TaskingLog.class |
| | | com\mes\md\service\impl\WorkTaskDetailServiceImpl.class |
| | | com\mes\md\service\impl\TaskLogServiceImpl.class |
| | | com\mes\md\mapper\TaskingLogMapper.class |
| | | com\mes\md\controller\EdgeGrindingLogController.class |
| | | com\mes\md\service\LineConfigurationService.class |
| | | com\mes\md\entity\GlassInfo.class |
| | |
| | | com\mes\md\entity\Page.class |
| | | com\mes\job\PLCCleaning.class |
| | | com\mes\md\controller\RoleController.class |
| | | com\mes\job\MarkingTask.class |
| | | com\mes\md\mapper\MachineMapper.class |
| | | com\mes\md\mapper\AccountMapper.class |
| | | com\mes\common\S7objectCleaning.class |
| | |
| | | com\mes\md\entity\ProjectLog.class |
| | | com\mes\md\service\EdgeGrindingLogService.class |
| | | com\mes\AppRunnerConfig.class |
| | | com\mes\job\PLCFlipSlice.class |
| | | com\mes\plcTaskThread\MachineFlipSlice.class |
| | | com\mes\md\controller\TaskingController.class |
| | | com\mes\md\controller\AccountController.class |
| | | com\mes\md\service\TaskLogService.class |
| | | com\mes\job\SilkScreenTask.class |
| | | com\mes\md\mapper\KBBTProgramsOperationLogBPMapper.class |
| | | com\mes\md\service\PrimitiveTaskService.class |
| | | com\mes\plcTaskThread\MachineLoad.class |
| | | com\mes\md\entity\Account.class |
| | | com\mes\job\PLCScanQRWorks.class |
| | | com\mes\md\service\impl\TaskingLogServiceImpl.class |
| | | com\mes\md\service\impl\MenuServiceImpl.class |
| | | com\mes\md\controller\PageController.class |
| | | com\mes\md\entity\TaskLog.class |
| | | com\mes\md\mapper\LineConfigurationMapper.class |
| | | com\mes\md\entity\KBBTProgramsDeviceStatusLogBP.class |
| | | com\mes\md\mapper\EquipmentLogMapper.class |
| | | com\mes\job\PLCMechanicalArm.class |
| | | com\mes\md\entity\RoleMenu.class |
| | | com\mes\md\controller\TaskLogController.class |
| | | com\mes\md\service\impl\TaskingServiceImpl.class |
| | | com\mes\md\entity\KBBTLensSorting.class |
| | | com\mes\md\service\impl\KBBTJPDrawingBPServiceImpl.class |
| | | com\mes\md\mapper\ProjectMapper.class |
| | | com\mes\job\PLCScanQrCodesReport.class |
| | | com\mes\md\controller\EquipmentLogController.class |
| | | com\mes\md\controller\TaskingLogController.class |
| | | com\mes\common\SmbTool.class |
| | | com\mes\md\mapper\ProjectLogMapper.class |
| | | com\mes\job\PLCManualReporting.class |
| | | com\mes\plcTaskThread\MachineMarking.class |
| | | com\mes\md\mapper\OrderOriginalPieceMapper.class |
| | | com\mes\edgstoragecage\entity\EdgStorageCageDetails.class |
| | |
| | | com\mes\md\mapper\LineMapper.class |
| | | com\mes\md\mapper\EdgeGrindingLogMapper.class |
| | | com\mes\common\S7objectMarking.class |
| | | com\mes\md\entity\KBBTProgramsDeviceOlnlineLogBP.class |
| | | com\mes\md\entity\PrimitiveTask.class |
| | | com\mes\plcTaskThread\MachineLamination.class |
| | | com\mes\job\MachineTask.class |
| | | com\mes\md\entity\Menu.class |
| | | com\mes\md\service\impl\LineConfigurationServiceImpl.class |
| | |
| | | com\mes\md\service\MachineService.class |
| | | com\mes\md\service\PageService.class |
| | | com\mes\md\controller\ProjectLogController.class |
| | | com\mes\job\PLCEdging.class |
| | | com\mes\job\PLCLoad.class |
| | | com\mes\md\mapper\GlassInfoMapper.class |
| | | com\mes\md\service\impl\KBBTProgramsOperationLogBPServiceImpl.class |
| | | com\mes\md\entity\Tasking.class |
| | | com\mes\md\service\impl\MachineServiceImpl.class |
| | |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\mapper\EdgStorageCageMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\CommunicationProtocol.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\DeviceInteractionModuleApplication.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCEdging.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\MarkingTask.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Role.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Tasking.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\service\impl\EdgStorageCageServiceImpl.java |
| | |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\ProjectLogMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\GlassInfoServiceImpl.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\WorkTaskDetailController.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\KBBTProgramsOperationLogBPMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\MachineTask.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineThread.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\WorkTaskDetailServiceImpl.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\AccountService.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCScanQRWorks.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\KBBTJPDrawingBPMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\AccountServiceImpl.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\MenuServiceImpl.java |
| | |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\TaskingController.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\TaskLogServiceImpl.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\TaskingServiceImpl.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCLoad.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\LineConfigurationService.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\AppRunnerConfig.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\AccountMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\SilkScreenTask.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\ProjectMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\TaskingService.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\GlassInfoMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\WorkTaskDetailMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\TaskingLogController.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Line.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\MachineMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\EdgeGrindingLogMapper.java |
| | |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\MenuMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\KBBTJPDrawingBPService.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\SmbTool.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCRotate.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\KBBTProgramsDeviceOlnlineLogBP.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Page.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\S7objectFlipSlice.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineLoad.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCCleaning.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\TaskingLog.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\ProjectLogService.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineSilkScreen.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCScanQRVerify.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\MachineController.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\entity\EdgStorageCageDetails.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineFlipSlice.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\ProjectLogController.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\S7objectMarking.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\WorkTaskDetail.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\KBBTProgramsDeviceOlnlineLogBPMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\TaskLogController.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\TaskLogService.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\RoleMenu.java |
| | |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\EquipmentLogServiceImpl.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\RoleMenuService.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\AddTask.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCMechanicalArm.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\LineMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\KBBTLensSorting.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineLamination.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\ProjectLog.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\KBBTJPDrawingBP.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\PageService.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineMarking.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\KBBTProgramsOperationLogBP.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\TaskLog.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\GlassInfo.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\OrderOriginalPieceMapper.java |
| | |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\edgstoragecage\entity\EdgStorageCage.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\PrimitiveTaskMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\MachineService.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\TaskingLogServiceImpl.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\TaskingLogMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\EdgeGrindingLogController.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Account.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineRotate.java |
| | |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\OrderOriginalPieceService.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\RoleMenuMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\EquipmentLogMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCFlipSlice.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\EquipmentLog.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\LineConfigurationMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\LineServiceImpl.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCScanQrCodesReport.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\KBBTProgramsDeviceStatusLogBPMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\AccountController.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\KBBTProgramsDeviceStatusLogBP.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\MenuService.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\Menu.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\LineService.java |
| | |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\GlassInfoController.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\OrderOriginalPieceServiceImpl.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\ProjectService.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\TaskingLogService.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\KBBTProgramsOperationLogBPServiceImpl.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\impl\ProjectLogServiceImpl.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\mapper\TaskingMapper.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\OrderOriginalPieceController.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\common\S7objectCleaning.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\job\PLCManualReporting.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\service\KBBTProgramsOperationLogBPService.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\plcTaskThread\MachineEdging.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\entity\PrimitiveTask.java |
| | | D:\workfile\JiuMuMES\JiuMuMesParent\moduleService\DeviceInteractionModule\src\main\java\com\mes\md\controller\EquipmentLogController.java |
| | |
| | | export default { |
| | | |
| | | serverUrl: "localhost:88/api", |
| | | serverUrl2: "localhost:88" |
| | | // serverUrl: "localhost:88/api", |
| | | // serverUrl2: "localhost:88" |
| | | |
| | | // serverUrl: "10.36.164.200:88/api", |
| | | // serverUrl2: "10.36.164.200:88" |
| | | // serverUrl: "10.153.19.29:88/api", |
| | | //serverUrl: "10.36.164.201:88/api", |
| | | // serverUrl: "10.36.164.253:88/api", |
| | | // serverUrl2: "10.36.164.253:88" |
| | | |
| | | // serverUrl: "127.0.0.1:88/api", |
| | | // serverUrl2: "10.153.19.29:88" |
| | | //serverUrl2: "10.36.164.201:88" |
| | | serverUrl: "10.36.164.200:88/api", |
| | | serverUrl2: "10.36.164.200:88" |
| | | |
| | | // serverUrl2: "127.0.0.1:88" |
| | | // serverUrl2: "127.0.0.1:88"npm |
| | | |
| | | //serverUrl:"res.abeim.cn" |
| | | } |
| | |
| | | "@vue-macros/reactivity-transform": "^0.3.23", |
| | | "axios": "^1.6.8", |
| | | "chart.js": "^4.4.3", |
| | | "echarts": "^5.5.1", |
| | | "echarts": "^5.6.0", |
| | | "element-plus": "^2.8.2", |
| | | "moment": "^2.30.1", |
| | | "northglass-mes": "file:", |
| | |
| | | "integrity": "sha512-M/MERVDZ8hguvjl6MAlLWSLYLS7PzEyXaTb5gEeJ+SF+e9iUC0sdvlzqe91MMDHBoy+nqw7wKcUOrDSyvMCrRg==" |
| | | }, |
| | | "node_modules/echarts": { |
| | | "version": "5.5.1", |
| | | "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz", |
| | | "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==", |
| | | "version": "5.6.0", |
| | | "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz", |
| | | "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==", |
| | | "dependencies": { |
| | | "tslib": "2.3.0", |
| | | "zrender": "5.6.0" |
| | | "zrender": "5.6.1" |
| | | } |
| | | }, |
| | | "node_modules/element-plus": { |
| | |
| | | } |
| | | }, |
| | | "node_modules/zrender": { |
| | | "version": "5.6.0", |
| | | "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz", |
| | | "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==", |
| | | "version": "5.6.1", |
| | | "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz", |
| | | "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==", |
| | | "dependencies": { |
| | | "tslib": "2.3.0" |
| | | } |
| | |
| | | "integrity": "sha512-M/MERVDZ8hguvjl6MAlLWSLYLS7PzEyXaTb5gEeJ+SF+e9iUC0sdvlzqe91MMDHBoy+nqw7wKcUOrDSyvMCrRg==" |
| | | }, |
| | | "echarts": { |
| | | "version": "5.5.1", |
| | | "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz", |
| | | "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==", |
| | | "version": "5.6.0", |
| | | "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz", |
| | | "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==", |
| | | "requires": { |
| | | "tslib": "2.3.0", |
| | | "zrender": "5.6.0" |
| | | "zrender": "5.6.1" |
| | | } |
| | | }, |
| | | "element-plus": { |
| | |
| | | "@vue-macros/reactivity-transform": "^0.3.23", |
| | | "axios": "^1.6.8", |
| | | "chart.js": "^4.4.3", |
| | | "echarts": "^5.5.1", |
| | | "echarts": "^5.6.0", |
| | | "element-plus": "^2.8.2", |
| | | "http-proxy-middleware": "^3.0.0", |
| | | "moment": "^2.30.1", |
| | |
| | | "integrity": "sha512-M/MERVDZ8hguvjl6MAlLWSLYLS7PzEyXaTb5gEeJ+SF+e9iUC0sdvlzqe91MMDHBoy+nqw7wKcUOrDSyvMCrRg==" |
| | | }, |
| | | "echarts": { |
| | | "version": "5.5.1", |
| | | "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz", |
| | | "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==", |
| | | "version": "5.6.0", |
| | | "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz", |
| | | "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==", |
| | | "requires": { |
| | | "tslib": "2.3.0", |
| | | "zrender": "5.6.0" |
| | | "zrender": "5.6.1" |
| | | } |
| | | }, |
| | | "element-plus": { |
| | |
| | | } |
| | | }, |
| | | "zrender": { |
| | | "version": "5.6.0", |
| | | "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz", |
| | | "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==", |
| | | "version": "5.6.1", |
| | | "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz", |
| | | "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==", |
| | | "requires": { |
| | | "tslib": "2.3.0" |
| | | } |
| | |
| | | } |
| | | }, |
| | | "zrender": { |
| | | "version": "5.6.0", |
| | | "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz", |
| | | "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==", |
| | | "version": "5.6.1", |
| | | "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz", |
| | | "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==", |
| | | "requires": { |
| | | "tslib": "2.3.0" |
| | | } |
| | |
| | | "version": "0.0.0", |
| | | "private": true, |
| | | "scripts": { |
| | | "dev": "vite --host 0.0.0.0", |
| | | "build": "vite build", |
| | | "serve": "vite preview --host 0.0.0.0" |
| | | "dev": "vite --host 0.0.0.0", |
| | | "build": "vite build", |
| | | "serve": "vite preview --host 0.0.0.0" |
| | | }, |
| | | "dependencies": { |
| | | "@element-plus/icons-vue": "^2.3.1", |
| | | "@vue-macros/reactivity-transform": "^0.3.23", |
| | | "axios": "^1.6.8", |
| | | "chart.js": "^4.4.3", |
| | | "echarts": "^5.5.1", |
| | | "echarts": "^5.6.0", |
| | | "element-plus": "^2.8.2", |
| | | "moment": "^2.30.1", |
| | | "northglass-mes": "file:", |
| | |
| | | modeB :'标准', |
| | | bound:'绑定', |
| | | reporting:'报工', |
| | | rotate:'旋转', |
| | | notRotate:'不旋转', |
| | | reportingcount:'报工数量', |
| | | |
| | | } |
| | |
| | | import VXETable from 'vxe-table' |
| | | import 'vxe-table/lib/style.css' |
| | | import i18n from '@/lang' |
| | | // import Echarts from "vue-echarts" |
| | | import * as echarts from "echarts" |
| | | import Echarts from "vue-echarts" |
| | | import * as echarts from "echarts"; |
| | | // echarts.registerMap('china', china) |
| | | // Vue.prototype.$echarts = echarts |
| | | // app.component("v-chart", Echarts) |
| | | // app.config.globalProperties.$echarts = echarts |
| | | import * as ElementPlusIconsVue from '@element-plus/icons-vue' |
| | | |
| | | |
| | | const app = createApp(App) |
| | | app.component('v-chart', echarts) |
| | | //app.config.globalProperties.$echarts = echarts |
| | | |
| | | for (const [key, component] of Object.entries(ElementPlusIconsVue)) { |
| | | app.component(key, component) |
| | | } |
| | | |
| | | const pinia = createPinia() |
| | | pinia.use(piniaPluginPersistedstate ) |
| | | app.use(VXETable) |
| | |
| | | ] |
| | | }, |
| | | { |
| | | /*----------- 大屏 ----------------*/ |
| | | path: 'KanbanDisplay/kanbanDisplay', |
| | | name: 'kanbanDisplay', |
| | | component: () => import('../views/KanbanDisplay/kanbanDisplay.vue'), |
| | | children: [ |
| | | { |
| | | path: '/KanbanDisplay/kanbanDisplay', |
| | | name: 'kanbanDisplay', |
| | | component: () => import('../views/KanbanDisplay/kanbanDisplay.vue'), |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | /*----------- 清洗机 ----------------*/ |
| | | path: 'Cleaning', |
| | | name: 'cleaning', |
| | |
| | | } |
| | | ] |
| | | }, |
| | | // { |
| | | // /*----------- 自动点胶机 ----------------*/ |
| | | // path: 'GlueDispenser', |
| | | // name: 'glueDispenser', |
| | | // component: () => import('../views/GlueDispenser/glueDispenser.vue'), |
| | | // children: [ |
| | | // { |
| | | // path: '/GlueDispenser/glueDispenser', |
| | | // name: 'glueDispenser', |
| | | // component: () => import('../views/GlueDispenser/glueDispenser.vue'), |
| | | // } |
| | | // ] |
| | | // }, |
| | | { |
| | | /*----------- 自动点胶机 ----------------*/ |
| | | path: 'GlueDispenser', |
| | | name: 'glueDispenser', |
| | | component: () => import('../views/GlueDispenser/glueDispenser.vue'), |
| | | children: [ |
| | | { |
| | | path: '/GlueDispenser/glueDispenser', |
| | | name: 'glueDispenser', |
| | | component: () => import('../views/GlueDispenser/glueDispenser.vue'), |
| | | } |
| | | ] |
| | | }, |
| | | // { |
| | | // /*----------- 烘干线 ----------------*/ |
| | | // path: 'Drying', |
| | |
| | | } |
| | | ] |
| | | }, |
| | | // { |
| | | // /*----------- 自动贴膜机 ----------------*/ |
| | | // path: 'Lamination', |
| | | // name: 'lamination', |
| | | // component: () => import('../views/Lamination/lamination.vue'), |
| | | // children: [ |
| | | // { |
| | | // path: '/Lamination/lamination', |
| | | // name: 'lamination', |
| | | // component: () => import('../views/Lamination/lamination.vue'), |
| | | // } |
| | | // ] |
| | | // }, |
| | | { |
| | | /*----------- 自动贴膜机 ----------------*/ |
| | | path: 'Lamination', |
| | | name: 'lamination', |
| | | component: () => import('../views/Lamination/lamination.vue'), |
| | | children: [ |
| | | { |
| | | path: '/Lamination/lamination', |
| | | name: 'lamination', |
| | | component: () => import('../views/Lamination/lamination.vue'), |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | /*----------- 报工管理 ----------------*/ |
| | | path: 'ManualReporting', |
| | |
| | | export const WebSocketHost = "localhost"; |
| | | // export const WebSocketHost = "10.36.164.200"; |
| | | // export const WebSocketHost = "10.153.19.29"; |
| | | // export const WebSocketHost = "127.0.0.1"; |
| | | export const host = "88"; |
| | | // export const WebSocketHost = "localhost"; |
| | | // export const WebSocketHost = "10.36.164.253"; |
| | | export const WebSocketHost = "10.36.164.200"; |
| | | export const host = "88"; |
| | |
| | | import config from '../../config'; |
| | | import useUserInfoStore from '@/stores/userInfo' |
| | | const userStore=useUserInfoStore() |
| | | |
| | | const request = axios.create({ |
| | | baseURL: `http://${config.serverUrl}`, // 注意!! 这里是全局统一加上了 后端接口前缀 前缀,后端必须进行跨域配置! |
| | | //baseURL: `http://`+url, // 注意!! 这里是全局统一加上了 后端接口前缀 前缀,后端必须进行跨域配置! |
| | | timeout: 30000 |
| | | }) |
| | | |
| | | |
| | | // |
| | | |
| | |
| | | const sendRecords = ref([]); |
| | | const downLineTask = ref([]); |
| | | |
| | | const machineId = 6;//当前页面的设备ID |
| | | |
| | | const userInfo=JSON.parse(window.localStorage.getItem('userInfo')); |
| | | const pageParams=userInfo.user.menus[0].pages[1].params; |
| | | const pageParamsJson=JSON.parse(pageParams); |
| | | const machineId = pageParamsJson.machineId;//当前页面的设备ID |
| | | console.log(machineId); |
| | | var errorScanId; |
| | | var errorOpen=false; |
| | | //使用WebSocket方式展示数据 |
| | |
| | | // 定义消息处理函数,更新 receivedData 变量 |
| | | const handleMessage = (data) => { |
| | | // 更新 tableData 的数据 |
| | | loadData.value = data.taskingList[0]; |
| | | findMachine.value = data.machine[0]; |
| | | sendRecords.value = data.sendRecords[0].reverse(); |
| | | let dataJson = data[""+machineId][0]; |
| | | |
| | | loadData.value = dataJson.taskingList[0]; |
| | | findMachine.value = dataJson.machine[0]; |
| | | sendRecords.value = dataJson.sendRecords[0].reverse(); |
| | | |
| | | if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){ |
| | | //有数据就弹窗 |
| | |
| | | const sendRecords = ref([]); |
| | | const downLineTask = ref([]); |
| | | |
| | | const machineId = 26;//当前页面的设备ID |
| | | const userInfo=JSON.parse(window.localStorage.getItem('userInfo')); |
| | | const pageParams=userInfo.user.menus[0].pages[2].params; |
| | | const pageParamsJson=JSON.parse(pageParams); |
| | | const machineId = pageParamsJson.machineId;//当前页面的设备ID |
| | | console.log(machineId); |
| | | //const machineId = 26;//当前页面的设备ID |
| | | var errorScanId; |
| | | var errorOpen=false; |
| | | //使用WebSocket方式展示数据 |
| | |
| | | // 定义消息处理函数,更新 receivedData 变量 |
| | | const handleMessage = (data) => { |
| | | // 更新 tableData 的数据 |
| | | loadData.value = data.taskingList[0]; |
| | | findMachine.value = data.machine[0]; |
| | | sendRecords.value = data.sendRecords[0].reverse(); |
| | | let dataJson = data[""+machineId][0]; |
| | | |
| | | loadData.value = dataJson.taskingList[0]; |
| | | findMachine.value = dataJson.machine[0]; |
| | | sendRecords.value = dataJson.sendRecords[0].reverse(); |
| | | if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){ |
| | | //有数据就弹窗 |
| | | if(errorOpen){ |
| | |
| | | <!-- 点胶机 --> |
| | | <!-- 贴膜机 --> |
| | | <script setup> |
| | | import request from "@/utils/request"; |
| | | import { ElMessage, ElMessageBox } from "element-plus"; |
| | | import { reactive, ref, onMounted, onBeforeUnmount,onUnmounted } from 'vue' |
| | | import { reactive, ref, onMounted, onBeforeUnmount, onUnmounted } from 'vue' |
| | | import { useI18n } from 'vue-i18n' |
| | | import { WebSocketHost ,host} from '@/utils/constants' |
| | | import { WebSocketHost, host } from '@/utils/constants' |
| | | import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; |
| | | |
| | | import {gridDateFormatter} from '@/stores/tool'; |
| | | |
| | | let language = ref(localStorage.getItem('lang') || 'zh') |
| | | const { t } = useI18n() |
| | |
| | | account: '', |
| | | password: '', |
| | | }); |
| | | const blind = ref(false) |
| | | const loadData = ref([]); |
| | | const findMachine = ref([]); |
| | | const machineId=15;//当前页面的设备ID |
| | | const sendRecords = ref([]); |
| | | const downLineTask = ref([]); |
| | | |
| | | const userInfo=JSON.parse(window.localStorage.getItem('userInfo')); |
| | | const pageParams=userInfo.user.menus[0].pages[2].params; |
| | | const pageParamsJson=JSON.parse(pageParams); |
| | | const machineId = pageParamsJson.machineId;//当前页面的设备ID |
| | | console.log(machineId); |
| | | //使用WebSocket方式展示数据 |
| | | let socket = null; |
| | | let socketDownLineTask = null; |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/glueDispenser`; |
| | | const socketDownLineTaskUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/downLineTask`; |
| | | // 定义消息处理函数,更新 receivedData 变量 |
| | | const handleMessage = (data) => { |
| | | // 更新 tableData 的数据 |
| | | loadData.value = data.taskingList[0]; |
| | | findMachine.value = data.machine[0]; |
| | | let dataJson = data[""+machineId][0]; |
| | | |
| | | loadData.value = dataJson.taskingList[0]; |
| | | findMachine.value = dataJson.machine[0]; |
| | | sendRecords.value = dataJson.sendRecords[0].reverse(); |
| | | |
| | | }; |
| | | // 定义消息处理函数,更新 receivedData 变量 |
| | | const handleMessage2 = (data) => { |
| | | downLineTask.value = data.downLineTask[0]; |
| | | // console.log(data); |
| | | }; |
| | | onUnmounted(() => { |
| | | if (socket) { |
| | | closeWebSocket(socket); |
| | | } |
| | | if (socketDownLineTask) { |
| | | closeWebSocket(socketDownLineTask); |
| | | } |
| | | }); |
| | | onBeforeUnmount(() => { |
| | |
| | | onMounted(async () => { |
| | | //使用WebSocket方式展示数据 |
| | | socket = initializeWebSocket(socketUrl, handleMessage);// 初始化 WebSocket,并传递消息处理函数 |
| | | //使用WebSocket方式展示数据 |
| | | socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 初始化 WebSocket,并传递消息处理函数 |
| | | }); |
| | | //报警提示 |
| | | const errorInfoFuntion = async (info) => { |
| | | let infoScancode=info; |
| | | ElMessageBox.confirm( |
| | | infoScancode, |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sureStart'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | //修改工作状态 【失败/正在工作/完工】 |
| | | const workStatus = async(row,state) => { |
| | | const workStatus = async (row, state) => { |
| | | let url; |
| | | if(state=="重发"){ |
| | | url="/deviceInteraction/tasking/loseMachineTask"; |
| | | }else if(state=="正在工作"){ |
| | | url="/deviceInteraction/tasking/startMachineTask"; |
| | | }else if(state=="完工"){ |
| | | url="/deviceInteraction/tasking/finishMachineTask"; |
| | | }else{ |
| | | if (state == "重发") { |
| | | url = "/deviceInteraction/tasking/loseMachineTask"; |
| | | } else if (state == "正在工作") { |
| | | url = "/deviceInteraction/tasking/startMachineTask"; |
| | | } else if (state == "完工") { |
| | | url = "/deviceInteraction/tasking/finishMachineTask"; |
| | | } else { |
| | | return; |
| | | } |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //开始修改 |
| | | request.post(url, |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //开始修改 |
| | | request.post(url, |
| | | { |
| | | "id": machineId |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | "id": machineId |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | |
| | | } |
| | | |
| | | //开工/暂停 |
| | | const machineStatus = async(state) => { |
| | | const machineStatus = async (state) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/machine/updateMachineState", |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/machine/updateMachineState", |
| | | { |
| | | "id": machineId, |
| | | "state": state |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | "id": machineId, |
| | | "state": state |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | //定制/标准 |
| | | const machineMode = async (mode) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/machine/toggleModeMachine", |
| | | { |
| | | "id": machineId, |
| | | "mode": mode |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | //破损 |
| | | const damagedTask = async(row) => { |
| | | const damagedTask = async (row) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/tasking/damagedTask", |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/tasking/damagedTask", |
| | | { |
| | | "glassId": row.glassId |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | "glassId": row.glassId |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | //下线(拿走) |
| | | const glassDownLine = async(row) => { |
| | | const glassDownLine = async (row) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/tasking/glassDownLine", |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/tasking/glassDownLine", |
| | | { |
| | | "glassId": row.glassId, |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | "glassId": row.glassId, |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | const topLineShow = async () => { |
| | | blind.value = true; |
| | | } |
| | | //上线 |
| | | const topLine = async() => { |
| | | |
| | | const topLine = async (row) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //上线接口 |
| | | request.post("/deviceInteraction/tasking/glassTopLine", |
| | | { |
| | | "glassId": row.glassId, |
| | | "lineConfigurationId": machineId |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else {n |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | const handleDialogClose = () => { |
| | | |
| | | } |
| | | </script> |
| | | <template> |
| | | <div ref="content" style="padding:0 20px;"> |
| | | <div id="div-title" style="font-size: 20px; font-weight: bold; margin:10px 0 10px 0;padding-left: 20px;"> |
| | | {{$t('machine.glueDispenser')}} |
| | | {{ $t('machine.glueDispenser') }} |
| | | </div> |
| | | <el-dialog v-model="blind" top="30vh" style="text-align: center;" @close="handleDialogClose"> |
| | | <!-- 线下玻璃 --> |
| | | <el-table :data="downLineTask" stripe :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }" :cell-style="{ textAlign: 'center' }"> |
| | | <!-- <el-table-column type="selection" min-width="30" /> --> |
| | | <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30" /> |
| | | <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')" /> |
| | | <el-table-column prop="taskType" :label="$t('glassInfo.taskType')" /> |
| | | <el-table-column prop="scanId" :label="$t('glassInfo.scanId')" /> |
| | | <el-table-column prop="length" :label="$t('glassInfo.length')" /> |
| | | <el-table-column prop="width" :label="$t('glassInfo.width')" /> |
| | | <el-table-column prop="thickness" :label="$t('glassInfo.thickness')" /> |
| | | <el-table-column prop="workState" :label="$t('glassInfo.workState')" /> |
| | | <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="70"> |
| | | <template #default="scope"> |
| | | <el-button size="mini" link type="primary" plain @click="topLine(scope.row)">{{ |
| | | $t('functionState.topLine') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | <hr /> |
| | | <br> |
| | | <div id="search" > |
| | | <div id="search"> |
| | | <!-- 功能 --> |
| | | <el-button :type="(findMachine['state']=='暂停'?'danger':'success')" id="ButtonMachineStatus" |
| | | @click="machineStatus((findMachine['state']=='暂停'?'开工':'暂停'))"> |
| | | {{findMachine['state']=='开工'?$t('functionState.start'):$t('functionState.stop')}}</el-button> |
| | | <el-button type="primary" id="ButtonTopLine" @click="topLine">{{$t('functionState.topLine')}}</el-button> |
| | | <el-button :type="(findMachine['state'] == '暂停' ? 'danger' : 'success')" id="ButtonMachineStatus" |
| | | @click="machineStatus((findMachine['state'] == '暂停' ? '开工' : '暂停'))">{{ findMachine['state'] == '开工' ? |
| | | $t('functionState.start') : $t('functionState.stop') }}</el-button> |
| | | |
| | | <el-button type="primary" id="ButtonTopLine" @click="topLineShow">{{ $t('functionState.topLine') }}</el-button> |
| | | </div> |
| | | <div id="main-body" style="min-height:240px;"> |
| | | <div id="main-body"> |
| | | <!-- 表格内容 --> |
| | | <el-table :data="loadData" stripe |
| | | <el-table :data="loadData" stripe style="height:260px" |
| | | :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }" |
| | | :cell-style="{ textAlign: 'center' }"> |
| | | <!-- <el-table-column type="selection" min-width="30" /> --> |
| | | <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30" /> |
| | | <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')"/> |
| | | <el-table-column prop="taskType" :label="$t('glassInfo.taskType')"/> |
| | | <el-table-column prop="glassId" :label="$t('glassInfo.glassId')"/> |
| | | <el-table-column prop="length" :label="$t('glassInfo.length')"/> |
| | | <el-table-column prop="width" :label="$t('glassInfo.width')"/> |
| | | <el-table-column prop="thickness" :label="$t('glassInfo.thickness')"/> |
| | | <el-table-column prop="workState" :label="$t('glassInfo.workState')"/> |
| | | <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')" /> |
| | | <el-table-column prop="taskType" :label="$t('glassInfo.taskType')" /> |
| | | <el-table-column prop="glassId" :label="$t('glassInfo.glassId')" /> |
| | | <el-table-column prop="scanId" :label="$t('glassInfo.scanId')" /> |
| | | <el-table-column prop="length" :label="$t('glassInfo.length')" /> |
| | | <el-table-column prop="width" :label="$t('glassInfo.width')" /> |
| | | <el-table-column prop="thickness" :label="$t('glassInfo.thickness')" /> |
| | | <el-table-column prop="workState" :label="$t('glassInfo.workState')" /> |
| | | <el-table-column prop="operationRecordTime" :formatter="gridDateFormatter" :label="$t('glassInfo.operationRecordTime')" width="180"/> |
| | | <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="270"> |
| | | <template #default="scope"> |
| | | <el-button size="mini" link type="primary" plain @click="workStatus(scope.row, '重发')" >{{$t('functionState.anew')}}</el-button> |
| | | <el-button size="mini" link type="primary" plain @click="workStatus(scope.row, '完工')">{{$t('functionState.finish')}}</el-button> |
| | | <el-button size="mini" link type="primary" plain @click="damagedTask(scope.row)">{{$t('functionState.lose')}}</el-button> |
| | | <el-button size="mini" link type="primary" plain @click="glassDownLine(scope.row)">{{$t('functionState.downLine')}}</el-button> |
| | | <el-button size="mini" link type="primary" plain @click="workStatus(scope.row, '重发')">{{ |
| | | $t('functionState.anew') }}</el-button> |
| | | <el-button size="mini" link type="primary" plain @click="workStatus(scope.row, '完工')">{{ |
| | | $t('functionState.finish') }}</el-button> |
| | | <el-button size="mini" link type="primary" plain @click="damagedTask(scope.row)">{{ $t('functionState.lose') |
| | | }}</el-button> |
| | | <el-button size="mini" link type="primary" plain @click="glassDownLine(scope.row)">{{ |
| | | $t('functionState.downLine') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | |
| | | <!-- <div id="main-body" style="width: 100%; height: 460px;background-image: url(../../src/assets/自动打标机.png) ;background-size: 100% 100%;"> --> |
| | | <!-- 画图内容 --> |
| | | <!-- <div style="width: 100px; height: 100px; background-color: red; position: relative; top: 171px; left: 218px"> |
| | | <div id="main-body" style="width: 100%; height: 460px;min-width: 1200px;"> |
| | | <img style="width: 70%;min-width: 900px; height: 460px;float: left;" src="../../assets/翻片台.png"> |
| | | <!-- <el-image style="width: 70%;min-width: 900px; height: 460px;float: left;" src="../../src/assets/翻片台.png"></el-image> --> |
| | | <!-- <div style="width: 70%;min-width: 900px; height: 460px;background-image: url(../../src/assets/翻片台.png) ;background-size: 100% 100%;float: left;"> |
| | | |
| | | </div> --> |
| | | <!-- </div> --> |
| | | <div style="width: 30%;min-width: 300px; height: 460px;float: left;padding: 20px;;"> |
| | | <el-table :data="sendRecords" stripe |
| | | :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center', height: '30px' }" |
| | | :cell-style="{ textAlign: 'center' }"> |
| | | <el-table-column prop="sendContent" :label="$t('glassInfo.sendContent')" /> |
| | | </el-table> |
| | | </div> |
| | | <div style="clear:both"></div> |
| | | |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | border: none; |
| | | cursor: pointer; |
| | | } |
| | | .dotClass { |
| | | width:10px; |
| | | height:10px; |
| | | border-radius: 50%; |
| | | display: block; |
| | | margin-left: 10px; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <!-- 空白页 --> |
| | | |
| | | |
| | | <script setup> |
| | | import { ref, computed } from 'vue' |
| | | import * as echarts from 'echarts'; |
| | | </script> |
| | | <script> |
| | | export default { |
| | | mounted() { |
| | | this.drawLineChart('drawLineChart_day1', 1); |
| | | this.drawLineChart('drawLineChart_day2', 1); |
| | | this.drawLineChart('drawLineChart_day3', 1); |
| | | this.drawLineChart('drawLineChart_day4', 1); |
| | | this.drawLineChart('drawLineChart_day5', 1); |
| | | //this.drawLineChart('drawLineChart_week', 1); |
| | | this.drawBarchart('drawBarchart', 1); |
| | | }, |
| | | methods: { |
| | | //方法 |
| | | drawLineChart(name, data) { |
| | | var myChart = echarts.init(document.getElementById(name)); |
| | | myChart.setOption({ // 绘制图表 |
| | | title: { |
| | | text: '产量看板示例' |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | axisPointer: { |
| | | type: 'cross', |
| | | label: { |
| | | backgroundColor: '#6a7985' |
| | | } |
| | | } |
| | | }, |
| | | legend: { |
| | | data: ['计划产量', '实际产量'] |
| | | }, |
| | | toolbox: { |
| | | feature: { |
| | | saveAsImage: {} |
| | | } |
| | | }, |
| | | grid: { |
| | | left: '3%', |
| | | right: '4%', |
| | | bottom: '3%', |
| | | containLabel: true |
| | | }, |
| | | xAxis: [ |
| | | { |
| | | type: 'category', |
| | | boundaryGap: false, |
| | | data: ['1-01', '1-02', '1-03', '1-04', '1-05', |
| | | '1-06', '1-07', '1-08', '1-09', '1-10', |
| | | '1-11', '1-12', '1-13', '1-14', '1-15', |
| | | '1-16', '1-17', '1-18', '1-19', '1-20', |
| | | '1-21', '1-22', '1-23', '1-24', '1-25', |
| | | '1-26', '1-27', '1-28', '1-29', '1-30', '1-31'] |
| | | } |
| | | ], |
| | | yAxis: [ |
| | | { |
| | | type: 'value' |
| | | } |
| | | ], |
| | | series: [ |
| | | { |
| | | name: '计划产量', |
| | | type: 'line', |
| | | areaStyle: {}, |
| | | label: { |
| | | show: true, |
| | | position: 'top' |
| | | }, |
| | | data: [120, 132, 101, 134, 90, 230, 210, |
| | | 120, 132, 101, 134, 90, 230, 210, |
| | | 120, 132, 101, 134, 90, 230, 210, |
| | | 120, 132, 101, 134, 90, 230, 210, |
| | | 120, 132, 101] |
| | | }, |
| | | { |
| | | name: '实际产量', |
| | | type: 'line', |
| | | areaStyle: {}, |
| | | emphasis: { |
| | | focus: 'series' |
| | | }, |
| | | data: [100, 122, 101, 124, 90, 200, 180, |
| | | 100, 122, 101, 124, 90, 200, 180, |
| | | 100, 122, 101, 124, 90, 200, 180, |
| | | 100, 122, 101, 124, 90, 200, 180, |
| | | 100, 122, 101] |
| | | } |
| | | ] |
| | | |
| | | }); |
| | | }, |
| | | drawBarchart(name, data) { |
| | | var myChart = echarts.init(document.getElementById(name)); |
| | | myChart.setOption({ // 绘制图表 |
| | | title: { |
| | | text: '总产量看板示例' |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item' |
| | | }, |
| | | legend: { |
| | | top: '5%', |
| | | left: 'center' |
| | | }, |
| | | series: [ |
| | | { |
| | | name: 'Access From', |
| | | type: 'pie', |
| | | radius: ['40%', '70%'], |
| | | avoidLabelOverlap: false, |
| | | label: { |
| | | show: false, |
| | | position: 'center' |
| | | }, |
| | | emphasis: { |
| | | label: { |
| | | show: true, |
| | | fontSize: 40, |
| | | fontWeight: 'bold' |
| | | } |
| | | }, |
| | | labelLine: { |
| | | show: false |
| | | }, |
| | | data: [ |
| | | { value: 1000, name: '计划总片数' }, |
| | | { value: 900, name: '实际总片数' }, |
| | | { value: 10, name: '破损片数' } |
| | | ] |
| | | , label: { |
| | | formatter: '{b}:{c}' |
| | | } |
| | | } |
| | | ] |
| | | |
| | | |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <div> |
| | | <div style="font-size: 30px;height: 70px;line-height: 70px;border: 1px solid #ccc;text-align: center;"> |
| | | JOOMO镜片制造中心驾驶舱 |
| | | </div> |
| | | <div style="margin-left: 20px;"> |
| | | <el-button type="primary" @click="drawPieChart">标准品</el-button> |
| | | <el-button type="primary" @click="drawPieChart">定制品</el-button> |
| | | </div> |
| | | <div style="width:100% ;height: 880px;"> |
| | | <div style="width:33.3% ;height: 100%;border: 1px solid #ccc;float: left;"> |
| | | <div id="drawLineChart_day11" style="height: 50%;width: 100%;border: 1px solid #ccc;">日单达成率-片数</div> |
| | | <div id="drawLineChart_day21" style="height: 50%;width: 100%;border: 1px solid #ccc;">月单达成率-片数</div> |
| | | </div> |
| | | <div style="width:33.3% ;height: 100%;border: 1px solid #ccc;float: left;"> |
| | | <div id="drawLineChart_day31" style="height: 50%;width: 100%;border: 1px solid #ccc;">日单达成率-平方</div> |
| | | <div id="drawLineChart_day41" style="height: 50%;width: 100%;border: 1px solid #ccc;">月单达成率-平方</div> |
| | | </div> |
| | | <div style="width:33.3% ;height: 100%;border: 1px solid #ccc;float: left;"> |
| | | <div id="drawLineChart_day51" style="height: 33.3%;width: 100%;border: 1px solid #ccc;">合格率-显示当天</div> |
| | | <div id="drawLineChart_day61" style="height: 33.3%;width: 100%;border: 1px solid #ccc;">设备稼动率</div> |
| | | <div id="drawLineChart_day71" style="height: 33.3%;width: 100%;border: 1px solid #ccc;">能耗管理-按天显示(手输)</div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- <div style="width:33% ;height: 880px;border: 1px solid #ccc;"> |
| | | <div id="drawLineChart_day1" style="height: 300px;width: 25%;border: 1px solid #ccc;float: left;"></div> |
| | | <div id="drawLineChart_day2" style="height: 300px;width: 25%;border: 1px solid #ccc;float: left;"></div> |
| | | </div> --> |
| | | </div> |
| | | </template> |
| | | <style scoped> |
| | | .float{ |
| | | float: left; |
| | | } |
| | | .style{ |
| | | width: 600px; |
| | | height: 400px; |
| | | border: 1px solid #ccc; |
| | | } |
| | | .chart { |
| | | height: 400px; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <!-- 贴膜机 --> |
| | | <script setup> |
| | | import request from "@/utils/request"; |
| | | import { ElMessage, ElMessageBox } from "element-plus"; |
| | | import { reactive, ref, onMounted, onBeforeUnmount, onUnmounted } from 'vue' |
| | | import { useI18n } from 'vue-i18n' |
| | | import { WebSocketHost, host } from '@/utils/constants' |
| | | import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; |
| | | |
| | | import {gridDateFormatter} from '@/stores/tool'; |
| | | |
| | | let language = ref(localStorage.getItem('lang') || 'zh') |
| | | const { t } = useI18n() |
| | | const requestData = reactive({ |
| | | account: '', |
| | | password: '', |
| | | }); |
| | | const blind = ref(false) |
| | | const errorInfo = ref(true) |
| | | const loadData = ref([]); |
| | | const findMachine = ref([]); |
| | | const sendRecords = ref([]); |
| | | const downLineTask = ref([]); |
| | | |
| | | const userInfo=JSON.parse(window.localStorage.getItem('userInfo')); |
| | | const pageParams=userInfo.user.menus[0].pages[7].params; |
| | | const pageParamsJson=JSON.parse(pageParams); |
| | | const machineId = pageParamsJson.machineId;//当前页面的设备ID |
| | | console.log(machineId); |
| | | //const machineId = 21;//当前页面的设备ID |
| | | var errorScanId; |
| | | var errorOpen=false; |
| | | //使用WebSocket方式展示数据 |
| | | let socket = null; |
| | | let socketDownLineTask = null; |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/lamination`; |
| | | const socketDownLineTaskUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/downLineTask`; |
| | | // 定义消息处理函数,更新 receivedData 变量 |
| | | const handleMessage = (data) => { |
| | | // 更新 tableData 的数据 |
| | | let dataJson = data[""+machineId][0]; |
| | | |
| | | loadData.value = dataJson.taskingList[0]; |
| | | findMachine.value = dataJson.machine[0]; |
| | | sendRecords.value = dataJson.sendRecords[0].reverse(); |
| | | |
| | | }; |
| | | // 定义消息处理函数,更新 receivedData 变量 |
| | | const handleMessage2 = (data) => { |
| | | downLineTask.value = data.downLineTask[0]; |
| | | // console.log(data); |
| | | }; |
| | | onUnmounted(() => { |
| | | if (socket) { |
| | | closeWebSocket(socket); |
| | | } |
| | | if (socketDownLineTask) { |
| | | closeWebSocket(socketDownLineTask); |
| | | } |
| | | }); |
| | | onBeforeUnmount(() => { |
| | | console.log("关闭了") |
| | | closeWebSocket(); |
| | | }); |
| | | |
| | | onMounted(async () => { |
| | | //使用WebSocket方式展示数据 |
| | | socket = initializeWebSocket(socketUrl, handleMessage);// 初始化 WebSocket,并传递消息处理函数 |
| | | //使用WebSocket方式展示数据 |
| | | socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 初始化 WebSocket,并传递消息处理函数 |
| | | }); |
| | | //报警提示 |
| | | const errorInfoFuntion = async (info) => { |
| | | let infoScancode=info; |
| | | ElMessageBox.confirm( |
| | | infoScancode, |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sureStart'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | //修改工作状态 【失败/正在工作/完工】 |
| | | const workStatus = async (row, state) => { |
| | | let url; |
| | | if (state == "重发") { |
| | | url = "/deviceInteraction/tasking/loseMachineTask"; |
| | | } else if (state == "正在工作") { |
| | | url = "/deviceInteraction/tasking/startMachineTask"; |
| | | } else if (state == "完工") { |
| | | url = "/deviceInteraction/tasking/finishMachineTask"; |
| | | } else { |
| | | return; |
| | | } |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //开始修改 |
| | | request.post(url, |
| | | { |
| | | "id": machineId |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | |
| | | } |
| | | |
| | | //开工/暂停 |
| | | const machineStatus = async (state) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/machine/updateMachineState", |
| | | { |
| | | "id": machineId, |
| | | "state": state |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | //定制/标准 |
| | | const machineMode = async (mode) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/machine/toggleModeMachine", |
| | | { |
| | | "id": machineId, |
| | | "mode": mode |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | //破损 |
| | | const damagedTask = async (row) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/tasking/damagedTask", |
| | | { |
| | | "glassId": row.glassId |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | //下线(拿走) |
| | | const glassDownLine = async (row) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/tasking/glassDownLine", |
| | | { |
| | | "glassId": row.glassId, |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | const topLineShow = async () => { |
| | | blind.value = true; |
| | | } |
| | | //上线 |
| | | const topLine = async (row) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //上线接口 |
| | | request.post("/deviceInteraction/tasking/glassTopLine", |
| | | { |
| | | "glassId": row.glassId, |
| | | "lineConfigurationId": machineId |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else {n |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | const handleDialogClose = () => { |
| | | |
| | | } |
| | | </script> |
| | | <template> |
| | | <div ref="content" style="padding:0 20px;"> |
| | | <div id="div-title" style="font-size: 20px; font-weight: bold; margin:10px 0 10px 0;padding-left: 20px;"> |
| | | {{ $t('machine.lamination') }} |
| | | </div> |
| | | <el-dialog v-model="blind" top="30vh" style="text-align: center;" @close="handleDialogClose"> |
| | | <!-- 线下玻璃 --> |
| | | <el-table :data="downLineTask" stripe :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }" :cell-style="{ textAlign: 'center' }"> |
| | | <!-- <el-table-column type="selection" min-width="30" /> --> |
| | | <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30" /> |
| | | <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')" /> |
| | | <el-table-column prop="taskType" :label="$t('glassInfo.taskType')" /> |
| | | <el-table-column prop="scanId" :label="$t('glassInfo.scanId')" /> |
| | | <el-table-column prop="length" :label="$t('glassInfo.length')" /> |
| | | <el-table-column prop="width" :label="$t('glassInfo.width')" /> |
| | | <el-table-column prop="thickness" :label="$t('glassInfo.thickness')" /> |
| | | <el-table-column prop="workState" :label="$t('glassInfo.workState')" /> |
| | | <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="70"> |
| | | <template #default="scope"> |
| | | <el-button size="mini" link type="primary" plain @click="topLine(scope.row)">{{ |
| | | $t('functionState.topLine') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | <hr /> |
| | | <br> |
| | | <div id="search"> |
| | | <!-- 功能 --> |
| | | <el-button :type="(findMachine['state'] == '暂停' ? 'danger' : 'success')" id="ButtonMachineStatus" |
| | | @click="machineStatus((findMachine['state'] == '暂停' ? '开工' : '暂停'))">{{ findMachine['state'] == '开工' ? |
| | | $t('functionState.start') : $t('functionState.stop') }}</el-button> |
| | | |
| | | <el-button type="primary" id="ButtonTopLine" @click="topLineShow">{{ $t('functionState.topLine') }}</el-button> |
| | | </div> |
| | | <div id="main-body"> |
| | | <!-- 表格内容 --> |
| | | <el-table :data="loadData" stripe style="height:260px" |
| | | :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }" |
| | | :cell-style="{ textAlign: 'center' }"> |
| | | <!-- <el-table-column type="selection" min-width="30" /> --> |
| | | <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30" /> |
| | | <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')" /> |
| | | <el-table-column prop="taskType" :label="$t('glassInfo.taskType')" /> |
| | | <el-table-column prop="glassId" :label="$t('glassInfo.glassId')" /> |
| | | <el-table-column prop="scanId" :label="$t('glassInfo.scanId')" /> |
| | | <el-table-column prop="length" :label="$t('glassInfo.length')" /> |
| | | <el-table-column prop="width" :label="$t('glassInfo.width')" /> |
| | | <el-table-column prop="thickness" :label="$t('glassInfo.thickness')" /> |
| | | <el-table-column prop="workState" :label="$t('glassInfo.workState')" /> |
| | | <el-table-column prop="operationRecordTime" :formatter="gridDateFormatter" :label="$t('glassInfo.operationRecordTime')" width="180"/> |
| | | <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="270"> |
| | | <template #default="scope"> |
| | | <el-button size="mini" link type="primary" plain @click="workStatus(scope.row, '重发')">{{ |
| | | $t('functionState.anew') }}</el-button> |
| | | <el-button size="mini" link type="primary" plain @click="workStatus(scope.row, '完工')">{{ |
| | | $t('functionState.finish') }}</el-button> |
| | | <el-button size="mini" link type="primary" plain @click="damagedTask(scope.row)">{{ $t('functionState.lose') |
| | | }}</el-button> |
| | | <el-button size="mini" link type="primary" plain @click="glassDownLine(scope.row)">{{ |
| | | $t('functionState.downLine') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | |
| | | <div id="main-body" style="width: 100%; height: 460px;min-width: 1200px;"> |
| | | <div style="width: 33%;min-width: 400px;height: 460px;float: left;background-color: aqua;"></div> |
| | | <div style="width: 33%;min-width: 400px;height: 460px;float: left;"></div> |
| | | <div style="width: 33%;min-width: 400px;height: 460px;float: left;"></div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | table { |
| | | text-align: center; |
| | | width: 100%; |
| | | height: 100%; |
| | | border-collapse: collapse; |
| | | border-spacing: 0; |
| | | } |
| | | |
| | | table td { |
| | | text-align: center; |
| | | } |
| | | |
| | | #main-body { |
| | | width: 100%; |
| | | height: 100%; |
| | | border: 1px solid #ccc; |
| | | margin-top: 25px; |
| | | } |
| | | |
| | | #searchButton { |
| | | width: 100px; |
| | | height: 40px; |
| | | font-size: 16px; |
| | | border-radius: 5px; |
| | | background-color: #409EFF; |
| | | color: #fff; |
| | | border: none; |
| | | cursor: pointer; |
| | | } |
| | | .dotClass { |
| | | width:10px; |
| | | height:10px; |
| | | border-radius: 50%; |
| | | display: block; |
| | | margin-left: 10px; |
| | | } |
| | | </style> |
| | |
| | | const scanCodeOld = ref([]); |
| | | const searcheh = ref(); |
| | | |
| | | const machineId = 24;//当前页面的设备ID |
| | | const userInfo=JSON.parse(window.localStorage.getItem('userInfo')); |
| | | const pageParams=userInfo.user.menus[0].pages[4].params; |
| | | const pageParamsJson=JSON.parse(pageParams); |
| | | const machineId = pageParamsJson.machineId;//当前页面的设备ID |
| | | console.log(machineId); |
| | | var errorScanId; |
| | | var errorOpen=false; |
| | | //使用WebSocket方式展示数据 |
| | |
| | | // 更新 tableData 的数据 |
| | | //taskinggoruby.value = data.taskinggoruby[0]; |
| | | //loadData.value =getDataSort(data.taskingList[0]); |
| | | loadData.value = data.taskingList[0]; |
| | | findMachine.value = data.machine[0]; |
| | | let dataJson = data[""+machineId][0]; |
| | | loadData.value = dataJson.taskingList[0]; |
| | | findMachine.value = dataJson.machine[0]; |
| | | |
| | | if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){ |
| | | //有数据就弹窗 |
| | |
| | | }; |
| | | // 定义消息处理函数,更新 receivedData 变量 |
| | | const handleMessage2 = (data) => { |
| | | downLineTask.value = data.downLineTask[0]; |
| | | let dataJson = data[""+machineId][0]; |
| | | downLineTask.value = dataJson.downLineTask[0]; |
| | | // console.log(data); |
| | | }; |
| | | onUnmounted(() => { |
| | |
| | | :cell-style="{ textAlign: 'center' }"> |
| | | <!-- <el-table-column type="selection" min-width="30" /> --> |
| | | <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30" /> |
| | | <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')" /> |
| | | <el-table-column prop="taskType" :label="$t('glassInfo.taskType')" /> |
| | | <el-table-column prop="scanId" :label="$t('glassInfo.scanId')" /> |
| | | |
| | | <el-table-column prop="length" :label="$t('glassInfo.length')" /> |
| | | <el-table-column prop="width" :label="$t('glassInfo.width')" /> |
| | | <el-table-column prop="thickness" :label="$t('glassInfo.thickness')" /> |
| | | <el-table-column prop="operationRecordTime" :formatter="gridDateFormatter" :label="$t('glassInfo.operationRecordTime')" width="180"/> |
| | | <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')" /> |
| | | <el-table-column prop="scanId" :label="$t('glassInfo.scanId')" /> |
| | | <el-table-column prop="warehouse" :label="$t('glassInfo.warehouse')" /> |
| | | <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="270"> |
| | | <template #default="scope"> |
| | |
| | | const loadData = ref([]); |
| | | const findMachine = ref([]); |
| | | const sendRecords = ref([]); |
| | | const machineId=12;//当前页面的设备ID |
| | | |
| | | const userInfo=JSON.parse(window.localStorage.getItem('userInfo')); |
| | | const pageParams=userInfo.user.menus[0].pages[3].params; |
| | | const pageParamsJson=JSON.parse(pageParams); |
| | | const machineId = pageParamsJson.machineId;//当前页面的设备ID |
| | | console.log(machineId); |
| | | //const machineId=12;//当前页面的设备ID |
| | | //使用WebSocket方式展示数据 |
| | | let socket = null; |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/marking`; |
| | | // 定义消息处理函数,更新 receivedData 变量 |
| | | const handleMessage = (data) => { |
| | | // 更新 tableData 的数据 |
| | | loadData.value = data.taskingList[0]; |
| | | findMachine.value = data.machine[0]; |
| | | sendRecords.value = data.sendRecords[0]; |
| | | let dataJson = data[""+machineId][0]; |
| | | |
| | | loadData.value = dataJson.taskingList[0]; |
| | | findMachine.value = dataJson.machine[0]; |
| | | sendRecords.value = dataJson.sendRecords[0]; |
| | | }; |
| | | onUnmounted(() => { |
| | | if (socket) { |
| | |
| | | }); |
| | | const blind = ref(false) |
| | | const blindMode = ref(false) |
| | | const blindModeNumber = ref('') |
| | | const blindModeNumberLocal = ref('') |
| | | const errorInfo = ref(true) |
| | | const loadData = ref([]); |
| | | const findMachine = ref([]); |
| | |
| | | const findPrimitiveTask = ref([]); |
| | | const scanCodeOld = ref([]); |
| | | const searchs = ref(); |
| | | const machineId = 2;//当前页面的设备ID |
| | | |
| | | const userInfo=JSON.parse(window.localStorage.getItem('userInfo')); |
| | | const pageParams=userInfo.user.menus[0].pages[0].params; |
| | | const pageParamsJson=JSON.parse(pageParams); |
| | | const machineId = pageParamsJson.machineId;//当前页面的设备ID |
| | | console.log(machineId); |
| | | var errorScanId; |
| | | //使用WebSocket方式展示数据 |
| | | let socket = null; |
| | |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/loadTask`; |
| | | const socketDownLineTaskUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/downLineTask`; |
| | | // 定义消息处理函数,更新 receivedData 变量 |
| | | |
| | | |
| | | |
| | | const handleMessage = (data) => { |
| | | // 更新 tableData 的数据 |
| | | loadData.value = data.findPrimitiveTasking[0]; |
| | | findPrimitiveTask.value = data.findPrimitiveTask[0]; |
| | | findMachine.value = data.machine[0]; |
| | | sendRecords.value = data.sendRecords[0].reverse(); |
| | | let dataJson = data[""+machineId][0]; |
| | | |
| | | loadData.value = dataJson.findPrimitiveTasking[0]; |
| | | findPrimitiveTask.value = dataJson.findPrimitiveTask[0]; |
| | | findMachine.value = dataJson.machine[0]; |
| | | if(findMachine.value.mode=="1"){ |
| | | modevalue.value = { |
| | | value: '1', |
| | | label: '标准', |
| | | }; |
| | | }else if(findMachine.value.mode=="2"){ |
| | | modevalue.value = { |
| | | value: '2', |
| | | label: '定制', |
| | | }; |
| | | }else if(findMachine.value.mode=="3"){ |
| | | modevalue.value = { |
| | | value: '3', |
| | | label: '手动', |
| | | }; |
| | | } |
| | | //sendRecords.value = data.sendRecords[0].reverse(); |
| | | }; |
| | | // 定义消息处理函数,更新 receivedData 变量 |
| | | const handleMessage2 = (data) => { |
| | |
| | | label: '手动', |
| | | } |
| | | ] |
| | | |
| | | const modeShow = async () => { |
| | | blindMode.value = true; |
| | | blindModeNumberLocal.value=findMachine.taskCount; |
| | | } |
| | | //模式选择时进行处理 |
| | | const modeChange = async () => { |
| | | let mode=modevalue.value; |
| | | request.post("/deviceInteraction/machine/toggleModeMachine", |
| | | { |
| | | "id": machineId, |
| | | "mode": mode |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | if(modevalue.value=='3'){ |
| | | //当是手动模式时弹窗提示 设置上片数量 |
| | | blindMode.value = true; |
| | | } |
| | | |
| | | } |
| | | |
| | | //提交修改手动模式的吸片数量 |
| | | const fetchSubmit = async () => { |
| | | //扫码回车提交 |
| | | request.post("/deviceInteraction/machine/manualOperationTask", |
| | | { |
| | | "id": machineId, |
| | | "taskCount": blindModeNumberLocal.value, |
| | | "finshCount": 0 |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | blindMode.value = false; |
| | | } |
| | | </script> |
| | | <template> |
| | |
| | | <div id="div-title" style="font-size: 20px; font-weight: bold; margin:10px 0 10px 0;padding-left: 20px;"> |
| | | {{ $t('machine.mechanicalArm') }} |
| | | </div> |
| | | <el-dialog v-model="blind" top="30vh" style="text-align: center;" @close="handleDialogClose"> |
| | | <el-dialog v-model="blind" top="10vh" style="text-align: center;width:1400px ;" @close="handleDialogClose"> |
| | | <!-- 未领取的标准任务 --> |
| | | |
| | | <el-table :data="findPrimitiveTask" stripe style="height:260px" |
| | | <el-table :data="findPrimitiveTask" stripe style="height:660px" |
| | | :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }" |
| | | :cell-style="{ textAlign: 'center' }"> |
| | | <!-- <el-table-column type="selection" min-width="30" /> --> |
| | |
| | | </div> |
| | | <div> |
| | | 手动输入上片数量: |
| | | <el-input v-model="blindModeNumber" style="width: 200px;" type="Number" id="blindMode" @keyup.enter="fetchData"></el-input> |
| | | <el-input v-model="blindModeNumberLocal" style="width: 200px;" type="Number" id="blindMode" @keyup.enter="fetchSubmit"></el-input> |
| | | |
| | | </div> |
| | | <!-- <div> |
| | | <el-button size="mini" link type="primary" plain @click="startOrStopTask(scope.row, 2, 2)">确认</el-button> |
| | |
| | | <el-select v-model="modevalue" @change="modeChange" placeholder="请选择模式" size="large" style="width: 220px"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> |
| | | </el-select> |
| | | <span @click="modeChange" style="margin-left: 40px;">上片数量:{{ blindModeNumber}}</span> |
| | | |
| | | <span> |
| | | <span @click="modeShow" style="margin-left: 40px;">{{ findMachine.mode=="3"? ("上片数量:"+findMachine.taskCount):"" }}</span> |
| | | <span style="margin-left: 40px;">{{ findMachine.mode=="3"? ("已完成数量:"+findMachine.finshCount):"" }}</span> |
| | | </span> |
| | | |
| | | |
| | | </div> |
| | | <br> |
| | |
| | | @click="machineStatus((findMachine['state'] == '暂停' ? '开工' : '暂停'))">{{ findMachine['state'] == '开工' ? |
| | | $t('functionState.start') : $t('functionState.stop') }}</el-button> |
| | | <el-button type="primary" id="ButtonTopLine" @click="topLineShow">{{ $t('functionState.getTask') }}</el-button> |
| | | |
| | | <el-button :type="(findMachine['mode'] == '定制' ? 'danger' : 'success')" id="ButtonMachineMode" |
| | | @click="machineMode((findMachine['mode'] == 0 ? 1 : 0))">{{ findMachine['mode'] == 0 ? |
| | | $t('functionState.modeD') : $t('functionState.modeB') }}</el-button> |
| | | </div> |
| | | |
| | | <div id="main-body" style="min-height:240px;"> |
| | |
| | | const downLineTask = ref([]); |
| | | const searchs = ref(); |
| | | |
| | | const machineId = 20;//当前页面的设备ID |
| | | const userInfo=JSON.parse(window.localStorage.getItem('userInfo')); |
| | | const pageParams=userInfo.user.menus[0].pages[5].params; |
| | | const pageParamsJson=JSON.parse(pageParams); |
| | | const machineId = pageParamsJson.machineId;//当前页面的设备ID |
| | | console.log(machineId); |
| | | //const machineId = 20;//当前页面的设备ID |
| | | var errorScanId; |
| | | var errorOpen=false; |
| | | //使用WebSocket方式展示数据 |
| | |
| | | // 定义消息处理函数,更新 receivedData 变量 |
| | | const handleMessage = (data) => { |
| | | // 更新 tableData 的数据 |
| | | loadData.value = data.taskingList[0]; |
| | | findMachine.value = data.machine[0]; |
| | | sendRecords.value = data.sendRecords[0].reverse(); |
| | | let dataJson = data[""+machineId][0]; |
| | | |
| | | loadData.value = dataJson.taskingList[0]; |
| | | findMachine.value = dataJson.machine[0]; |
| | | sendRecords.value = dataJson.sendRecords[0].reverse(); |
| | | |
| | | if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){ |
| | | //有数据就弹窗 |
| | |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | //定制/标准 |
| | | const rotateMode = async (mode) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/machine/toggleModeRotate", |
| | | { |
| | | "id": machineId, |
| | | "rotateMode": mode |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | //破损 |
| | | const damagedTask = async (row) => { |
| | | ElMessageBox.confirm( |
| | |
| | | <el-button :type="(findMachine['mode'] == '定制' ? 'danger' : 'success')" id="ButtonMachineMode" |
| | | @click="machineMode((findMachine['mode'] == 0 ? 1 : 0))">{{ findMachine['mode'] == 0 ? |
| | | $t('functionState.modeD') : $t('functionState.modeB') }}</el-button> |
| | | |
| | | <el-button :type="(findMachine['rotateMode'] == 1 ? 'danger' : 'success')" id="ButtonRotateMode" |
| | | @click="rotateMode((findMachine['rotateMode'] == 1 ? 2 : 1))">{{ findMachine['rotateMode'] == 1 ? |
| | | $t('functionState.rotate') : $t('functionState.notRotate') }}</el-button> |
| | | |
| | | |
| | | <el-button type="primary" id="ButtonTopLine" @click="topLineShow">{{ $t('functionState.topLine') }}</el-button> |
| | | <!-- <el-button type="primary" id="searchButton" @click="downLine('下线')">下线</el-button> |
| | | <el-button type="primary" id="searchButton" @click="workStatus('破损')">破损</el-button> |
| | |
| | | const loadData = ref([]); |
| | | const findMachine = ref([]); |
| | | const sendRecords = ref([]); |
| | | const machineId=14;//当前页面的设备ID |
| | | |
| | | const userInfo=JSON.parse(window.localStorage.getItem('userInfo')); |
| | | const pageParams=userInfo.user.menus[0].pages[4].params; |
| | | const pageParamsJson=JSON.parse(pageParams); |
| | | const machineId = pageParamsJson.machineId;//当前页面的设备ID |
| | | console.log(machineId); |
| | | //const machineId=14;//当前页面的设备ID |
| | | //使用WebSocket方式展示数据 |
| | | let socket = null; |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/deviceInteraction/api/talk/silkScreenTask`; |
| | | // 定义消息处理函数,更新 receivedData 变量 |
| | | const handleMessage = (data) => { |
| | | // 更新 tableData 的数据 |
| | | loadData.value = data.taskingList[0]; |
| | | findMachine.value = data.machine[0]; |
| | | sendRecords.value = data.sendRecords[0]; |
| | | let dataJson = data[""+machineId][0]; |
| | | loadData.value = dataJson.taskingList[0]; |
| | | findMachine.value = dataJson.machine[0]; |
| | | sendRecords.value = dataJson.sendRecords[0]; |
| | | }; |
| | | onUnmounted(() => { |
| | | if (socket) { |