package com.zy.asrs.controller;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.core.annotations.ManagerAuth;
|
import com.core.common.R;
|
import com.zy.asrs.entity.BasDevpPosition;
|
import com.zy.asrs.service.BasDevpPositionService;
|
import com.zy.core.cache.RgvStatusCache;
|
import com.zy.core.cache.SlaveConnection;
|
import com.zy.core.cache.TaskProtocolCache;
|
import com.zy.core.enums.SlaveType;
|
import com.zy.core.model.protocol.RgvProtocol;
|
import com.zy.core.model.protocol.TaskProtocol;
|
import com.zy.core.thread.RgvThread;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.ConcurrentHashMap;
|
|
/**
|
* 输送设备接口
|
* Created by vincent on 2020-06-01
|
*/
|
@RestController
|
@RequestMapping("/rgv")
|
public class RgvController {
|
|
@Autowired
|
private BasDevpPositionService basDevpPositionService;
|
|
@GetMapping("/status/all")
|
@ManagerAuth(memo = "全部信息")
|
public R allStatus(){
|
List<Map<String, Object>> res = new ArrayList<>();
|
ConcurrentHashMap<Integer, RgvProtocol> allRgvStatus = RgvStatusCache.getAllRgvStatus();
|
for (RgvProtocol rgvProtocol : allRgvStatus.values()){
|
Map<String, Object> map2 = new HashMap<>();
|
map2.put("rgvNo", rgvProtocol.getRgvNo());
|
map2.put("taskNo", rgvProtocol.getTaskNo());
|
map2.put("mode", rgvProtocol.getModeType().desc);
|
map2.put("status", rgvProtocol.getStatusType().desc);
|
map2.put("rgvPos", rgvProtocol.getRgvPos());
|
map2.put("rgvPosDestination", rgvProtocol.getRgvPosDestination());
|
map2.put("loaded", rgvProtocol.getLoaded().equals((short)-1)? "未知":rgvProtocol.getLoaded()==1? "有物":"无物");
|
res.add(map2);
|
}
|
return R.ok().add(res);
|
}
|
|
@PostMapping("/task/cache/all")
|
@ManagerAuth(memo = "全部信息")
|
public R allTaskCache(@RequestParam(defaultValue = "0") Integer rgvNo){
|
List<Map<String, Object>> res = new ArrayList<>();
|
try{
|
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
|
TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
|
ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
|
for (TaskProtocol taskProtocol : allTaskProtocol.values()){
|
Map<String, Object> map2 = new HashMap<>();
|
map2.put("rgvNo", rgvNo);
|
map2.put("taskNo", taskProtocol.getTaskNo());
|
map2.put("targetPosition", taskProtocol.getTargetPosition());
|
map2.put("isRunning", taskProtocol.getIsRunning());
|
map2.put("taskStatus", taskProtocol.getTaskStatus());
|
map2.put("direction", taskProtocol.isDirection());
|
res.add(map2);
|
}
|
} catch (Exception e){
|
// return R.error("异常"+e.getMessage());
|
}
|
return R.ok().add(res);
|
}
|
|
@PostMapping("/run/del")//Take Put Walk
|
@ManagerAuth(memo = "小车行走")
|
public R rgvRunDel(@RequestParam(defaultValue = "0") Integer rgvNo
|
) {
|
if (rgvNo==null || rgvNo==0){
|
return R.error("请选择小车");
|
}
|
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
|
TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
|
|
try {
|
ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
|
for (TaskProtocol taskProtocol : allTaskProtocol.values()){
|
taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection());
|
}
|
|
} catch (Exception e) {
|
return R.error("任务删除失败"+e.getMessage());
|
}
|
|
return R.ok("任务清空成功");
|
}
|
|
@PostMapping("/run/walk")//Take Put Walk
|
@ManagerAuth(memo = "小车行走")
|
public R rgvRunWalk(@RequestParam(defaultValue = "0") Integer rgvNo,
|
@RequestParam(defaultValue = "0") Integer taskNo,
|
@RequestParam(defaultValue = "0") Integer rgvStaNo,
|
@RequestParam(defaultValue = "0") Long rgvPosDestination
|
) {
|
if (rgvNo==null || rgvNo==0){
|
return R.error("请选择小车");
|
}
|
if (taskNo==null || taskNo==0){
|
return R.error("作业号请填写");
|
}
|
if ((rgvStaNo == null || rgvStaNo == 0) && (rgvPosDestination==null || rgvPosDestination==0L)){
|
return R.error("目标站点请填写");
|
}
|
if (rgvPosDestination == null || rgvPosDestination == 0){
|
BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNo));
|
rgvPosDestination = basDevpPosition.getPlcPosition();
|
}
|
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
|
TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
|
|
TaskProtocol issued = new TaskProtocol();
|
|
try {
|
ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
|
if (allTaskProtocol.size() > 0) {
|
return R.error("存在执行中任务,请先处理!!!");
|
}
|
|
//执行
|
issued.setTaskNo(Long.valueOf(taskNo));
|
issued.setTaskStatus(1);
|
issued.setTaskNoDirection(issued.gettaskNoDirection$(issued.getTaskNo(), issued.getTaskStatus()));
|
issued.setTargetPosition(rgvPosDestination);
|
issued.setIsRunning(1);
|
issued.setDirection(true);
|
|
taskProtocolCache.updateTaskProtocol(issued);
|
|
} catch (Exception e) {
|
return R.error("任务生成失败"+e.getMessage());
|
}
|
|
return R.ok("任务生成成功");
|
}
|
|
@PostMapping("/run/put")//Take Put Walk
|
@ManagerAuth(memo = "小车放货")
|
public R rgvPutWalk(@RequestParam(defaultValue = "0") Integer rgvNo,
|
@RequestParam(defaultValue = "0") Integer taskNo,
|
@RequestParam(defaultValue = "0") Integer rgvStaNo,
|
@RequestParam(defaultValue = "0") Long rgvPosDestination
|
) {
|
if (rgvNo==null || rgvNo==0){
|
return R.error("请选择小车");
|
}
|
if (taskNo==null || taskNo==0){
|
return R.error("作业号请填写");
|
}
|
if (rgvStaNo == null || rgvStaNo == 0){
|
return R.error("目标站点请填写");
|
}
|
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
|
TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
|
|
TaskProtocol issuedPut = new TaskProtocol();
|
|
try {
|
ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
|
if (allTaskProtocol.size() > 0) {
|
return R.error("存在执行中任务,请先处理!!!");
|
}
|
|
BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNo));
|
//执行
|
issuedPut.setTaskNo(Long.valueOf(taskNo));
|
issuedPut.setTaskStatus(3);
|
issuedPut.setTaskNoDirection(issuedPut.gettaskNoDirection$(issuedPut.getTaskNo(), issuedPut.getTaskStatus()));
|
issuedPut.setTargetPosition(basDevpPosition.getPlcPosition());
|
issuedPut.setIsRunning(1);
|
issuedPut.setDirection(basDevpPosition.getRgvSign()==1);
|
|
taskProtocolCache.updateTaskProtocol(issuedPut);
|
} catch (Exception e) {
|
return R.error("任务生成失败"+e.getMessage());
|
}
|
|
return R.ok("任务生成成功");
|
}
|
|
@PostMapping("/run/take")//Take Put Walk
|
@ManagerAuth(memo = "小车取货")
|
public R rgvTakeWalk(@RequestParam(defaultValue = "0") Integer rgvNo,
|
@RequestParam(defaultValue = "0") Integer taskNo,
|
@RequestParam(defaultValue = "0") Integer rgvStaNo,
|
@RequestParam(defaultValue = "0") Long rgvPosDestination
|
) {
|
if (rgvNo==null || rgvNo==0){
|
return R.error("请选择小车");
|
}
|
if (taskNo==null || taskNo==0){
|
return R.error("作业号请填写");
|
}
|
if (rgvStaNo == null || rgvStaNo == 0){
|
return R.error("目标站点请填写");
|
}
|
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
|
TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
|
|
TaskProtocol issuedTake = new TaskProtocol();
|
try {
|
ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
|
if (allTaskProtocol.size() > 0) {
|
return R.error("存在执行中任务,请先处理!!!");
|
}
|
|
BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNo));
|
//执行
|
issuedTake.setTaskNo(Long.valueOf(taskNo));
|
issuedTake.setTaskStatus(2);
|
issuedTake.setTaskNoDirection(issuedTake.gettaskNoDirection$(issuedTake.getTaskNo(), issuedTake.getTaskStatus()));
|
issuedTake.setTargetPosition(basDevpPosition.getPlcPosition());
|
issuedTake.setIsRunning(1);
|
issuedTake.setDirection(basDevpPosition.getRgvSign()==1);
|
|
taskProtocolCache.updateTaskProtocol(issuedTake);
|
} catch (Exception e) {
|
return R.error("任务生成失败"+e.getMessage());
|
}
|
|
return R.ok("任务生成成功");
|
}
|
}
|