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.S7control; import com.example.springboot.entity.StorageCage; import com.example.springboot.entity.StorageTask; import com.example.springboot.mapper.HomeMapper; @Service public class StorageCageService { @Autowired private HomeMapper homeMapper; @Autowired private OutSliceServive outSliceServive; @Autowired 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.198", 14).toString(); if (types == 0) {// 终止进片任务 List cageList = homeMapper.SelectTaskByState(types); for (StorageTask storageTask : cageList) { // 判断出片任务位置并清除对应玻璃id if (storageTask.getGlassId() == A01glassid1 || storageTask.getGlassId() == A01glassid2) { outSliceServive.StopTask(storageTask.getGlassId(), types); ClearGlassId("DB101.10.0"); } else if (storageTask.getGlassId() == B01glassid) { outSliceServive.StopTask(storageTask.getGlassId(), types); ClearGlassId("DB101.10.2"); } else if (storageTask.getGlassId() == B02glassid) { ClearGlassId("DB101.10.3"); outSliceServive.StopTask(storageTask.getGlassId(), types); } } // 发送终止进片任务信号 } else {// 终止出片任务 List storageCages = homeMapper.selectinout(3); for (StorageCage storageCage : storageCages) { List 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) { outSliceServive.StopTask(storageCagez.getGlassId(), types); ClearGlassId("DB101.10.1"); } else if (storageCagez.getGlassId() == B01glassid) { outSliceServive.StopTask(storageCagez.getGlassId(), types); ClearGlassId("DB101.10.2"); } else if (storageCagez.getGlassId() == B02glassid) { 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); // } } //判断任务类型后清除对应玻璃id public Result ClearGlassId(String position, String glassid) { Map map = new HashMap<>(); if (S7control.getinstance().CheckConnected() == true) { // 判断进出还是出片任务 Short type = homeMapper.SelectTaskByGlassId(glassid); 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 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); } }