ZengTao
2023-12-21 7070f965955247622396886bf6ad70519cc3818c
Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

# Conflicts:
# springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
6个文件已修改
115 ■■■■ 已修改文件
CanadaMes-ui/src/views/home/index.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/home/index.vue
@@ -264,9 +264,6 @@
                            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                @click="endtask(1, scope.row.glassId, scope.row.cell)">{{ $t('Terminate Task')
                                }}</el-button>
                            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                @click="endtask(3, scope.row.glassId, scope.row.cell)">{{ $t('Complete Task')
                                }}</el-button>
                        </template>
                    </el-table-column>
                </el-table>
@@ -287,9 +284,6 @@
                        <template slot-scope='scope'>
                            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                @click="endtask(0, scope.row.glassId, scope.row.cell)">{{ $t('Terminate Task')
                                }}</el-button>
                            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                @click="endtask(2, scope.row.glassId, scope.row.cell)">{{ $t('Complete Task')
                                }}</el-button>
                        </template>
                    </el-table-column>
springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
@@ -39,7 +39,42 @@
      // // TODO Auto-generated catch block
      // e.printStackTrace();
      // }
      spianService.selectAll("X12345610402GV");
       // 出片任务////////////////////////////////
      List<Short> outlist = S7control.getinstance().ReadWord("DB106.20", 1); // 出片车状态
      List<Short> outlist1 = S7control.getinstance().ReadWord("DB105.18", 1); // 出片任务是否启动
      // StringBuilder writedstrIdOut = new StringBuilder();
      // 获取已下发的出片id
      byte[] writedglassidbytesOut = S7control.getinstance().ReadByte("DB105.30", 14);
      String writedstrIdOut = new String(writedglassidbytesOut);
      boolean outstate = false;// 出片车空闲判断
      boolean outstate1 = false;// 出片车任务是否启动
      if (outlist != null && outlist1 != null) {
        outstate = outlist.contains((short) 0);// 出片车空闲判断 当出片车空闲时为true
        outstate1 = outlist1.contains((short) 1);// 出片车任务是否启动 当出片车任务启动时为true
        // 判断当前是否有未执行的任务
        int outnum = spianMapper.SelectOutSliceshu();
        // 当没有任务执行并且出片车空闲时
        if (outnum == 0 && outstate == true && Plchome.isAllowQueue == true) {
          // 判断铝框出片队列表是否有待出片的玻璃
          String outglassid = spianMapper.SelectOutSlice();
          if (outglassid != null) {
            spianService.selectout2(outglassid);
            outstate = false;
          }
        }
        if (outstate == true) {// 当出片车空闲时,且出片启动为1时,任务启动改为0
          if (outstate1 == true) {
            S7control.getinstance().WriteWord("DB105.18", (short) 0);// 出片任务启动改为0
          }
        }
      }
      /////////////进片任务
      List<Short> datas1List = S7control.getinstance().ReadWord("DB106.24", 1);// 获取prc进片请求数据
      List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", 1);// 获取进片车状态
      List<Short> datas1ListState2 = S7control.getinstance().ReadWord("DB105.16", 1);// 获取进片车任务是否启动
@@ -106,39 +141,7 @@
      }
      // 出片任务////////////////////////////////
      List<Short> outlist = S7control.getinstance().ReadWord("DB106.20", 1); // 出片车状态
      List<Short> outlist1 = S7control.getinstance().ReadWord("DB105.18", 1); // 出片任务是否启动
      // StringBuilder writedstrIdOut = new StringBuilder();
      // 获取已下发的出片id
      byte[] writedglassidbytesOut = S7control.getinstance().ReadByte("DB105.30", 14);
      String writedstrIdOut = new String(writedglassidbytesOut);
      boolean outstate = false;// 出片车空闲判断
      boolean outstate1 = false;// 出片车任务是否启动
      if (outlist != null && outlist1 != null) {
        outstate = outlist.contains((short) 0);// 出片车空闲判断 当出片车空闲时为true
        outstate1 = outlist1.contains((short) 1);// 出片车任务是否启动 当出片车任务启动时为true
        // 判断当前是否有未执行的任务
        int outnum = spianMapper.SelectOutSliceshu();
        // 当没有任务执行并且出片车空闲时
        if (outnum == 0 && outstate == true && Plchome.isAllowQueue == true) {
          // 判断铝框出片队列表是否有待出片的玻璃
          String outglassid = spianMapper.SelectOutSlice();
          if (outglassid != null) {
            spianService.selectout2(outglassid);
            outstate = false;
          }
        }
        if (outstate == true) {// 当出片车空闲时,且出片启动为1时,任务启动改为0
          if (outstate1 == true) {
            S7control.getinstance().WriteWord("DB105.18", (short) 0);// 出片任务启动改为0
          }
        }
      }
      // if (outstate == true) { // 出片车状态空闲时
      // Integer state = spianMapper.Selectoutstate();
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -221,6 +221,7 @@
        String position = jdbcConnections.SelectPositionByFrameBarcode(north_glass_buffer1.getFrameBarcode());
        if (position != null) {
          int sequence = homeMapper.SelectMaxSquence();
          homeMapper.AddOutSliceS(glassid, flip, north_glass_buffer1.getFrameBarcode(),
              north_glass_buffer1.getglasslengthmm().toString(), north_glass_buffer1.getglassheightmm().toString(),
              sequence, position, (short) 0, north_glass_buffer1.getordernumber(), north_glass_buffer1.getlistnumber(),
springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java
@@ -17,6 +17,7 @@
    private Integer disabled;//停用
    private String listId;//集合id
    private String boxId;//箱子id
    private String FrameBarcode;//铝框id;
    private north_glass_buffer1 north_glass_buffer1s;
@@ -169,5 +170,13 @@
    public void setBoxno(String boxId) {
        this.boxId = boxId;
    }
    public String getFrameBarcode() {
        return FrameBarcode;
    }
    public void setFrameBarcode(String FrameBarcode) {
        this.FrameBarcode = FrameBarcode;
    }
}
springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -2,9 +2,7 @@
import org.apache.ibatis.annotations.*;
import com.example.springboot.entity.Glass;
import com.example.springboot.entity.StorageCage;
import com.example.springboot.entity.StorageTask;
import com.example.springboot.entity.north_glass_buffer1;
import java.util.List;
@@ -17,21 +15,9 @@
    // 判断相邻笼子是否有空格
    @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*from storage_cage as a where a.state=0 and cage%2=0 ORDER BY
    // id LIMIT 1)union (select a.* from storage_cage a inner join (select
    // cage,if(shu2=1,shu3,shu5) as gezi from ( select cage, count(case when
    // state1=1 and state2=0 then cell else null end)as shu1, count(case when
    // state1=0 then cell else null end) as shu2, min(case when state1=1 and
    // state2=0 then cell else null end) as shu3, min(case when state1=0 then cell
    // else null end) as shu4, min(case when state1=0 or state2=0 then cell else
    // null end) as shu5 from (select *,max(state) as state1,min(state) as state2
    // from storage_cage group by cage,cell) as a where cage%2!=0 GROUP BY cage
    // HAVING shu2>1 or (shu2=1 and shu1>0) ) as sss limit 1)as b on a.cage=b.cage
    // and a.cell=b.gezi and a.state=0 order by tier limit 1) ORDER BY id LIMIT 1;")
    // 获取订单号排序的空订单笼子
    @Select("select a.cage,COUNT(if(a.order_id=#{orderids},a.order_id,null))as orderid,b.shu,c.shu2,a.cell,min(a.state)as state1,disabled 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 shu desc,shu2,cage asc; ")
    List<StorageCage> selectAll(String orderids);
    @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; ")
    List<StorageCage> selectAll(String orderids,String Fbarcode);
    // 获取判断该格子是否需要把外片推入内片位置
    @Select("select state from storage_cage where  cage=#{cage} and cell=#{cell} and tier=1;")
springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
@@ -34,6 +34,7 @@
        }
        double widths = glasslist.getglasslengthmm();
        String orderids = glasslist.getordernumber();
        String FrameBarcode=glasslist.getFrameBarcode();
        List<String> adddresslist = new ArrayList<>();
        adddresslist.add("DB105.0");// 进片车起始位置
@@ -46,7 +47,7 @@
        // String orderid="A001";
        // 获取订单相关度最高的笼子排序
        List<StorageCage> storageCage = spianMapper.selectAll(orderids.toString());
        List<StorageCage> storageCage = spianMapper.selectAll(orderids,FrameBarcode);
        if (storageCage == null) {
            return (400);
        }
@@ -55,6 +56,8 @@
            cage1 = storageCage2.getCage();
            // 判断该笼子号相邻最大的空格数
            int cages = spianMapper.selectCage(cage1);
            // 如果相邻笼子没有空格,或者有正在执行的出片任务时返回400
            if (cages == 0) {
                return (400);
            }
@@ -141,6 +144,8 @@
        int cages;
        int cells;
        double glasswidth = cageout.getGlassWidth();
        // 判断玻璃内外片
        if (tier == 2) {
            int state = spianMapper.selectGlassState(cage, cell);// 获取格子数量
@@ -189,7 +194,7 @@
            } else {
                // 玻璃需要调拨时,判断属于哪个半区的笼子
                if (cage < 6) {
                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6);
                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6,cell);
                    if (cagecell == null) {
                        return (300);
                    }
@@ -219,7 +224,7 @@
                    return (200); // 结束
                } else {// 笼子号大于5时
                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11);
                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11,cell);
                    if (cagecell == null) {
                        return (300);
                    }
@@ -314,5 +319,6 @@
                spianMapper.DeleteQueue(barcode);
            }
        }
    }
}