hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java
@@ -1,13 +1,20 @@
package com.mes.workstation.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.workstation.entity.UpWorkSequence;
import com.mes.common.S7object;
import com.mes.device.PlcParameterObject;
import com.mes.engineering.entity.Engineering;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
import com.mes.workstation.entity.UpWorkstation;
import com.mes.workstation.mapper.UpWorkstationMapper;
import com.mes.workstation.service.UpWorkstationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
 * <p>
@@ -19,54 +26,71 @@
 */
@Service
@Slf4j
public class UpWorkstationServiceImpl extends ServiceImpl<UpWorkstationMapper, UpWorkstation> implements UpWorkstationService {
    public static final String DB_100_10 = "DB_100_10";
    //判断是否可以吸片进行任务
    public boolean isCanLoadGlass() {
        String loadstart = "吸片信号";//plcmes.getPlcParameter("吸片信号").getValue();
        return "1".equals(loadstart);
    }
    //显示正在进行任务的工程信息
    @Resource
    UpPattenUsageMapper upPattenUsageMapper;
    @Resource
    UpWorkstationMapper upWorkstationMapper;
    //判断优先吸片位置后发送出片任务
    public void selectPriority() {
        //todo:判断是否可以吸片进行任务
//        String loadstart="吸片信号";//plcmes.getPlcParameter("吸片信号").getValue();
//        if (!"1".equals(loadstart)) {
//            return;
//        }
        UpWorkSequence loadid1 = this.baseMapper.selectPriority(1).get(0);
        UpWorkSequence loadid2 = this.baseMapper.selectPriority(2).get(0);
        //判断一二号工位哪边的顺序更先
//        if(loadid1.getSequence()>loadid2.getSequence()) {
//            S7object.getinstance().plccontrol.WriteWord(DB_100_10, (short)2);
//        }else if(loadid1.getSequence()==loadid2.getSequence()){
//            //当两个工位上的玻璃数相同时,判断哪个工位上的玻璃数更少,优先清空一个架子
//            int glassnum1=loadid1.getNumber();//Integer.parseInt(plcmes.getPlcParameter("玻璃数").getValue());
//            int glassnum2=loadid2.getNumber();//Integer.parseInt(plcmes.getPlcParameter("玻璃数").getValue());
//            if(glassnum1>glassnum2){
//                S7object.getinstance().plccontrol.WriteWord(DB_100_10, (short)2);
//            }else{
//                S7object.getinstance().plccontrol.WriteWord(DB_100_10, (short)1);
//            }
//        }else{
//            S7object.getinstance().plccontrol.WriteWord(DB_100_10, (short)1);
//        }
    public UpPattenUsage selectPriority(Engineering engineering) {
        QueryWrapper<UpPattenUsage> wrapper=new QueryWrapper<>();
        wrapper.eq("state", 0)
                .eq("engineering_id",engineering.getEngineerId())
                .orderByAsc("layout_sequence")
                .last("limit 1");
        return upPattenUsageMapper.selectOne(wrapper);
    }
    //判断工位是否有符合条件的玻璃
    @Override
    public UpWorkstation selectWorkstation(UpPattenUsage upPattenUsage) {
        QueryWrapper<UpWorkstation> wrapper = new QueryWrapper<>();
        wrapper.eq("pattern_width", upPattenUsage.getWidth())
                .eq("pattern_height", upPattenUsage.getHeight())
                .eq("pattern_thickness", upPattenUsage.getThickness())
                .eq("films_id", upPattenUsage.getFilmsId())
                .gt("number", 0)
                .orderByAsc("number")
                .last("limit 1");
        return this.baseMapper.selectOne(wrapper);
    }
    @Override
    public void reduceWorkstationNumber(Integer upworkId) {
        UpdateWrapper<UpWorkstation> wrapper = new UpdateWrapper<>();
        wrapper.eq("id", upworkId)
                .setSql("number = number - 1");
        boolean updateResult = upWorkstationMapper.update(null, wrapper) > 0;
        log.info("减少工位数量{}",updateResult);
    }
    /**
     * 增加人工输入的工位玻璃信息/删除人工搬走的玻璃信息
     * @param upwork
     */
    @Override
    public void updateGlassMessage(UpWorkstation upwork) {
        UpdateWrapper<UpWorkstation> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("workstation_id", upwork.getWorkstationId());
        int update = this.baseMapper.update(upwork, updateWrapper);
        if (upwork.getWorkstationId() == 1 || upwork.getWorkstationId() == 3) {
            updateWrapper.eq("workstation_id", upwork.getWorkstationId());
            int update = this.baseMapper.update(upwork, updateWrapper);
        } else {
            if (upwork.getPatternHeight() > 2700 || upwork.getPatternHeight() == 0) {
                updateWrapper.eq("workstation_id", upwork.getWorkstationId());
                int update = this.baseMapper.update(upwork, updateWrapper);
            }
        }
    @Override
    public String updateMesInkageLoad(short inKageWord) {
        PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
        log.info("修改设备两栋请求为{}:0联线;1联动", inKageWord);
        S7object.getinstance().plccontrol.WriteWord(plcParameterObject.getPlcParameter("InkageStatus").getAddress(), inKageWord);
        return "success";
    }
}
}