CanadaMes-ui/src/layout/index.vue
@@ -274,6 +274,7 @@ } //复位倒计时 console.log(obj.countdown); if (obj.countdown != null) { if ((obj.countdown[0] == true && this.CountDowns == 0) || this.EmergencyStop == true) { this.CountDown(); CanadaMes-ui/src/views/home/index.vue
@@ -929,7 +929,7 @@ if (obj.D01RequestState != null) { this.D01RequestState = obj.D01RequestState[0]; } // this.D01RequestState=true; //是否允许出片 this.isAllowQueue = obj.isAllowQueue[0]; @@ -1779,8 +1779,8 @@ } else { if (count > 0) { this.PromptSize = 500; this.CountDowns = count; count--; this.CountDowns = count; this.dialogFormCountDown = true; } else { springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -18,7 +18,6 @@ import com.example.springboot.entity.alarmmg; import com.example.springboot.mapper.HomeMapper; import com.example.springboot.mapper.SpianMapper; import com.example.springboot.service.StorageCageService; public class Plchome extends Thread { @@ -39,10 +38,7 @@ private Configuration config; private StorageCageService storageCageService; private StorageCageService storageCageService; public Plchome() throws IOException { config = new Configuration("config.properties"); @@ -112,96 +108,109 @@ jsonObject.append("isAllowReordering", Plchome.isAllowReordering); // 是否需要人工确认上片玻璃 jsonObject.append("isConfirm", isConfirm); // 读去Plc进片车与出片车位置W List<String> addressList = new ArrayList<String>(); addressList.add("DB106.12"); addressList.add("DB106.0"); List<Short> paramlist = S7control.getinstance().ReadWord(addressList); if (paramlist != null) { jsonObject.append("params", paramlist); } // 获取进片车状态 List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", 1);// 获取进片车状态 boolean exist1 = datas1ListState.contains((short) 0); jsonObject.append("zhuangtai", exist1); // 获取进片玻璃信息 List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1); if (inglassInfo != null) { if (inglassInfo.size() > 0) jsonObject.append("loadglassheight", inglassInfo.get(0) * 70); } // 获取铝框idDB106.DBW64 String frameno = spianService.queGlassid("DB103.270", 14).toString(); // String frameno="X12345611002GV"; if (!frameno.equals(Plchome.FrameNo)) { Plchome.FrameNo = frameno; try { north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); String framenos="X21763329601FB"; if (!framenos.equals(Plchome.FrameNo)) { Plchome.FrameNo = framenos; try { north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } if (S7control.getinstance().CheckConnected() == true) { // 读去Plc进片车与出片车位置W List<String> addressList = new ArrayList<String>(); addressList.add("DB106.12"); addressList.add("DB106.0"); List<Short> paramlist = S7control.getinstance().ReadWord(addressList); if (paramlist != null) { jsonObject.append("params", paramlist); } // 获取进片车状态 List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", 1);// 获取进片车状态 if (datas1ListState != null) { boolean exist1 = datas1ListState.contains((short) 0); jsonObject.append("zhuangtai", exist1); } // 获取进片请求状态 List<Short> D01Request = S7control.getinstance().ReadWord("DB106.24", 1); boolean D01RequestState = D01Request.contains((short) 1); // boolean D01RequestState =true; jsonObject.append("D01RequestState", D01RequestState); // 复位倒计时 // 地址104.9.6 List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1); for (Boolean countdowns : countdown) { jsonObject.append("countdown", countdowns); } // jsonObject.append("countdown", true); // 复位完成信号 List<Boolean> resets = S7control.getinstance().ReadBits("DB103.284", 1); for (Boolean reset : resets) { jsonObject.append("reset", reset); } // 是否急停 List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1); for (Boolean emergencystop : emergencystops) { jsonObject.append("emergencystop", emergencystop); } //终止继续按钮 List<String> niuanaddressList3 = Arrays.asList(config.getProperty("Parameter2.stop").split(",")); List<Boolean> anniuread = S7control.getinstance().readBits(niuanaddressList3); // Boolean[] value4 = { false, false}; // List<Boolean> anniuread = new ArrayList<>(Arrays.asList(value4)); // Boolean[] value5 = { true}; // List<Boolean> resets = new ArrayList<>(Arrays.asList(value5)); short[] anniuparams = new short[anniuread.size()]; for (int i = 0; i < anniuread.size(); i++) { boolean value = anniuread.get(i); anniuparams[i] = value ? (short) 1 : (short) 0; } short[] resets2 = new short[resets.size()]; for (int i = 0; i < resets.size(); i++) { boolean value = resets.get(i); resets2[i] = value ? (short) 1 : (short) 0; } System.out.println(resets); for (short number : resets2) { if (number == 1) { System.out.println(resets); jsonObject.append("Abort", anniuparams); // 获取进片玻璃信息 List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1); if (inglassInfo != null) { if (inglassInfo.size() > 0) { jsonObject.append("loadglassheight", inglassInfo.get(0) * 70); } } } // 获取铝框idDB106.DBW64,添加到出片队列 String frameno = spianService.queGlassid("DB103.270", 14).toString(); // String frameno="X12345611002GV"; frameno="X21763329601FB"; if (!frameno.equals(Plchome.FrameNo)) { Plchome.FrameNo = frameno; try { north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 获取进片请求状态 List<Short> D01Request = S7control.getinstance().ReadWord("DB106.24", 1); boolean D01RequestState = D01Request.contains((short) 1); // boolean D01RequestState =true; jsonObject.append("D01RequestState", D01RequestState); // 复位倒计时 // 地址104.9.6 List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1); for (Boolean countdowns : countdown) { jsonObject.append("countdown", countdowns); } // jsonObject.append("countdown", true); // 复位完成信号ss List<Boolean> resetss = S7control.getinstance().ReadBits("DB103.284", 1); for (Boolean reset : resetss) { jsonObject.append("reset", reset); } // 是否急停 List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1); for (Boolean emergencystop : emergencystops) { jsonObject.append("emergencystop", emergencystop); } // 终止继续按钮 List<String> niuanaddressList3 = Arrays.asList(config.getProperty("Parameter2.stop").split(",")); List<Boolean> anniuread = S7control.getinstance().readBits(niuanaddressList3); // Boolean[] value4 = { false, false}; // List<Boolean> anniuread = new ArrayList<>(Arrays.asList(value4)); Boolean[] value5 = { true }; List<Boolean> resets = new ArrayList<>(Arrays.asList(value5)); short[] anniuparams = new short[anniuread.size()]; for (int i = 0; i < anniuread.size(); i++) { boolean value = anniuread.get(i); anniuparams[i] = value ? (short) 1 : (short) 0; } short[] resets2 = new short[resets.size()]; for (int i = 0; i < resets.size(); i++) { boolean value = resets.get(i); resets2[i] = value ? (short) 1 : (short) 0; } for (short number : resets2) { if (number == 1) { jsonObject.append("Abort", anniuparams); } } } // 铝框线交互 @@ -245,71 +254,69 @@ if (webserver != null) { List<String> messages = webserver.getMessages(); if (!messages.isEmpty()) { // 将最后一个消息转换为整数类型的列表 String lastMessage = messages.get(messages.size() - 1); // System.out.println("lastMessage:" + lastMessage); JSONArray messageArray = new JSONArray(lastMessage); // String lastMessage = messages.get(messages.size() - 1); // System.out.println("lastMessage:" + lastMessage); // JSONArray messageArray = new JSONArray(lastMessage); // // try { // // 检查索引是否有效 // if (messageArray.getJSONArray(0).size() > 0) { // // 获取消息数组 // JSONArray jsonArray = messageArray.getJSONArray(0); // // 创建一个布尔值列表 // List<Boolean> sValue = new ArrayList<>(); // // 遍历消息数组 // for (int i = 0; i < jsonArray.size(); i++) { // // 获取消息数组中的值 // Object value = jsonArray.get(i); // // 检查值是否有效 // if (value != null && !value.toString().equals("null")) { // try { // // 移除非数字和数字字符 // String cleanedValue = value.toString().replaceAll("[^0-9-]", ""); // // 解析为布尔值 // boolean val = "1".equals(cleanedValue.trim()); // // 将布尔值添加到布尔值列表中 // sValue.add(val); // System.out.println( // "messageValue: " + Arrays.asList(val) + " added to the list"); // } catch (NumberFormatException e) { // // 如果无法解析为 boolean 类型,则忽略该部分 // System.err.println("Could not parse value: " + value); // } // } // } // // 终止进片任务 // boolean Value1 = sValue.get(0); // boolean Value2 = sValue.get(1); try { // 检查索引是否有效 if (messageArray.getJSONArray(0).size() > 0) { // 获取消息数组 JSONArray jsonArray = messageArray.getJSONArray(0); // 创建一个布尔值列表 List<Boolean> sValue = new ArrayList<>(); // 遍历消息数组 for (int i = 0; i < jsonArray.size(); i++) { // 获取消息数组中的值 Object value = jsonArray.get(i); // 检查值是否有效 if (value != null && !value.toString().equals("null")) { try { // 移除非数字和数字字符 String cleanedValue = value.toString().replaceAll("[^0-9-]", ""); // 解析为布尔值 boolean val = "1".equals(cleanedValue.trim()); // 将布尔值添加到布尔值列表中 sValue.add(val); System.out.println("messageValue: " + Arrays.asList(val) + " added to the list"); // if (Value1) { // storageCageService.EndTask(0); // } // if (Value2) { // storageCageService.EndTask(1); } catch (NumberFormatException e) { // 如果无法解析为 boolean 类型,则忽略该部分 System.err.println("Could not parse value: " + value); } } } // 终止进片任务 boolean Value1 = sValue.get(0); boolean Value2 = sValue.get(1); // } // // 检查布尔值列表是否为空 // if (!sValue.isEmpty()) { if (Value1) { storageCageService.EndTask(0); } if (Value2) { storageCageService.EndTask(1); } // 检查布尔值列表是否为空 if (!sValue.isEmpty()) { // 调用 S7control.getinstance().WriteBit 方法将布尔值列表写入地址列表 S7control.getinstance().WriteBit(niuanaddressList3, sValue); System.out.println("Values " + sValue + " written to PLC at address " + niuanaddressList3); } } } catch (Exception e) { System.err.println("An error occurred while writing bit to PLC: " + e.getMessage()); } // // 调用 S7control.getinstance().WriteBit 方法将布尔值列表写入地址列表 // S7control.getinstance().WriteBit(niuanaddressList3, sValue); // System.out.println( // "Values " + sValue + " written to PLC at address " + niuanaddressList3); // } // } // } catch (Exception e) { // System.err.println("An error occurred while writing bit to PLC: " + e.getMessage()); // } webserver.clearMessages(); } } springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -17,24 +17,25 @@ // System.out.println("启动完成"); //new PlcHold().start(); // new PlcHold().start(); new Plchome().start(); new Plcalarm().start(); // new Plcalarm().start(); new Plcsign().start(); // new Plcsign().start(); // new Plcstate().start(); // new PlcPositioning1().start(); new Plcstate().start(); new PlcPositioning1().start(); // new PlcParameter2().start(); new PlcParameter2().start(); // new PLCAutomaticParameterSetting().start(); new PLCAutomaticParameterSetting().start(); new PlcManualonePosition().start(); new PlcManualonePosition2().start(); new PlcServoManualone().start(); new PLCManualJog().start(); // new PlcManualonePosition().start(); // new PlcManualonePosition2().start(); // new PlcServoManualone().start(); // new PLCManualJog().start(); // new Plclog().start(); } } springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java
@@ -1,41 +1,46 @@ package com.example.springboot.entity; import java.util.Comparator; //客户玻璃信息表 public class north_glass_buffer1 { private Integer id; //自增id private String ordernumber;//订单id private String listnumber;//集合id private String boxnumber;//箱子id private String barcode;//玻璃id private double glasslength;//玻璃宽 private double glassheight;//玻璃高 private double glasslengthmm;//玻璃宽mm private double glassheightmm;//玻璃高mm private Integer id; // 自增id private String ordernumber;// 订单id private String listnumber;// 集合id private String boxnumber;// 箱子id private String barcode;// 玻璃id private double glasslength;// 玻璃宽 private double glassheight;// 玻璃高 private double glasslengthmm;// 玻璃宽mm private double glassheightmm;// 玻璃高mm private String glassoutside;// private String glassinside;// private String glassbetween;// private String itemtype;// private String slotnumber;//格子 private String slotnumber;// 格子 private String datemodified;// private String datecreated;// private String FrameBarcode;//铝框id private String FrameBarcode;// 铝框id private StorageCage storageCage; public StorageCage storageCage; public void setstorageCage(StorageCage storageCage) { this.storageCage = storageCage; } public StorageCage getstorageCage() { return storageCage; } private Out_slice out_slice; public void setOut_slice(Out_slice out_slice) { this.out_slice = out_slice; } public Out_slice getOut_slice() { return out_slice; } @@ -51,15 +56,19 @@ public Integer getId() { return id; } public String getordernumber() { return ordernumber; } public void setordernumber(String ordernumber) { this.ordernumber = ordernumber; } public String getlistnumber() { return listnumber; } public void setlistnumber(String listnumber) { this.listnumber = listnumber; } @@ -67,22 +76,23 @@ public String getboxnumber() { return boxnumber; } public void setboxnumber(String boxnumber) { this.boxnumber = boxnumber; } public String getbarcode() { return barcode; } public void setbarcode(String barcode) { this.barcode = barcode; } public Double getglasslength() { return glasslength; } public void setglasslength(Double glasslength) { this.glasslength = glasslength; } @@ -90,6 +100,7 @@ public Double getglassheight() { return glassheight; } public void setglassheight(Double glassheight) { this.glassheight = glassheight; } @@ -97,6 +108,7 @@ public Double getglasslengthmm() { return glasslengthmm; } public void setglasslengthmm(Double glasslengthmm) { this.glasslengthmm = glasslengthmm; } @@ -104,6 +116,7 @@ public Double getglassheightmm() { return glassheightmm; } public void setglassheightmm(Double glassheightmm) { this.glassheightmm = glassheightmm; } @@ -111,33 +124,41 @@ public String getitemtype() { return itemtype; } public void setitemtype(String itemtype) { this.itemtype = itemtype; } public String getslotnumber() { return slotnumber; } public void setslotnumber(String slotnumber) { this.slotnumber = slotnumber; } public String getdatemodified() { return datemodified; } public void setdatemodified(String datemodified) { this.datemodified = datemodified; } public String getdatecreated() { return datecreated; } public void setdatecreated(String datecreated) { this.datecreated = datecreated; } public String getFrameBarcode() { return FrameBarcode; } public void setFrameBarcode(String FrameBarcode) { this.FrameBarcode = FrameBarcode; } } springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -16,7 +16,7 @@ @Select("select COUNT(if(a.state1=0,cell,0))as cell,ROUND(id/2)as id from (select *,max(state)as state1 from storage_cage a GROUP BY cage,cell)as a where (a.cage=#{cage1}-1 or a.cage=#{cage1}+1)and if(a.cage<6,a.cage>0 and a.cage<6,a.cage>5) and disabled=0 GROUP BY cage ORDER BY cell desc LIMIT 1") int selectCage(int cage1); // 获取订单号排序的空订单笼子 @Select("select a.cage,FrameBarcode,COUNT(if(a.order_id=#{orderids},a.order_id,null))as orderid,b.shu,c.shu2,a.cell,min(a.state)as state1,disabled,FrameBarcode from storage_cage a left join (select COUNT(*)shu,cage from storage_cage where order_id=#{orderids} GROUP BY cage)as b on a.cage=b.cage left join(select cage ,COUNT(glass_id)as shu2 from storage_cage GROUP BY cage)c on a.cage=c.cage where (order_id=#{orderids} or ''='') GROUP BY cage,cell HAVING state1=0 ORDER BY FrameBarcode=#{Fbarcode} desc,shu desc,shu2,cage asc; ") @Select("select a.cage,FrameBarcode,COUNT(if(a.order_id=#{orderids},a.order_id,null))as orderid,b.shu,c.shu2,a.cell,min(a.state)as state1,disabled,FrameBarcode from storage_cage a left join (select COUNT(*)shu,cage from storage_cage where order_id=#{orderids} GROUP BY cage)as b on a.cage=b.cage left join(select cage ,COUNT(glass_id)as shu2 from storage_cage GROUP BY cage)c on a.cage=c.cage where (order_id=#{orderids} or ''='') GROUP BY cage,cell HAVING state1=0 ORDER BY (FrameBarcode=#{Fbarcode} or ''='') desc,shu desc,shu2,cage asc; ") List<StorageCage> selectAll(String orderids,String Fbarcode); // 获取判断该格子是否需要把外片推入内片位置 @@ -75,8 +75,7 @@ void UpdataAddCage(String orderid, String glassid, double width, int cage, int cell, int id, int state); @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{glass.ordernumber},glasswidth=#{glass.glasslengthmm},glassheight=#{glass.glassheightmm},glasswidthmm=#{glass.glasslength},glassheightmm=#{glass.glassheight},listid=#{glass.listnumber},boxid=#{glass.boxnumber},FrameBarcode=#{glass.FrameBarcode} where id=#{id};") void UpdataAddCage2(String orderid, String glassid, north_glass_buffer1 glass, int cage, int cell, int id, int state); void UpdataAddCage2(String orderid, String glassid, north_glass_buffer1 glass, int cage, int cell, int id,int state); // 修改笼子信息(多片进片) @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where cage=#{cage} and cell=#{cell} and tier=#{tier};") @@ -95,7 +94,7 @@ void UpdataOutCage1(double width, int cage, int cell); // 调拨更换笼子信息 @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=#{tier})as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=2,a.glasswidth=b.glasswidth,a.glassheight=b.glassheight,a.glasswidthmm=b.glasswidthmm,a.glassheightmm=b.glassheightmm,a.listid=b.listid,a.boxid=b.boxid where a.id=#{id1}") @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=#{tier})as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=1,a.glasswidth=b.glasswidth,a.glassheight=b.glassheight,a.glasswidthmm=b.glasswidthmm,a.glassheightmm=b.glassheightmm,a.listid=b.listid,a.boxid=b.boxid where a.id=#{id1}") void UpdateDBCage(int id1, int cage, int cell, int tier); // @Insert("insert into user(name, date, address, user_no) values (#{name}, springboot-vue3/src/main/java/com/example/springboot/service/North_Glass_Buffer1Service.java
@@ -1,13 +1,17 @@ package com.example.springboot.service; import java.sql.SQLException; import java.util.Collection; import java.util.Comparator; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.example.springboot.entity.StorageCage; import com.example.springboot.entity.north_glass_buffer1; import com.example.springboot.mapper.HomeMapper; import java.util.Collections; @Service public class North_Glass_Buffer1Service { @@ -17,6 +21,33 @@ @Autowired private JdbcConnections jdbcConnections; class north_glass_buffer1Comparator implements Comparator<north_glass_buffer1> { @Override public int compare(north_glass_buffer1 n1, north_glass_buffer1 n2) {//对查询到的铝框对应的玻璃数据进行排序,将离出片位置近的,靠近笼子出片侧的玻璃排在前面 if (n1.getstorageCage() != null) { if (n2.getstorageCage() != null) { int cageComparison = n2.getstorageCage().getCage().compareTo(n1.getstorageCage().getCage()); if (cageComparison != 0) { return cageComparison; } else { int cellComparison = n2.getstorageCage().getCell().compareTo(n1.getstorageCage().getCell()); if (cellComparison != 0) { return cellComparison; } else { return n2.getstorageCage().getTier().compareTo(n1.getstorageCage().getTier()); } } } else { return -1; } } else { return 1; } } } // 获取玻璃是否在笼子,是否在出片队列 public List<north_glass_buffer1> SelectAluminumFrameInfoById(String FrameBarcode) throws SQLException { List<north_glass_buffer1> listAluminumFrame = jdbcConnections @@ -25,6 +56,8 @@ north_glass_buffer1.setstorageCage(homeMapper.SelectStorageGlassById(north_glass_buffer1.getbarcode())); north_glass_buffer1.setOut_slice(homeMapper.SelectQueueByglassid(north_glass_buffer1.getbarcode())); } // 对嵌套类的其中一列进行排序 Collections.sort(listAluminumFrame, new north_glass_buffer1Comparator()); return listAluminumFrame; } springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
@@ -96,7 +96,7 @@ spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度 spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString(), prctier);// 新增任务 S7control.getinstance().WriteWord(adddresslist, datas); System.out.println("出片任务|" + datas); System.out.println("进片任务|" + datas); } else { // 数据库修改笼子表新增一条玻璃 @@ -105,7 +105,7 @@ spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度 spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString(), prctier);// 新增任务 S7control.getinstance().WriteWord(adddresslist, datas); System.out.println("出片任务|" + datas); System.out.println("进片任务|" + datas); // S7control.getinstance().WriteByte("DB105.16",glassid); }