wu
2024-03-31 6db39c1dfb1dca966983652e4360672cb58a96f6
springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java
@@ -25,35 +25,33 @@
        return 400;
    }
    //定义初始字段
    int cageid;
    StorageCage cage;
    String glassid=glassInfo.getGlassid();
    Double width=glassInfo.getWidth();
    //int mateid=glassInfo.getMateid();
    String flowcard=glassInfo.getFlowcard();
    int glasstype=glassInfo.getGlasstype();
    //判断是否有同类型的
     cageid=albaniaMapper.SelectCage(glasstype,width, 50);
    cage=albaniaMapper.SelectCage(glasstype,width, 50);
    //如果有同类型时直接增加
    if(cageid!=Integer.MIN_VALUE){
    if(cage!=null){
        //发送plc任务
        Mestast(glassid, 1001, cageid, 1,"MESID1");
        Mestast(glassid, 40, cage.getId(), 1,"MESID1",1);
        //任务发送字
        //Mestast(glassid,1001,cageid,1);
        
    }else{ 
         //判断玻璃是否进入大片笼
        if(glassInfo.getThickness()>=15){
            cageid=albaniaMapper.SelectNewCell(3,5);
            cage=albaniaMapper.SelectNewCell(3,5);
        }else{
            cageid=albaniaMapper.SelectNewCell(3,5);
            cage=albaniaMapper.SelectNewCell(0,5);
            //发送plc任务
        }
        //当返回的格子号为空时,返回400笼子已满
        if(cageid!=Integer.MIN_VALUE){
            Mestast(glassid,1001,cageid,1,"MESID1");
        if(cage!=null){
            albaniaMapper.AddCage(cage.getId(), glassid, cage.getGlassWidth(), cage.getGlassHeight(), cage.getGlassWidthMm(), cage.getGlassHeightMm(), 1, cage.getGlasstype(), 0);
            Mestast(glassid,1001,cage.getId(),1,"MESID1",1);
            //发送plc任务
            
        }else{
@@ -61,43 +59,55 @@
        }
    }
    //增加任务记录
    albaniaMapper.Inserttask(0, 0, 1001, cageid, glassid,glasstype, flowcard,0,0);
    albaniaMapper.Inserttask(0, 0, 1001, cage.getId(), glassid,glasstype, flowcard,0,0);
    return(200);
}
    //出片
    public Short selectout(int line) {
        int mateid;
        int glasstype;
        int tier;
        int sumid;
        String flowcard;
        GlassInfo glassmate=new GlassInfo();
        GlassInfo method=new GlassInfo();
        StorageCage glass=new StorageCage();
        method=albaniaMapper.SelectMethod(line);
        double width=0;
            for(int i=1;i<=7;i++){
                //如果不是直通模式只出有完整配片的流程卡
                if(method.getMethod()==0){
                glassmate= albaniaMapper.SelectOutGlass(line);
                }else{
                    //直通模式时按顺序直出
                    glassmate= albaniaMapper.SelectOutGlass2(line);
                }
                if(glassmate==null){ 
                    //未领取任务
                    return (400);
                }else{
                mateid=glassmate.getMateid();
                glasstype=glassmate.getGlasstype();
                tier=glassmate.getTier();
                sumid=glassmate.getId();
                flowcard=glassmate.getFlowcard();
                    
                    StorageCage glass= albaniaMapper.SelectCageGlass(glasstype);
                    glass= albaniaMapper.SelectCageGlass(glassmate.getGlasstype());
                  if(glass!=null){
                    //发送配片数据
                    Mestast(glassmate.getGlasstype()+"i", glass.getId(),2002, 0,"MESID"+i);
                    albaniaMapper.AddFinishNumber(flowcard, mateid, tier);
                    albaniaMapper.Inserttask(1, 0, glass.getId(), 2002, glassmate.getGlassid()+i, glasstype,glass.getFlowcard(),mateid,tier);
                      if(tier==sumid){//当配片数量等于成品小片总片数时
                    //发送任务之前判断车上的剩余宽度是否大于此玻璃
                    width+=glassmate.getWidth()+50;
                    //大于车上空余宽度时提前发送出片启动
                    if(width>5000){
                        //本次配片完成发送启动命令
                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short)2);//出片任务启动
                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short)1);//出片任务启动
                        return (200);//结束
                         }
                    //发送配片数据
                    Mestast(glass.getGlassId(), glass.getId(),7, 0,"MESID"+i,i);
                    albaniaMapper.AddFinishNumber(glassmate.getFlowcard(), glassmate.getMateid(), glassmate.getTier());
                    albaniaMapper.Inserttask(1, 0, glass.getId(), 2002, glassmate.getGlassid(), glassmate.getGlasstype(),glass.getFlowcard(),glassmate.getMateid(),glassmate.getTier());
                      if(glassmate.getTier()==glassmate.getId()){//当配片数量等于成品小片总片数时
                        //本次配片完成发送启动命令
                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short)1);//出片任务启动
                        return (200);//结束
                      }
                    }else{
                        return (400);//结束
                    }
                    
                
@@ -160,10 +170,10 @@
    }
    //下发理片任务
    public void Mestast(String glassid,int MESToPLCStart1,int MESToPLCTarget1,int MESToPLC,String address) {
    public void Mestast(String glassid,int MESToPLCStart1,int MESToPLCTarget1,int MESToPLC,String address,int i) {
        S7control.getinstance().writeString(plcmes.getPlcParameter(address).getAddress(),glassid);//玻璃id
        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCStart1").getAddress(), (short) MESToPLCStart1);//起始位置
        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCTarget1").getAddress(), (short) MESToPLCTarget1);//目标位置
        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCStart"+i).getAddress(), (short) MESToPLCStart1);//起始位置
        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCTarget"+i).getAddress(), (short) MESToPLCTarget1);//目标位置
        if(MESToPLC!=0){
            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short)MESToPLC);//mes理片任务类型
        }