package com.example.springboot.service;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import com.example.springboot.common.Result;
|
import com.example.springboot.component.S7control;
|
import com.example.springboot.entity.StorageCage;
|
import com.example.springboot.mapper.SpianMapper;
|
|
@Service
|
public class SpianService {
|
@Autowired
|
private SpianMapper spianMapper;
|
@GetMapping("/all2")
|
public Result selectadd(String orderid){
|
//定义PRC数据传送数组
|
List<String> adddresslist=new ArrayList<>();
|
adddresslist.add("DB105.6");//出片车起始位置
|
adddresslist.add("DB105.8");//出片车目标位置
|
adddresslist.add("DB105.10");//出片笼玻璃数
|
adddresslist.add("DB105.14");//出片车启动 1为启动
|
List<Short> datas=new ArrayList<>();
|
//获取优先出片的位置
|
StorageCage cageout=spianMapper.selectOut(orderid);
|
int cage =cageout.getCage(); //储存出片位置,笼子格子几号玻璃
|
int cell =cageout.getCell();
|
int tier =cageout.getTier();
|
int id=cageout.getId();
|
int ids;
|
double glasswidth=cageout.getGlassWidth();
|
//判断玻璃内外片
|
if(tier==2){
|
//判断玻璃可直接出片时
|
//修改数据库笼子表(出片)
|
spianMapper.UpdataGlassCage("","",glasswidth, cage, cell, tier, 0);
|
datas.add((short)id);
|
datas.add((short)1000);
|
datas.add((short)1);
|
datas.add((short)1);
|
S7control.getinstance().WriteWord(adddresslist, datas);
|
return Result.success(datas);
|
}
|
else{
|
//获取格子的玻璃数量
|
int state= spianMapper.selectGlassState(cage,cell);
|
//判断内片是否需要调拨
|
if(state==0){
|
return Result.success("状态为0,直接出片");
|
}else{
|
//玻璃需要调拨时,判断属于哪个半区的笼子
|
if(cage<6){
|
StorageCage cagecell= spianMapper.selectGlassCage(cage,glasswidth,0,6);
|
//获取调拨位置进行调拨
|
ids=cagecell.getId();//调拨目标位ID
|
//填入调拨数据
|
datas.add((short)id);
|
datas.add((short)ids);
|
datas.add((short)2);
|
datas.add((short)1);
|
//传输mes数据,坐标,数据
|
S7control.getinstance().WriteWord(adddresslist, datas);
|
//更换玻璃的笼子
|
datas.clear(); // 清空整个列表
|
//判断调拨结束后再次出片,填入出片数据
|
datas.add((short)id);
|
datas.add((short)1000);
|
datas.add((short)1);
|
datas.add((short)1);
|
S7control.getinstance().WriteWord(adddresslist, datas);
|
//修改数据库笼子表(出片)
|
spianMapper.UpdataGlassCage("","",glasswidth, cage, cell, tier, 0);
|
return Result.success(cagecell); //调拨位置的参数内容
|
|
}else{
|
StorageCage cagecell= spianMapper.selectGlassCage(cage,glasswidth,5,11);
|
//获取调拨位置进行调拨
|
ids=cagecell.getId();//调拨目标位ID
|
//填入调拨数据
|
datas.add((short)id);
|
datas.add((short)ids);
|
datas.add((short)2);
|
datas.add((short)1);
|
//传输mes数据,坐标,数据
|
S7control.getinstance().WriteWord(adddresslist, datas);
|
datas.clear(); // 清空整个列表
|
//判断调拨结束后再次出片
|
//填入出片数据
|
datas.add((short)id);
|
datas.add((short)1000);
|
datas.add((short)1);
|
datas.add((short)1);
|
S7control.getinstance().WriteWord(adddresslist, datas);
|
return Result.success(cagecell); //调拨位置的参数内容
|
|
}
|
|
}
|
}
|
|
}
|
|
@GetMapping("/all")
|
//进片任务,传订单id
|
//按订单优先进片
|
public Result selectAll(Short glassid){
|
//return spianMapper.selectAll();
|
int cage1;
|
int ids;
|
int tier;
|
double widths=1500;
|
List<String> adddresslist=new ArrayList<>();
|
adddresslist.add("DB105.0");//进片车起始位置
|
adddresslist.add("DB105.2");//进片车目标位置
|
adddresslist.add("DB105.4");//进片笼玻璃数
|
adddresslist.add("DB105.12");//进片车启动 1为启动
|
List<Short> datas=new ArrayList<>();
|
//String orderid="A001";
|
//获取订单相关度最高的笼子排序
|
List<StorageCage> storageCage=spianMapper.selectAll(glassid);
|
for (StorageCage storageCage2 : storageCage) {
|
//保存订单优先顺序笼子号
|
cage1=storageCage2.getCage();
|
//判断该笼子号相邻最大的空格数
|
int cages=spianMapper.selectCage(cage1);
|
//判断选中笼子是否有合适宽度空格
|
StorageCage cages1=spianMapper.selectCage1(cage1,widths);
|
ids=cages1.getId();
|
tier=cages1.getTier();
|
//有合适空格时进片
|
if(cages>1 &&cages1.getTier()!=null){
|
//执行进片
|
datas.add((short)1000);
|
datas.add((short)ids);
|
datas.add((short)tier);
|
datas.add((short)1);
|
S7control.getinstance().WriteWord(adddresslist, datas);
|
//数据库修改笼子表新增一条玻璃
|
spianMapper.UpdataAddCage("glassid", glassid, widths, cages, ids, tier, 1);//还未获取玻璃id
|
return Result.success(cages1);
|
}
|
|
|
}
|
return Result.success("不可进片");
|
|
}
|
|
}
|