wu
2024-04-23 b539492500841234cdfd5602b9dcc24f7458e2d2
springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java
@@ -1,10 +1,17 @@
package com.example.springboot.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.springboot.common.Result;
import com.example.springboot.component.Plchome;
import com.example.springboot.component.S7control;
import com.example.springboot.entity.Queue;
import com.example.springboot.entity.StorageCage;
import com.example.springboot.entity.StorageTask;
import com.example.springboot.mapper.HomeMapper;
@@ -21,38 +28,178 @@
    private SpianService spianService;
    public void EndTask(int types) {
        String A01glassid1 = spianService.queGlassid("DB103.128", 14).toString();
        String A01glassid2 = spianService.queGlassid("DB103.142", 14).toString();
        String A02glassid1 = spianService.queGlassid("DB103.156", 14).toString();
        String B01glassid = spianService.queGlassid("DB103.184", 14).toString();
        String B02glassid = spianService.queGlassid("DB103.212", 14).toString();
        List<Short> DeviceList = S7control.getinstance().ReadWord("DB103.0", 10);
        if (types == 0) {// 终止进片任务
            List<StorageTask> cageList = homeMapper.SelectTaskByState(types);
            for (StorageTask storageTask : cageList) {
                outSliceServive.StopTask(storageTask.getGlassId(), types);
                // 判断出片任务位置并清除对应玻璃id
                if ((storageTask.getGlassId().equals(A01glassid1) || storageTask.getGlassId().equals(A01glassid2))
                        && DeviceList.get(4) == 0) {
                    outSliceServive.StopTask(storageTask.getGlassId(), types);
                    ClearGlassId("DB101.10.0");
                }
                if (storageTask.getGlassId().equals(B01glassid) && DeviceList.get(2) == 0) {
                    outSliceServive.StopTask(storageTask.getGlassId(), types);
                    ClearGlassId("DB101.10.2");
                }
                if (storageTask.getGlassId().equals(B02glassid) && DeviceList.get(3) == 0) {
                    ClearGlassId("DB101.10.3");
                    outSliceServive.StopTask(storageTask.getGlassId(), types);
                }
            }
            // 发送终止进片任务信号
        } else {// 终止出片任务
            List<StorageCage> storageCages = homeMapper.selectinout(3);
            for (StorageCage storageCage : storageCages) {
                List<StorageCage> storageCagess = homeMapper.SelectStoragesGlassById(storageCage.getGlassId());
                for (StorageCage storageCagez : storageCagess) {
                    if (storageCagez.getState().equals("2")) {// 调拨进片
                        outSliceServive.StopTask(storageCagez.getGlassId(), 0);
                    } else {// 出片
                        outSliceServive.StopTask(storageCagez.getGlassId(), types);
            List<StorageTask> cageLists = homeMapper.SelectTaskByState(types);
            List<StorageTask> cageList2 = homeMapper.SelectTaskByState(2);
            if (cageList2.size() > 0) {
                cageLists.add(cageList2.get(0));
            }
            for (StorageTask cageList : cageLists) {
                if (cageList.getTaskType().equals("1")) {
                    System.out.println(DeviceList.get(5));
                    if (cageList.getGlassId().equals(A02glassid1) && DeviceList.get(5) == 0) {
                        outSliceServive.StopTask(cageList.getGlassId(), types);
                        ClearGlassId("DB101.10.1");
                    }
                    if (cageList.getGlassId().equals(B01glassid) && DeviceList.get(2) == 0) {
                        outSliceServive.StopTask(cageList.getGlassId(), types);
                        ClearGlassId("DB101.10.2");
                    }
                    if (cageList.getGlassId().equals(B02glassid) && DeviceList.get(3) == 0) {
                        outSliceServive.StopTask(cageList.getGlassId(), types);
                        ClearGlassId("DB101.10.3");
                    }
                } else if (cageList.getTaskType().equals("2")) {
                    if (cageList.getGlassId().equals(A02glassid1) && DeviceList.get(5) == 0) {
                        outSliceServive.StopTask(cageList.getGlassId(), 2);
                        ClearGlassId("DB101.10.1");
                    }
                    if (cageList.getGlassId().equals(B01glassid) && DeviceList.get(2) == 0) {
                        outSliceServive.StopTask(cageList.getGlassId(), 2);
                        ClearGlassId("DB101.10.2");
                    }
                    if (cageList.getGlassId().equals(B02glassid) && DeviceList.get(3) == 0) {
                        outSliceServive.StopTask(cageList.getGlassId(), 2);
                        ClearGlassId("DB101.10.3");
                    }
                }
            }
            // List<StorageCage> storageCages = homeMapper.selectinout(3);
            // for (StorageCage storageCage : storageCages) {
            // List<StorageCage> storageCagess =
            // homeMapper.SelectStoragesGlassById(storageCage.getGlassId());
            // for (StorageCage storageCagez : storageCagess) {
            // if (storageCagez.getState().equals("2")) {// 调拨进片
            // outSliceServive.StopTask(storageCagez.getGlassId(), 0);
            // } else {// 出片
            // outSliceServive.StopTask(storageCagez.getGlassId(), types);
            // }
            // // 判断出片任务位置并清除对应玻璃id
            // if (storageCagez.getGlassId() == A02glassid1&&DeviceList.get(5)==0) {
            // outSliceServive.StopTask(storageCagez.getGlassId(), types);
            // ClearGlassId("DB101.10.1");
            // } else if (storageCagez.getGlassId() == B01glassid&&DeviceList.get(2)==0) {
            // outSliceServive.StopTask(storageCagez.getGlassId(), types);
            // ClearGlassId("DB101.10.2");
            // } else if (storageCagez.getGlassId() == B02glassid&&DeviceList.get(3)==0) {
            // ClearGlassId("DB101.10.3");
            // outSliceServive.StopTask(storageCagez.getGlassId(), types);
            // }
            // }
            // }
        }
    }
    // 手动完成任务
    public void UpdateTask(Integer types, Integer shelfrack, String glassid) {
        if (types == 0) {// 完成进片
            spianService.overtask(glassid);
        } else if (types == 1) {// 完成出片
            spianService.overtask(glassid);
        } else if (types == 2) {// 终止进片任务
            outSliceServive.StopTask(glassid, 0);
            // 发送终止进片任务信号
        } else {// 终止出片任务
            outSliceServive.StopTask(glassid, 1);
        }
        // else if (types == 2) {// 终止进片任务
        // outSliceServive.StopTask(glassid, 0);
        // // 发送终止进片任务信号
        // } else {// 终止出片任务
        // outSliceServive.StopTask(glassid, 1);
        // }
    }
    // 判断任务类型后清除对应玻璃id
    public Result ClearGlassId(String position, String glassid) {
        Map<String, Object> map = new HashMap<>();
        if (S7control.getinstance().CheckConnected() == true) {
            // 判断进出还是出片任务
            Short type = homeMapper.SelectTaskByGlassId(glassid);
            if (type != null) {
                if (type == 0) {
                    // 进片
                    outSliceServive.StopTask(glassid, 0);
                } else if (type == 1) {
                    // 出片
                    outSliceServive.StopTask(glassid, 1);
                } else {
                    // 调拨
                    outSliceServive.StopTask(glassid, 0);
                    outSliceServive.StopTask(glassid, 1);
                }
            }
            ClearGlassId(position);
            map.put("message", "200");
        } else {
            map.put("message", "300");
        }
        return Result.success(map);
    }
    // 清除玻璃id
    public Result ClearGlassId(String position) {
        Map<String, Object> map = new HashMap<>();
        if (S7control.getinstance().CheckConnected() == true) {
            S7control.getinstance().WriteBit(position, true);
            try {
                TimeUnit.MILLISECONDS.sleep(300);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            S7control.getinstance().WriteBit(position, false);
            map.put("message", "200");
        } else {
            map.put("message", "300");
        }
        return Result.success(map);
    }
    public Result InsertQueueGlassId(Short id, Queue queue) {
        Map<String, Object> map = new HashMap<>();
        Short zhi = 200;
        short result = homeMapper.SelectStorageByGlassId(queue.getglassId());
        if (result > 0) {
            map.put("message", "300");
        } else {
            if (id == 1) {
                // 调用伍存储过程
                zhi = spianService.selectAll(queue.getglassId());
                if (zhi == 200) {
                    homeMapper.InsertQueueGlassId(queue, id);
                }
            }
            map.put("message", zhi);
        }
        if (zhi != 200) {
            Plchome.FeedState = true;
        }
        return Result.success(map);
    }
}