| | |
| | | e.printStackTrace(); |
| | | } |
| | | spianService = WebSocketServer.applicationContext.getBean(SpianService.class); |
| | | |
| | | jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class); |
| | | |
| | | //根据玻璃id获取订单号 |
| | | try { |
| | | Glass glass=jdbcConnections.selectGlass(112); |
| | | |
| | | //System.out.println(glass.getOrderId()); |
| | | } catch (SQLException e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | spianService.selectout("11"); |
| | | //判断进片请求 |
| | | List<Short> datas1List=S7control.getinstance().ReadWord("DB106.24", 1); |
| | | List<Short> datas1ListState=S7control.getinstance().ReadWord("DB106.8", 1); |
| | |
| | | // new PlcHold().start(); |
| | | new Plcaction().start(); |
| | | new PlcParameter().start(); |
| | | |
| | | new PlcHold().start(); |
| | | new Plchome().start(); |
| | | |
| | | new PlcParameter().start(); |
| | |
| | | List<StorageCage> selectAll(Short orderids); |
| | | |
| | | //判断该笼子是否有合适宽度空格 |
| | | @Select("select cage,cell,tier,id,ROUND(id/2)as prcId from storage_cage where cage=#{cage1} and state=0 and width>=#{width} ORDER BY cell,tier LIMIT 1") |
| | | @Select("select cage,cell,tier,id,ROUND(id/2)as prcId from storage_cage where cage=#{cage1} and state=0 and width>=#{width} ORDER BY cell asc,tier desc LIMIT 1") |
| | | StorageCage selectCage1(int cage1,double width); |
| | | //判断笼子内玻璃数 |
| | | @Select("select COUNT(tier)as tier from storage_cage where cage=#{cage} and cell=#{cell} and state=1;") |
| | |
| | | StorageCage selectGlassCage(int cage,double width,int cage1,int cage2); |
| | | |
| | | //删除笼子信息(出片) |
| | | @Update("update storage_cage set state=#{state},width=width+#{width},glass_id=#{glassid},order_id=#{orderid},glasswidth=0 where cage=#{cage} and cell=#{cell} and tier=#{tier};") |
| | | @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=0 where cage=#{cage} and cell=#{cell} and tier=#{tier};") |
| | | void UpdataGlassCage(String orderid,String glassid,double width,int cage,int cell,int tier,int state); |
| | | |
| | | //修改笼子信息(进片) |
| | | @Update("update storage_cage set state=#{state},width=width-#{width},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where id=#{id};") |
| | | @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where id=#{id};") |
| | | void UpdataAddCage(Short orderid,Short glassid,double width,int cage,int cell,int id,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 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=2)as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.glasswidth=b.glasswidth,a.width=a.width-b.glasswidth,a.state=1 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=2)as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.width=a.width-b.glasswidth,a.state=1 where a.id=#{id1}") |
| | | void UpdateDBCage(int id1,int cage,int cell); |
| | | // @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) VALUES (#{tasktype},#{taskstate},#{shelfrack},#{loadrack},now());") |
| | | void Inserttask(int tasktype,int taskstate,int shelfrack,int loadrack); |
| | | //修改任务表 |
| | | @Update("update storage_task set task_state=#{state} where task_type=#{type} and task_state=0;") |
| | | void Updatetask(int state,int type); |
| | | } |
| | |
| | | while (rs.next()) { |
| | | glass.setOrderId(rs.getShort("orderid")); |
| | | } |
| | | |
| | | conn.close(); |
| | | return glass; |
| | | } |
| | | /** |
| | |
| | | int prcid = cageout.getPrcId();// prcid |
| | | int prcid2; |
| | | int ids; |
| | | int cages; |
| | | int cells; |
| | | double glasswidth = cageout.getGlassWidth(); |
| | | // 判断玻璃内外片 |
| | | if (tier == 2) { |
| | | // 判断玻璃可直接出片时 |
| | | // 修改数据库笼子表(出片) |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0); |
| | | |
| | | spianMapper.Inserttask(1, 0,cageout.getId(),1000 );//新增任务 |
| | | |
| | | |
| | | |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);//清除格子玻璃信息 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | spianMapper.Updatetask(1, 1);//完成任务 |
| | | return Result.success(datas); |
| | | } else { |
| | | // 获取格子的玻璃数量 |
| | |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | spianMapper.Inserttask(1, 0,cageout.getId(),1000 );//新增任务 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);//清除格子玻璃信息 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | spianMapper.Updatetask(1, 1);//完成任务 |
| | | return Result.success("状态为0,直接出片"); |
| | | } else { |
| | | // 玻璃需要调拨时,判断属于哪个半区的笼子 |
| | |
| | | // 获取调拨位置进行调拨 |
| | | prcid2 = cagecell.getPrcId();// 调拨目标位PRCID |
| | | ids = cagecell.getId();// 调拨目标位ID |
| | | cages=cagecell.getCage();//调拨目标位笼子 |
| | | cells=cagecell.getCell();//调拨目标位格子 |
| | | spianMapper.Inserttask(2, 0,cageout.getId(),ids );//新增调度任务 |
| | | |
| | | |
| | | // 更换玻璃的笼子 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);//减少新格子宽度 |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除原格子数据 |
| | | |
| | | // 填入调拨数据 |
| | | datas.add((short) prcid);// 调拨外片起始位置 |
| | | datas.add((short) prcid2); |
| | |
| | | datas.add((short) 1); |
| | | // 传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | spianMapper.Updatetask(1, 2);//完成任务 |
| | | datas.clear(); // 清空整个列表 |
| | | // 判断调拨结束后再次出片,填入出片数据 |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | spianMapper.Inserttask(2, 0,cageout.getId(),1000 );//新增出片任务 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除原格子数据 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | // 修改数据库笼子表(出片) |
| | | |
| | | spianMapper.Updatetask(1, 1);//完成任务 |
| | | return Result.success(cagecell); // 调拨位置的参数内容 |
| | | |
| | | } else {// 笼子号大于5时 |
| | |
| | | // 获取调拨位置进行调拨 |
| | | prcid2 = cagecell.getPrcId();// 调拨目标位prcID |
| | | ids = cagecell.getId();// 调拨目标位ID |
| | | cages=cagecell.getCage();//调拨目标位笼子 |
| | | cells=cagecell.getCell();//调拨目标位格子 |
| | | // 填入调拨数据 |
| | | datas.add((short) prcid); |
| | | datas.add((short) prcid2); |
| | | datas.add((short) 2); |
| | | datas.add((short) 1); |
| | | spianMapper.Inserttask(2, 0,cageout.getId(),ids );//新增调度任务 |
| | | // 转移原调拨格子数据 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);//减少新格子宽度 |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除原格子数据 |
| | | // 传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | spianMapper.Updatetask(1, 2);//完成任务 |
| | | datas.clear(); // 清空整个列表 |
| | | // 判断调拨结束后再次出片 |
| | | // 填入出片数据 |
| | |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | spianMapper.Inserttask(2, 0,cageout.getId(),1000 );//新增出片任务 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除原格子数据出片 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | spianMapper.Updatetask(1, 1);//完成任务 |
| | | return Result.success(cagecell); // 调拨位置的参数内容 |
| | | |
| | | } |
| | |
| | | int prcid; |
| | | int tiers; |
| | | int prctier; |
| | | |
| | | |
| | | |
| | | Glass glasslist = spianMapper.selectGlass(glassid); |
| | | if (glasslist == null) { |
| | | return (300); |
| | | } |
| | | |
| | | double widths = glasslist.getWidth(); |
| | | Short orderids = glasslist.getOrderId(); |
| | | |
| | |
| | | tiers = cages1.getTier();// 内外片 |
| | | cells = cages1.getCell();// 格子号 |
| | | prcid = cages1.getPrcId();// 传给prc的目标地id |
| | | spianMapper.Inserttask(0, 0, 1000, ids);//新增任务 |
| | | |
| | | if (glasslist == null) { |
| | | return (300); |
| | | } |
| | | prctier = spianMapper.selectsum(cage1, cells);// 传给prc的格子内玻璃数 |
| | | // 有合适空格时进片 |
| | | if (cages > 1 && cages1.getTier() != null) { |
| | |
| | | datas.add((short) 1); |
| | | // 数据库修改笼子表新增一条玻璃 |
| | | spianMapper.UpdataAddCage(orderids, glassid, widths, cage1, cells, ids, 1); |
| | | spianMapper.UpdataAddCage1(widths, cage1, cells);//减少格子宽度 |
| | | spianMapper.Updatetask(1, 0);//完成任务 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | |
| | | return (200); |
| | |
| | | } |
| | | |
| | | } |
| | | return (300); |
| | | return (400); |
| | | |
| | | } |
| | | |
| | |
| | | List<Short> datas = new ArrayList<>(); |
| | | // 获取优先出片的位置 |
| | | StorageCage cageout = spianMapper.selectOut2(glassid); |
| | | int cage = cageout.getCage(); // 储存出片位置,笼子格子几号玻璃 |
| | | int cage = cageout.getCage(); // 储存出片位置,笼子格子几号玻璃 |
| | | int cell = cageout.getCell();// 出片格号 |
| | | int tier = cageout.getTier();// 出片内外片 |
| | | int prcid = cageout.getPrcId();// prcid |
| | | int prcid2; |
| | | int ids; |
| | | int cages; |
| | | int cells; |
| | | double glasswidth = cageout.getGlassWidth(); |
| | | // 判断玻璃内外片 |
| | | if (tier == 2) { |
| | | // 判断玻璃可直接出片时 |
| | | // 修改数据库笼子表(出片) |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0); |
| | | |
| | | spianMapper.Inserttask(1, 0,cageout.getId(),1000 );//新增任务 |
| | | |
| | | |
| | | |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);//清除格子玻璃信息 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | spianMapper.Updatetask(1, 1);//完成任务 |
| | | return Result.success(datas); |
| | | } else { |
| | | // 获取格子的玻璃数量 |
| | | int state = spianMapper.selectGlassState(cage, cell); |
| | | // 判断内片是否需要调拨 |
| | | if (state == 0) { |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0); |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | spianMapper.Inserttask(1, 0,cageout.getId(),1000 );//新增任务 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);//清除格子玻璃信息 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | spianMapper.Updatetask(1, 1);//完成任务 |
| | | return Result.success("状态为0,直接出片"); |
| | | } else { |
| | | // 玻璃需要调拨时,判断属于哪个半区的笼子 |
| | |
| | | // 获取调拨位置进行调拨 |
| | | prcid2 = cagecell.getPrcId();// 调拨目标位PRCID |
| | | ids = cagecell.getId();// 调拨目标位ID |
| | | cages=cagecell.getCage();//调拨目标位笼子 |
| | | cells=cagecell.getCell();//调拨目标位格子 |
| | | spianMapper.Inserttask(2, 0,cageout.getId(),ids );//新增调度任务 |
| | | |
| | | |
| | | // 更换玻璃的笼子 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);//减少新格子宽度 |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除原格子数据 |
| | | |
| | | // 填入调拨数据 |
| | | datas.add((short) prcid);// 调拨外片起始位置 |
| | | datas.add((short) prcid2); |
| | |
| | | datas.add((short) 1); |
| | | // 传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | spianMapper.Updatetask(1, 2);//完成任务 |
| | | datas.clear(); // 清空整个列表 |
| | | // 判断调拨结束后再次出片,填入出片数据 |
| | | datas.add((short) prcid); |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | spianMapper.Inserttask(2, 0,cageout.getId(),1000 );//新增出片任务 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除原格子数据 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | // 修改数据库笼子表(出片) |
| | | |
| | | spianMapper.Updatetask(1, 1);//完成任务 |
| | | return Result.success(cagecell); // 调拨位置的参数内容 |
| | | |
| | | } else {// 笼子号大于5时 |
| | |
| | | // 获取调拨位置进行调拨 |
| | | prcid2 = cagecell.getPrcId();// 调拨目标位prcID |
| | | ids = cagecell.getId();// 调拨目标位ID |
| | | cages=cagecell.getCage();//调拨目标位笼子 |
| | | cells=cagecell.getCell();//调拨目标位格子 |
| | | // 填入调拨数据 |
| | | datas.add((short) prcid); |
| | | datas.add((short) prcid2); |
| | | datas.add((short) 2); |
| | | datas.add((short) 1); |
| | | spianMapper.Inserttask(2, 0,cageout.getId(),ids );//新增调度任务 |
| | | // 转移原调拨格子数据 |
| | | spianMapper.UpdataAddCage1(glasswidth, cages, cells);//减少新格子宽度 |
| | | spianMapper.UpdateDBCage(ids, cage, cell);// 将原格子数据更新到新格子里 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除原格子数据 |
| | | // 传输mes数据,坐标,数据 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | spianMapper.Updatetask(1, 2);//完成任务 |
| | | datas.clear(); // 清空整个列表 |
| | | // 判断调拨结束后再次出片 |
| | | // 填入出片数据 |
| | |
| | | datas.add((short) 1000); |
| | | datas.add((short) 1); |
| | | datas.add((short) 1); |
| | | spianMapper.Inserttask(2, 0,cageout.getId(),1000 );//新增出片任务 |
| | | spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);// 清除原格子数据出片 |
| | | spianMapper.UpdataOutCage1(glasswidth, cage, cell);//增加原格子宽度 |
| | | S7control.getinstance().WriteWord(adddresslist, datas); |
| | | spianMapper.Updatetask(1, 1);//完成任务 |
| | | return Result.success(cagecell); // 调拨位置的参数内容 |
| | | |
| | | } |
| | |
| | | #\u6570\u636E\u5E93\u9A71\u52A8 |
| | | spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver |
| | | #\u6570\u636E\u5E93\u8FDE\u63A5\u5730\u5740 |
| | | spring.datasource.url=jdbc:mysql://10.153.19.150:3306/canadames?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai |
| | | spring.datasource.url=jdbc:mysql://localhost:3306/canadames?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai |
| | | #\u6570\u636E\u5E93\u7528\u6237\u540D |
| | | spring.datasource.username=root |
| | | #\u6570\u636E\u5E93\u7528\u6237\u5BC6\u7801 |
| | | #\u6570\u636E\u5E93\u7528\u6237\u5BC6\u7801 |
| | | spring.datasource.password=beibo.123/ |
| | | #\u6620\u5C04\u6587\u4EF6\u7684\u4F4D\u7F6E |
| | | mybatis-plus.mapper-locations=classpath:com/example/springboot/dao/*Dao.xml |