| | |
| | | "Unable to find whether the aluminum frame is flipped or not":"Unable to find whether the aluminum frame is flipped or not",
|
| | | "You do not have this permission":"You do not have this permission",
|
| | | "This glass is already in the Queue":"This glass is already in the Queue",
|
| | | "complete":"complete",
|
| | | "Complete":"Complete",
|
| | | "Not Allow":"Not Allow",
|
| | | "Completed":"Completed",
|
| | | "Waiting":"Waiting",
|
| | | "Deleted":"Deleted",
|
| | | "Glass State":"Glass State",
|
| | | "Absent":"Absent",
|
| | | "Approximately resettable time":"Approximately resettable time",
|
| | | "ServoManualone": {
|
| | | "A01 所在格子": "A01 Current Grid",
|
| | | "数量": "Quantity",
|
| | |
| | | "Deleted":"已删除",
|
| | | "Glass State":"玻璃状态",
|
| | | "Absent":"不存在",
|
| | | "Approximately resettable time":"可复位大概时间",
|
| | | "langparameter": {
|
| | | "conveyor Velocity(Auto FAST)": "D01-D06 皮带输送自动快速",
|
| | | "conveyor Velocity(Auto SLOW)": "D01-D06 皮带输送自动慢速",
|
| | |
| | | </el-dialog>
|
| | |
|
| | | <el-dialog :visible.sync="dialogFormVisible2" :title="$t('Alarm Information')">
|
| | | <el-table :data="this.alarm" border style="width: 100%;">
|
| | | <el-table :data="this.alarm" border style="width: 100%;font-size: 25px;">
|
| | | <el-table-column prop="id" :label="$t('id')"></el-table-column>
|
| | | <el-table-column prop="content" :label="$t('content')"></el-table-column>
|
| | | <el-table-column prop="timeons" :label="$t('timeon')"></el-table-column>
|
| | | <el-table-column prop="endTime" :label="$t('endTime')"></el-table-column>
|
| | | </el-table>
|
| | | </el-dialog>
|
| | |
|
| | |
| | | this.isAllowReordering == true ? $t('Not Allow') : $t('Allow')
|
| | | }}</el-button>
|
| | | <el-table :data="this.OutSlice" :height="700" :span-method="objectSpanMethod" border :cell-style="cellStyle"
|
| | | style="width: 100%;overflow: auto;">
|
| | | style="width: 100%;overflow: auto;font-size: 18px;">
|
| | | <el-table-column :min-width="100" prop="glassId" :label="$t('Barcode')"></el-table-column>
|
| | | <el-table-column prop="storageCage.orderId" :label="$t('Order No')"></el-table-column>
|
| | | <el-table-column prop="storageCage.listId" :label="$t('List No')"></el-table-column>
|
| | | <el-table-column prop="storageCage.boxId" :label="$t('Box No')"></el-table-column>
|
| | | <el-table-column prop="storageCage.glasswidthmm" :label="$t('Length')"></el-table-column>
|
| | | <el-table-column prop="storageCage.glassheightmm" :label="$t('Width')"></el-table-column>
|
| | | <el-table-column prop="state" :label="$t('Glass State')">
|
| | | <el-table-column :min-width="90" prop="state" :label="$t('Glass State')">
|
| | | <template slot-scope='scope'>
|
| | | {{ scope.row.state == 0 ? $t('Waiting') : scope.row.state == 1 ? $t('Outing') : scope.row.state == 2 ? $t('Completed') :scope.row.state == 3 ? $t('Absent') :$t('Deleted') }}
|
| | | </template>
|
| | |
| | | </el-table>
|
| | | </el-dialog>
|
| | |
|
| | | <el-dialog :visible.sync="dialogFormCountDown" :title="$t('Glass information corresponding to aluminum frame')" top="5vh">
|
| | | <el-dialog :visible.sync="dialogFormCountDown" :title="$t('Approximately resettable time')" top="5vh">
|
| | | <div style="font-size: 500px;text-align: center;">
|
| | | {{ this.CountDowns }}
|
| | | </div>
|
| | |
| | | OutingQueue: true,
|
| | | OrderInfo: true,
|
| | | CageDetails: true,
|
| | | CountDowns:0
|
| | | CountDowns:0,
|
| | | D01RequestState:false
|
| | | };
|
| | | },
|
| | | created() {
|
| | | this.load();
|
| | | |
| | | this.init();
|
| | | }
|
| | | ,
|
| | |
| | | this.dialogFormVisible2=true;
|
| | | }
|
| | | //复位倒计时
|
| | | if (obj.countdown[0]== true&&this.CountDowns==0) {
|
| | | if (obj.countdown[0] == true&&this.CountDowns==0) {
|
| | | this.CountDown();
|
| | | }
|
| | |
|
| | | //是否有进片请求
|
| | | this.D01RequestState=obj.D01RequestState[0];
|
| | | |
| | | //是否允许出片
|
| | | this.isAllowQueue = obj.isAllowQueue[0];
|
| | | //出片队列
|
| | |
| | | this.loadglassheight1 = 70;
|
| | | this.form5 = obj.form3[0];
|
| | | this.showform3();
|
| | | this.Sizerange(this.form5, 3);
|
| | | this.glassid1 = "";
|
| | | if(this.D01RequestState==true){
|
| | | this.Sizerange(this.form5, 3);
|
| | | }else{
|
| | | this.disabled1=true;
|
| | | }
|
| | | |
| | | |
| | | } else {
|
| | | if (this.glassid1 == "") {
|
| | | this.DeleteBarcodeGlass();
|
| | |
| | | } else {
|
| | | this.disabled = false;
|
| | | }
|
| | | console.log(position,this.isConfirm);
|
| | | if (position == 3 && this.isConfirm == true) {
|
| | | if (position == 3 && this.isConfirm == true&&this.D01RequestState==true) {
|
| | | this.InsertQueueGlass(1);
|
| | | }
|
| | | }
|
| | |
| | | },
|
| | | CountDown(){
|
| | | //50秒倒数计时
|
| | | let count = 50;
|
| | | let count = 45;
|
| | | let timer = setInterval(
|
| | | () => {
|
| | | if (count > 0) {
|
| | | this.countDown = count;
|
| | | this.CountDowns = count;
|
| | | count--;
|
| | | this.CountDowns=count;
|
| | | }
|
| | | else {
|
| | | clearInterval(timer);
|
| | | this.countDown = 0;
|
| | | this.CountDowns = 0;
|
| | | this.dialogFormCountDown=false;
|
| | | }
|
| | | },
|
| | | 1000
|
| | |
| | | while (this != null) { |
| | | try { |
| | | Thread.sleep(1000); |
| | | |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | } |
| | | // 获取出片队列信息 |
| | | List<Out_slice> listoutslice = outSliceServive.SelectProductionqueue(); |
| | | // List<Out_slice> listoutslice = homeMapper.SelectProductionqueue(); |
| | | // for (Out_slice out_slice : listoutslice) { |
| | | // out_slice.setstorageCage(homeMapper.SelectStorageGlassById(out_slice.getGlassId())); |
| | | // } |
| | | jsonObject.append("listoutslice", listoutslice); |
| | | // 获取当前出片队列状态 |
| | | jsonObject.append("isAllowQueue", Plchome.isAllowQueue); |
| | | |
| | | // 获取铝框idDB106.DBW64 |
| | | String frameno=spianService.queGlassid("DB103.270",14).toString(); |
| | | if(frameno!=Plchome.FrameNo&&frameno!=""){ |
| | | Plchome.FrameNo=frameno; |
| | | } |
| | | try { |
| | | north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo); |
| | | } catch (SQLException e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } |
| | | // String frameno=spianService.queGlassid("DB103.270",14).toString(); |
| | | // if(frameno!=Plchome.FrameNo&&frameno!=""){ |
| | | // Plchome.FrameNo=frameno; |
| | | // } |
| | | // try { |
| | | // north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo); |
| | | // } catch (SQLException e) { |
| | | // // TODO Auto-generated catch block |
| | | // e.printStackTrace(); |
| | | // } |
| | | // 是否需要人工确认上片玻璃 |
| | | jsonObject.append("isConfirm", isConfirm); |
| | | |
| | | //获取进片请求状态 |
| | | 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("104.9.6", 71); |
| | | jsonObject.append("countdown", countdown); |
| | | List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1); |
| | | for (Boolean countdowns : countdown) { |
| | | jsonObject.append("countdown", countdowns); |
| | | } |
| | | // jsonObject.append("countdown", true); |
| | | // 铝框线交互 |
| | | |
| | | // //铝框id请求字 |
| | |
| | | // |
| | | 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 Plcaction().start(); |
| | | new Plcstate().start(); |
| | | new PlcPositioning1().start(); |
| | | // new Plcaction().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(); |
| | | } |
| | | } |
| | |
| | | package com.example.springboot.mapper; |
| | | import org.apache.ibatis.annotations.*; |
| | | |
| | | import org.apache.ibatis.annotations.*; |
| | | |
| | | import com.example.springboot.entity.Glass; |
| | | import com.example.springboot.entity.StorageCage; |
| | |
| | | @Mapper |
| | | |
| | | public interface SpianMapper { |
| | | //判断相邻笼子是否有空格 |
| | | // 判断相邻笼子是否有空格 |
| | | @Select("select COUNT(if(a.state1=0,cell,null))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 state from storage_cage where cage=#{cage} and cell=#{cell} and tier=1;") |
| | | int selectcell(int cage,int cell); |
| | | //判断该笼子是否有合适宽度空格 |
| | | @Select("select cage,cell,tier,id,ROUND(id/2)as prcId,width from storage_cage where cage=#{cage1} and cell=#{cell} and state=0 and disabled=0 and width>=#{width} ORDER BY cell asc,tier asc LIMIT 1") |
| | | StorageCage selectCage1(int cage1,int cell,double width); |
| | | //判断笼子内玻璃数 |
| | | @Select("select COUNT(tier)as tier from storage_cage where cage=#{cage} and cell=#{cell} and state!=0;") |
| | | int selectsum(int cage,int cell); |
| | | //完成进片中的玻璃状态 |
| | | @Update("update storage_cage set state=#{state} where glass_id=#{glassid};") |
| | | void UpdateCageOver(String glassid,int state); |
| | | int selectCage(int cage1); |
| | | |
| | | |
| | | //获取玻璃信息 |
| | | @Select("select *,ordernumber ,glasslength_mm as glasslengthmm,glassheight_mm as glassheightmm,barcode,listnumber,boxnumber,glasslength,glassheight from north_glass_buffer1 where barcode=#{glassid}") |
| | | north_glass_buffer1 selectGlass(String glassid); |
| | | |
| | | //出片任务查询 |
| | | // @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 state from storage_cage where cage=#{cage} and cell=#{cell} and tier=1;") |
| | | int selectcell(int cage, int cell); |
| | | |
| | | // 判断该笼子是否有合适宽度空格 |
| | | @Select("select cage,cell,tier,id,ROUND(id/2)as prcId,width from storage_cage where cage=#{cage1} and cell=#{cell} and state=0 and disabled=0 and width>=#{width} ORDER BY cell asc,tier asc LIMIT 1") |
| | | StorageCage selectCage1(int cage1, int cell, double width); |
| | | |
| | | // 判断笼子内玻璃数 |
| | | @Select("select COUNT(tier)as tier from storage_cage where cage=#{cage} and cell=#{cell} and state!=0;") |
| | | int selectsum(int cage, int cell); |
| | | |
| | | // 完成进片中的玻璃状态 |
| | | @Update("update storage_cage set state=#{state} where glass_id=#{glassid} and state=3;") |
| | | void UpdateCageOver(String glassid, int state); |
| | | |
| | | @Update("update storage_cage set state=#{state} where glass_id=#{glassid} and state=2;") |
| | | void UpdateCageadd(String glassid, int state); |
| | | |
| | | // 获取玻璃信息 |
| | | @Select("select *,ordernumber ,glasslength_mm as glasslengthmm,glassheight_mm as glassheightmm,barcode,listnumber,boxnumber,glasslength,glassheight from north_glass_buffer1 where barcode=#{glassid}") |
| | | north_glass_buffer1 selectGlass(String glassid); |
| | | |
| | | // 出片任务查询 |
| | | @Select("select COUNT(order_id)order_id,cage,cell,glasswidth,tier,ROUND(id/2)as prcId,glass_id from storage_cage a where a.order_id=#{orderId} and disabled=0 and state=1 GROUP BY cage,cell ORDER BY cage desc,order_id desc,cell desc,glasswidth desc limit 1") |
| | | StorageCage selectOut(String orderId); |
| | | // @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id,glass_id from storage_cage as a where a.order_id=#{orderId} and state=1 order by cage desc,tier desc,cell desc LIMIT 1") |
| | | // StorageCage selectOut(String orderId); |
| | | //按玻璃ID出片任务查询 |
| | | StorageCage selectOut(String orderId); |
| | | |
| | | // @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id,glass_id |
| | | // from storage_cage as a where a.order_id=#{orderId} and state=1 order by cage |
| | | // desc,tier desc,cell desc LIMIT 1") |
| | | // StorageCage selectOut(String orderId); |
| | | // 按玻璃ID出片任务查询 |
| | | @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id from storage_cage as a where a.glass_id=#{glassid} and state=1 and disabled=0 order by cage desc,tier desc,cell desc LIMIT 1") |
| | | StorageCage selectOut2(String glassid); |
| | | StorageCage selectOut2(String glassid); |
| | | |
| | | //判断出片为1时,是否可直接出片 |
| | | @Select("select COUNT(state) from storage_cage where cage=#{cage} and cell=#{cell} and state=1") |
| | | int selectGlassState(int cage,int cell); |
| | | // 判断出片为1时,是否可直接出片 |
| | | @Select("select COUNT(state) from storage_cage where cage=#{cage} and cell=#{cell} and state!=0") |
| | | int selectGlassState(int cage, int cell); |
| | | |
| | | //判断该调拨的笼子 |
| | | @Select("select glass_id,cage,cell,max(state)as shu,ROUND(id/2)as prcid,id from storage_cage where width>=#{width} and cage>#{cage1} and cage<#{cage2} GROUP BY cage,cell HAVING shu=0 order by abs(#{cage} - cage),cell desc limit 1;") |
| | | StorageCage selectGlassCage(int cage,double width,int cage1,int cage2); |
| | | // 判断该调拨的笼子 |
| | | @Select("select glass_id,cage,cell,max(state)as shu,ROUND(id/2)as prcid,id from storage_cage where width>=#{width} and cage>#{cage1} and cage<#{cage2} GROUP BY cage,cell HAVING shu=0 order by abs(#{cage} - cage),cell desc limit 1;") |
| | | StorageCage selectGlassCage(int cage, double width, int cage1, int cage2); |
| | | |
| | | //删除笼子信息(出片) |
| | | // 删除笼子信息(出片) |
| | | @Update("update storage_cage as a set state=#{state},glass_id=null,order_id=null,glasswidth=0,a.glassheight=null,a.glasswidthmm=null,a.glassheightmm=null,a.listid=null,a.boxid=null where glass_id=#{glassid} and state=3;") |
| | | void UpdataGlassCage(String glassid,int state); |
| | | //改变玻璃状态为出片中 |
| | | @Update("update storage_cage as a set state=#{state} where glass_id=#{glassid};") |
| | | void UpdataGlassCageState(String glassid,int state); |
| | | void UpdataGlassCage(String glassid, int state); |
| | | |
| | | //修改笼子信息(进片) |
| | | // 改变玻璃状态为出片中 |
| | | @Update("update storage_cage as a set state=#{state} where glass_id=#{glassid};") |
| | | void UpdataGlassCageState(String glassid, int state); |
| | | |
| | | // 修改笼子信息(进片) |
| | | @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where id=#{id};") |
| | | void UpdataAddCage(String orderid,String glassid,double width,int cage,int cell,int id,int state); |
| | | 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} where id=#{id};") |
| | | 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};") |
| | | void UpdataAddqueCage(String orderid,String glassid,double width,int cage,int cell,int tier,int state); |
| | | //修改同笼子格子宽度 |
| | | @Update("update storage_cage set width=width-#{width} where cage=#{cage} and cell=#{cell};") |
| | | void UpdataAddCage1(double width,int cage,int cell); |
| | | //修改同笼子格子宽度 |
| | | 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} where state=#{oldstate};") |
| | | void UpdataAddCageState(int state,int oldstate); |
| | | //修改同笼子格子宽度(出片) |
| | | @Update("update storage_cage set width=width+#{width} where cage=#{cage} and cell=#{cell};") |
| | | void UpdataOutCage1(double width,int cage,int cell); |
| | | //调拨更换笼子信息 |
| | | // 修改笼子信息(多片进片) |
| | | @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where cage=#{cage} and cell=#{cell} and tier=#{tier};") |
| | | void UpdataAddqueCage(String orderid, String glassid, double width, int cage, int cell, int tier, int state); |
| | | |
| | | // 修改同笼子格子宽度 |
| | | @Update("update storage_cage set width=width-#{width} where cage=#{cage} and cell=#{cell};") |
| | | void UpdataAddCage1(double width, int cage, int cell); |
| | | // 修改同笼子格子宽度 |
| | | |
| | | @Update("update storage_cage set state=#{state} where state=#{oldstate};") |
| | | void UpdataAddCageState(int state, int oldstate); |
| | | |
| | | // 修改同笼子格子宽度(出片) |
| | | @Update("update storage_cage set width=width+#{width} where cage=#{cage} and cell=#{cell};") |
| | | 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=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}, #{date}, #{address}, #{userNo})") |
| | | void UpdateDBCage(int id1, int cage, int cell, int tier); |
| | | |
| | | // @Insert("insert into user(name, date, address, user_no) values (#{name}, |
| | | // #{date}, #{address}, #{userNo})") |
| | | // void insert (Spian spian); |
| | | //新增任务表 |
| | | // 新增任务表 |
| | | @Insert("INSERT INTO `canadames`.`storage_task`(`task_type`, `task_state`, `shelf_rack`, `load_rack`,start_time,glass_id,count) VALUES (#{tasktype},#{taskstate},#{shelfrack},#{loadrack},now(),#{glassid},#{count});") |
| | | void Inserttask(int tasktype,int taskstate,int shelfrack,int loadrack,String glassid,int count); |
| | | //修改任务表 |
| | | void Inserttask(int tasktype, int taskstate, int shelfrack, int loadrack, String glassid, int count); |
| | | |
| | | // 修改任务表 |
| | | @Update("update storage_task set task_state=#{state} where task_type=#{type} and task_state=0;") |
| | | void Updatetask(int state,int type); |
| | | //修改任务表 |
| | | void Updatetask(int state, int type); |
| | | |
| | | // 修改任务表 |
| | | @Update("update storage_task set task_state=1 where task_state=0 and glass_id=#{glassid};") |
| | | void UpdatetaskOut(String glassid); |
| | | //查询按订单出片 |
| | | |
| | | // 查询按订单出片 |
| | | @Select("select order_id state from order_out where state=0") |
| | | String SelectOrderout(); |
| | | //内外片调换 |
| | | String SelectOrderout(); |
| | | |
| | | // 内外片调换 |
| | | @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=1)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.cage=#{cage} and a.cell=#{cell} and a.tier=2") |
| | | void UpdateDBCage1(int cage,int cell); |
| | | //清除内片数据 |
| | | void UpdateDBCage1(int cage, int cell); |
| | | |
| | | // 清除内片数据 |
| | | @Update("update storage_cage a set glass_id='',order_id='',state=0,glasswidth=0,glassheight=0,glasswidthmm=0,glassheightmm=0,listid=null,boxid=null where a.cage=#{cage} and a.cell=#{cell} and a.tier=1;") |
| | | void UpdateDBCage2(int cage,int cell); |
| | | //判断是否有调拨完后出片的任务 |
| | | void UpdateDBCage2(int cage, int cell); |
| | | |
| | | // 判断是否有调拨完后出片的任务 |
| | | @Select("select COUNT(*)as id,glass_id as barcode from storage_task where (task_type=1 or task_type=2) and task_state=0;") |
| | | north_glass_buffer1 SelectDBOut(); |
| | | //根据笼子格子层数获取玻璃id |
| | | @Select("select glass_id from storage_cage where cage=#{cage} and cell=#{cell} and tier=2;") |
| | | String SelectGlassid(int cage,int cell); |
| | | //判断有几块玻璃还在出片中 |
| | | @Select("SELECT COUNT(*) FROM `storage_cage` where state=3;") |
| | | Integer Selectoutstate(); |
| | | //判断队列表是否有该玻璃 |
| | | @Select("select COUNT(*) from queue where glassid=#{glassid} and state=1;") |
| | | int Selectquecount(String glassid); |
| | | //更新进片队列 |
| | | @Update("update queue set glassid=#{glassid},orderid=#{orderid},listid=#{listid},boxid=#{boxid},state=#{state},glasswidthmm=#{glasswidthmm},glassheightmm=#{glassheightmm},glasswidth=#{glasswidth},glassheight=#{glassheight} where type=#{type};") |
| | | void Updatequeue(String glassid,String orderid,String listid,String boxid,int state,String glasswidth,String glassheight,String glasswidthmm,String glassheightmm,int type); |
| | | //完成进片队列任务 |
| | | @Update("update queue set state=#{state} where glassid=#{glassid};") |
| | | void overqueue(String glassid,int state); |
| | | //更换任务队列 |
| | | @Update("update queue set state=#{state} where glassid=#{glassid} and type=#{type};") |
| | | void overqueue2(String glassid,int state,int type); |
| | | //获取任务序列 |
| | | @Select("select glassid,orderid,width,type from queue where state=#{state}") |
| | | StorageCage SelectQueue(int state); |
| | | //获取序列表的玻璃宽 |
| | | @Select("select sum(width)+400 as width,orderid from queue where state=0 limit 1") |
| | | StorageCage SelectQueueWidth(); |
| | | //判断该笼子是否有合适完整空格 |
| | | @Select("select cage,cell,tier,id,ROUND(id/2)as prcId,width,max(state)state1 from storage_cage where cage=#{cage1} and cell=#{cell} and state=0 and width>=#{width} HAVING state1=0 ORDER BY cell asc,tier desc LIMIT 1") |
| | | StorageCage selectqueCage1(int cage1,int cell,double width); |
| | | //获取序列表的玻璃 |
| | | @Select("select glassid as barcode,orderid as ordernumber,width as glasslengthmm from queue where state=0 and type=#{type}") |
| | | north_glass_buffer1 SelectQueueGlass(int type); |
| | | //多片出库清除一整个空格 |
| | | @Update("update storage_cage set glass_id='',order_id='',glasswidth=0,width=2750,state=0 where cage=#{cage} and cell=#{cell}") |
| | | void UpdatequeOut(int cage,int cell); |
| | | //判断序列表里的玻璃是否是同一订单 |
| | | @Select("select COUNT(distinct orderid) from queue ") |
| | | int SelectQueOrder(); |
| | | //寻找可以多片出片的玻璃 |
| | | @Select("select cage,cell,ROUND(id/2)as prcId,width,count(glass_id)shu from storage_cage where order_id=#{orderid} and (cage!=#{cage} or cell!=#{cell}) GROUP BY cage,cell HAVING shu=1 ORDER BY cage desc,cell desc limit 1") |
| | | StorageCage SelectQueout(String orderid,int cage,int cell); |
| | | //获取进片队列id |
| | | @Select("select glassid from queue where type=1") |
| | | String Selectqueueid(); |
| | | //获取进片队列是否有待入库 |
| | | @Select("select state from queue where type=1") |
| | | int Selectqueuestate(); |
| | | //判断铝框出片表是否有玻璃需要出 |
| | | @Select("SELECT glassid FROM `out_slice` where state=0 order by sequence,id limit 1;") |
| | | String SelectOutSlice(); |
| | | //判断铝框出片表是否有玻璃正在出片中 |
| | | @Select("SELECT count(*) FROM `out_slice` where state=1;") |
| | | int SelectOutSliceshu(); |
| | | //更新出片队列的任务状态 |
| | | @Update("update out_slice set state=#{state} where glassid=#{glassid}") |
| | | void OverOutSlice(String glassid,int state); |
| | | //获取玻璃的铝框id |
| | | @Select("select barcode from out_slice where glassid=#{glassid};") |
| | | String SelectBarcode(String glassId); |
| | | //获取出片队列的铝框是否全部完成 |
| | | @Select("select MIN(state) from out_slice where barcode=#{barcode};") |
| | | int SelectOverState(String barcode); |
| | | //删除出片队列该铝框的id |
| | | @Delete("delete from out_slice where barcode=#{barcode};") |
| | | void DeleteQueue(String barcode); |
| | | //把该进片的玻璃更新到出片队列 |
| | | @Select("update out_slice set state=0 where glassId=#{glassId} and state=3") |
| | | void UpdateAddQueue(String glassId); |
| | | } |
| | | |
| | | |
| | | // 根据笼子格子层数获取玻璃id |
| | | @Select("select glass_id from storage_cage where cage=#{cage} and cell=#{cell} and tier=2;") |
| | | String SelectGlassid(int cage, int cell); |
| | | |
| | | // 判断有几块玻璃还在出片中 |
| | | @Select("SELECT COUNT(*) FROM `storage_cage` where state=3;") |
| | | Integer Selectoutstate(); |
| | | |
| | | // 判断队列表是否有该玻璃 |
| | | @Select("select COUNT(*) from queue where glassid=#{glassid} and state=1;") |
| | | int Selectquecount(String glassid); |
| | | |
| | | // 更新进片队列 |
| | | @Update("update queue set glassid=#{glassid},orderid=#{orderid},listid=#{listid},boxid=#{boxid},state=#{state},glasswidthmm=#{glasswidthmm},glassheightmm=#{glassheightmm},glasswidth=#{glasswidth},glassheight=#{glassheight} where type=#{type};") |
| | | void Updatequeue(String glassid, String orderid, String listid, String boxid, int state, String glasswidth, |
| | | String glassheight, String glasswidthmm, String glassheightmm, int type); |
| | | |
| | | // 完成进片队列任务 |
| | | @Update("update queue set state=#{state} where glassid=#{glassid};") |
| | | void overqueue(String glassid, int state); |
| | | |
| | | // 更换任务队列 |
| | | @Update("update queue set state=#{state} where glassid=#{glassid} and type=#{type};") |
| | | void overqueue2(String glassid, int state, int type); |
| | | |
| | | // 获取任务序列 |
| | | @Select("select glassid,orderid,width,type from queue where state=#{state}") |
| | | StorageCage SelectQueue(int state); |
| | | |
| | | // 获取序列表的玻璃宽 |
| | | @Select("select sum(width)+400 as width,orderid from queue where state=0 limit 1") |
| | | StorageCage SelectQueueWidth(); |
| | | |
| | | // 判断该笼子是否有合适完整空格 |
| | | @Select("select cage,cell,tier,id,ROUND(id/2)as prcId,width,max(state)state1 from storage_cage where cage=#{cage1} and cell=#{cell} and state=0 and width>=#{width} HAVING state1=0 ORDER BY cell asc,tier desc LIMIT 1") |
| | | StorageCage selectqueCage1(int cage1, int cell, double width); |
| | | |
| | | // 获取序列表的玻璃 |
| | | @Select("select glassid as barcode,orderid as ordernumber,width as glasslengthmm from queue where state=0 and type=#{type}") |
| | | north_glass_buffer1 SelectQueueGlass(int type); |
| | | |
| | | // 多片出库清除一整个空格 |
| | | @Update("update storage_cage set glass_id='',order_id='',glasswidth=0,width=2750,state=0 where cage=#{cage} and cell=#{cell}") |
| | | void UpdatequeOut(int cage, int cell); |
| | | |
| | | // 判断序列表里的玻璃是否是同一订单 |
| | | @Select("select COUNT(distinct orderid) from queue ") |
| | | int SelectQueOrder(); |
| | | |
| | | // 寻找可以多片出片的玻璃 |
| | | @Select("select cage,cell,ROUND(id/2)as prcId,width,count(glass_id)shu from storage_cage where order_id=#{orderid} and (cage!=#{cage} or cell!=#{cell}) GROUP BY cage,cell HAVING shu=1 ORDER BY cage desc,cell desc limit 1") |
| | | StorageCage SelectQueout(String orderid, int cage, int cell); |
| | | |
| | | // 获取进片队列id |
| | | @Select("select glassid from queue where type=1") |
| | | String Selectqueueid(); |
| | | |
| | | // 获取进片队列是否有待入库 |
| | | @Select("select state from queue where type=1") |
| | | int Selectqueuestate(); |
| | | |
| | | // 判断铝框出片表是否有玻璃需要出 |
| | | @Select("SELECT glassid FROM `out_slice` where state=0 order by sequence,id limit 1;") |
| | | String SelectOutSlice(); |
| | | |
| | | // 判断铝框出片表是否有玻璃正在出片中 |
| | | @Select("SELECT count(*) FROM `out_slice` where state=1;") |
| | | int SelectOutSliceshu(); |
| | | |
| | | // 更新出片队列的任务状态 |
| | | @Update("update out_slice set state=#{state} where glassid=#{glassid}") |
| | | void OverOutSlice(String glassid, int state); |
| | | |
| | | // 获取玻璃的铝框id |
| | | @Select("select barcode from out_slice where glassid=#{glassid};") |
| | | String SelectBarcode(String glassId); |
| | | |
| | | // 获取出片队列的铝框是否全部完成 |
| | | @Select("select MIN(state) from out_slice where barcode=#{barcode};") |
| | | int SelectOverState(String barcode); |
| | | |
| | | // 删除出片队列该铝框的id |
| | | @Delete("delete from out_slice where barcode=#{barcode};") |
| | | void DeleteQueue(String barcode); |
| | | |
| | | // 把该进片的玻璃更新到出片队列 |
| | | @Select("update out_slice set state=0 where glassId=#{glassId} and state=3") |
| | | void UpdateAddQueue(String glassId); |
| | | } |
| | |
| | | package com.example.springboot.service; |
| | | |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | |
| | | List<String> adddresslist = new ArrayList<>(); |
| | | adddresslist.add("DB105.0");// 进片车起始位置 |
| | | adddresslist.add("DB105.2");// 进片车目标位置 |
| | | adddresslist.add("DB105.4");// 进片玻璃宽 |
| | | adddresslist.add("DB105.8");//进片笼内已有玻璃数 |
| | | adddresslist.add("DB105.4");// 进片玻璃宽 |
| | | adddresslist.add("DB105.8");// 进片笼内已有玻璃数 |
| | | adddresslist.add("DB105.16");// 进片车启动 1为启动 |
| | | |
| | | |
| | | List<Short> datas = new ArrayList<>(); |
| | | |
| | | // String orderid="A001"; |
| | |
| | | } |
| | | // 判断选中笼子是否有合适宽度空格 |
| | | // 有合适空格时进片 |
| | | if (cages1 != null && cages >= 1&&storageCage2.getDisabled()==0) { |
| | | if (cages1 != null && cages >= 1 && storageCage2.getDisabled() == 0) { |
| | | ids = cages1.getId();// 数据库ID |
| | | tiers = cages1.getTier();// 内外片 |
| | | cells = cages1.getCell();// 格子号 |
| | |
| | | widths = glasslist.getglasslengthmm(); |
| | | |
| | | // 执行进片 |
| | | datas.add((short) 1000);//起始位置 |
| | | datas.add((short) prcid);//目标位置 |
| | | datas.add((short) widths);//进片玻璃宽 |
| | | datas.add((short) prctier); //玻璃数 |
| | | datas.add((short) 1);//任务启动 |
| | | //获取该格子内是否有玻璃 |
| | | int cellint=spianMapper.selectcell(cage1,cells); |
| | | if(cellint==1){ |
| | | //将外片玻璃的数据更新到内片 |
| | | spianMapper.UpdateDBCage(ids, cage1, cells,1); |
| | | //将新入的玻璃存入外片 |
| | | //spianMapper.UpdataAddCage(orderids, glassid, widths, cage1, cells, ids-1, 2); |
| | | spianMapper.UpdataAddCage2(orderids, glassid, glasslist, cage1,cells, ids-1, 2); |
| | | datas.add((short) 1000);// 起始位置 |
| | | datas.add((short) prcid);// 目标位置 |
| | | datas.add((short) widths);// 进片玻璃宽 |
| | | datas.add((short) prctier); // 玻璃数 |
| | | datas.add((short) 1);// 任务启动 |
| | | // 获取该格子内是否有玻璃 |
| | | int cellint = spianMapper.selectcell(cage1, cells); |
| | | if (cellint == 1) { |
| | | // 将外片玻璃的数据更新到内片 |
| | | spianMapper.UpdateDBCage(ids, cage1, cells, 1); |
| | | // 将新入的玻璃存入外片 |
| | | // spianMapper.UpdataAddCage(orderids, glassid, widths, cage1, cells, ids-1, 2); |
| | | spianMapper.UpdataAddCage2(orderids, glassid, glasslist, cage1, cells, ids - 1, 2); |
| | | spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度 |
| | | spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString(),prctier);// 新增任务 |
| | | spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString(), prctier);// 新增任务 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | System.out.println("汇报时任务|" + datas); |
| | | |
| | | }else{ |
| | | // 数据库修改笼子表新增一条玻璃 |
| | | //spianMapper.UpdataAddCage(orderids, glassid, widths, cage1, cells, ids, 2); |
| | | spianMapper.UpdataAddCage2(orderids, glassid, glasslist, cage1,cells, ids, 2); |
| | | 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 { |
| | | // 数据库修改笼子表新增一条玻璃 |
| | | // spianMapper.UpdataAddCage(orderids, glassid, widths, cage1, cells, ids, 2); |
| | | spianMapper.UpdataAddCage2(orderids, glassid, glasslist, cage1, cells, ids, 2); |
| | | spianMapper.UpdataAddCage1(widths, cage1, cells);// 减少格子宽度 |
| | | spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString(), prctier);// 新增任务 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | System.out.println("出片任务|" + datas); |
| | | |
| | | // S7control.getinstance().WriteByte("DB105.16",glassid); |
| | | // S7control.getinstance().WriteByte("DB105.16",glassid); |
| | | } |
| | | outmesid(glassid,"DB105.20"); |
| | | outmesid(glassid, "DB105.20"); |
| | | return (200); |
| | | |
| | | } |
| | |
| | | |
| | | } |
| | | |
| | | |
| | | public Short selectout2(String glassid) { |
| | | // 定义PRC数据传送数组 |
| | | List<String> adddresslist = new ArrayList<>(); |
| | | char[] a=glassid.toCharArray(); |
| | | char[] a = glassid.toCharArray(); |
| | | |
| | | adddresslist.add("DB105.10");// 出片车起始位置 |
| | | adddresslist.add("DB105.12");// 出片车目标位置 |
| | |
| | | datas.add((short) 1000); |
| | | datas.add((short) state); |
| | | datas.add((short) 1); |
| | | spianMapper.OverOutSlice(glassid, 1);//更新出片队列任务状态为进行中 |
| | | spianMapper.OverOutSlice(glassid, 1);// 更新出片队列任务状态为进行中 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.UpdataGlassCageState(glassid,3);//更改笼子表的玻璃状态 |
| | | |
| | | spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid,state);// 新增任务 |
| | | spianMapper.UpdataGlassCageState(glassid, 3);// 更改笼子表的玻璃状态 |
| | | |
| | | spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid, state);// 新增任务 |
| | | // int state = spianMapper.selectGlassState(cage, cell);//获取格子数量 |
| | | if (state == 2) { |
| | | spianMapper.UpdateDBCage1(cage, cell);// 将内片数据更新到外片里 |
| | | spianMapper.UpdateDBCage2(cage, cell);// 清除内片数据 |
| | | } |
| | | |
| | | System.out.println("出片任务|" + datas); |
| | | S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务 |
| | | outmesid(glassid,"DB105.34");// 派发出片ID |
| | | outmesid(glassid, "DB105.34");// 派发出片ID |
| | | |
| | | return (200);// 结束 |
| | | } else { |
| | |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | spianMapper.OverOutSlice(glassid, 1);//更新出片队列任务状态为进行中 |
| | | spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid,1);// 新增任务 |
| | | spianMapper.OverOutSlice(glassid, 1);// 更新出片队列任务状态为进行中 |
| | | spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid, 1);// 新增任务 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.UpdataGlassCageState(glassid,3);//更改笼子表的玻璃状态 |
| | | spianMapper.OverOutSlice(glassid,2);//完成出片队列任务 |
| | | outmesid(glassid,"DB105.34");// 派发出片ID |
| | | spianMapper.UpdataGlassCageState(glassid, 3);// 更改笼子表的玻璃状态 |
| | | spianMapper.OverOutSlice(glassid, 2);// 完成出片队列任务 |
| | | System.out.println("出片任务|" + datas); |
| | | outmesid(glassid, "DB105.34");// 派发出片ID |
| | | S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务 |
| | | |
| | | return (200);// 结束 |
| | |
| | | datas.add((short) 1); |
| | | // 更换玻璃的笼子 |
| | | String glassids = spianMapper.SelectGlassid(cage, cell); // 获取被调拨的玻璃id |
| | | spianMapper.UpdateDBCage(ids, cage, cell,2);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdateDBCage(ids, cage, cell, 2);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 减少新格子宽度 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.UpdataGlassCageState(glassids,3);//更改笼子表的玻璃状态 |
| | | spianMapper.Inserttask(2, 0, cageout.getId(), ids, glassid,2);// 新增调度任务 |
| | | //spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid);// 新增出片任务 |
| | | //spianMapper.UpdataGlassCageState(glassids, 3);// 更改笼子表的玻璃状态 |
| | | spianMapper.Inserttask(2, 0, cageout.getId(), ids, glassid, 2);// 新增调度任务 |
| | | // spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid);// 新增出片任务 |
| | | // 传输mes数据,坐标,数据 |
| | | System.out.println("出片任务|" + datas); |
| | | S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务 |
| | | |
| | | outmesid(glassids,"DB105.34");// 派发调拨玻璃ID |
| | | outmesid(glassids, "DB105.34");// 派发调拨玻璃ID |
| | | return (200); // 结束 |
| | | |
| | | } else {// 笼子号大于5时 |
| | |
| | | datas.add((short) 2); |
| | | datas.add((short) 1); |
| | | String glassids = spianMapper.SelectGlassid(cage, cell); // 获取被调拨的玻璃id |
| | | spianMapper.Inserttask(2, 0, cageout.getId() + 1, ids, glassid,2);// 新增调度任务 |
| | | //spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid);// 新增出片任务 |
| | | spianMapper.UpdateDBCage(ids, cage, cell,2);// 将原格子数据更新到新格子里 |
| | | spianMapper.Inserttask(2, 0, cageout.getId() + 1, ids, glassid, 2);// 新增调度任务 |
| | | // spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid);// 新增出片任务 |
| | | spianMapper.UpdateDBCage(ids, cage, cell, 2);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 减少新格子宽度 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 增加原格子宽度 |
| | | spianMapper.UpdataGlassCageState(glassids,3);//更改笼子表的玻璃状态 |
| | | //spianMapper.UpdataGlassCageState(glassids, 3);// 更改笼子表的玻璃状态 |
| | | // 传输mes数据,坐标,数据 |
| | | System.out.println("出片任务|" + datas); |
| | | S7control.getinstance().WriteWord(adddresslist, datas);// 派发出片车任务 |
| | | |
| | | outmesid(glassids,"DB105.34");// 派发调拨玻璃ID |
| | | outmesid(glassids, "DB105.34");// 派发调拨玻璃ID |
| | | return (200);// 结束 |
| | | |
| | | } |
| | |
| | | } |
| | | |
| | | } |
| | | //派发任务玻璃id |
| | | public void outmesid(String glassid,String address) { |
| | | //System.out.println("outmesid:" + glassid); |
| | | |
| | | // 派发任务玻璃id |
| | | public void outmesid(String glassid, String address) { |
| | | // System.out.println("outmesid:" + glassid); |
| | | List<Byte> glassidlist = new ArrayList(); |
| | | char ds[]=glassid.toCharArray(); |
| | | char ds[] = glassid.toCharArray(); |
| | | for (char iditem : ds) { |
| | | glassidlist.add((byte)iditem); |
| | | glassidlist.add((byte) iditem); |
| | | } |
| | | byte[] bytes = Bytes.toArray(glassidlist); |
| | | System.out.println("outmesidbytes:" + bytes.length); |
| | | S7control.getinstance().WriteByte(address, bytes);// 派发出片id |
| | | } |
| | | //获取地址内的玻璃id转字符串 |
| | | public StringBuilder queGlassid(String address,int count) { |
| | | |
| | | // 获取地址内的玻璃id转字符串 |
| | | public StringBuilder queGlassid(String address, int count) { |
| | | StringBuilder writedstrIdOut = new StringBuilder(); |
| | | byte[] writedglassidbytesOut = S7control.getinstance().ReadByte(address, count); |
| | | if (writedglassidbytesOut != null) { |
| | | // 获取玻璃id |
| | | for (byte iditem : writedglassidbytesOut) { |
| | | writedstrIdOut.append((char) iditem); |
| | | if (writedglassidbytesOut != null) { |
| | | // 获取玻璃id |
| | | for (byte iditem : writedglassidbytesOut) { |
| | | writedstrIdOut.append((char) iditem); |
| | | } |
| | | } |
| | | } |
| | | return writedstrIdOut; |
| | | } |
| | | //char数组转化成bit数组 |
| | | public static byte[] toBytes(char[] chars) { |
| | | |
| | | // char数组转化成bit数组 |
| | | public static byte[] toBytes(char[] chars) { |
| | | String s = new String(chars); |
| | | return s.getBytes(StandardCharsets.UTF_8); |
| | | } |
| | | //bit数组转化成char数组 |
| | | |
| | | // bit数组转化成char数组 |
| | | public static char[] toChars(byte[] bytes) { |
| | | String s = new String(bytes, StandardCharsets.UTF_8); |
| | | return s.toCharArray(); |
| | | } |
| | | //判断集合里是否为1 |
| | | public boolean listbool(String address) { |
| | | List<Short> list = S7control.getinstance().ReadWord(address, 1);//返回为ture时为1 |
| | | boolean listbool = list.contains((short) 1); |
| | | |
| | | // 判断集合里是否为1 |
| | | public boolean listbool(String address) { |
| | | List<Short> list = S7control.getinstance().ReadWord(address, 1);// 返回为ture时为1 |
| | | boolean listbool = list.contains((short) 1); |
| | | return listbool; |
| | | } |
| | | //根据玻璃id完成在进行中的任务 |
| | | public void overtask(String glassid){ |
| | | |
| | | // 根据玻璃id完成在进行中的任务 |
| | | public void overtask(String glassid) { |
| | | spianMapper.UpdateCageOver(glassid, 0);// 更改笼子表出片状态 |
| | | spianMapper.UpdatetaskOut(glassid); // 完成上一次出片或者进片任务 |
| | | spianMapper.OverOutSlice(glassid, 2);// 完成出片队列任务 |
| | | spianMapper.UpdataGlassCage(glassid,0);// 清除出片格子玻璃信息 |
| | | String barcode=spianMapper.SelectBarcode(glassid);//获取该玻璃的铝框id |
| | | spianMapper.UpdateAddQueue(glassid);//把进片的玻璃更新到出片队列中 |
| | | int barcodeState=spianMapper.SelectOverState(barcode);//获取该铝框的状态 |
| | | if(barcodeState==2){//当该铝框所有的玻璃都是完成状态时删除在出片队列的数据 |
| | | spianMapper.DeleteQueue(barcode); |
| | | spianMapper.UpdataGlassCage(glassid, 0);// 清除出片格子玻璃信息 |
| | | spianMapper.UpdateCageadd(glassid,1); |
| | | String barcode = spianMapper.SelectBarcode(glassid);// 获取该玻璃的铝框id |
| | | spianMapper.UpdateAddQueue(glassid);// 把进片的玻璃更新到出片队列中 |
| | | if (barcode != null) { |
| | | int barcodeState = spianMapper.SelectOverState(barcode);// 获取该铝框的状态 |
| | | if (barcodeState == 2) {// 当该铝框所有的玻璃都是完成状态时删除在出片队列的数据 |
| | | spianMapper.DeleteQueue(barcode); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |