自动任务
This commit is contained in:
parent
274fdd6a35
commit
211c017278
@ -6,18 +6,24 @@ import com.mt.wms.core.api.Assert;
|
||||
import com.mt.wms.core.base.BaseService;
|
||||
import com.mt.wms.core.dal.entity.AutoExeTask;
|
||||
import com.mt.wms.core.dal.entity.AutoExeTaskHis;
|
||||
import com.mt.wms.core.dal.entity.CurrTask;
|
||||
import com.mt.wms.core.dal.service.AutoExeTaskHisServiceBiz;
|
||||
import com.mt.wms.core.dal.service.AutoExeTaskServiceBiz;
|
||||
import com.mt.wms.core.dal.service.CurrTaskServiceBiz;
|
||||
import com.mt.wms.core.errorcode.ApiErrorCode;
|
||||
import com.mt.wms.core.params.IdParam;
|
||||
import com.mt.wms.core.vo.IdVo;
|
||||
import com.mt.wms.core.vo.PageVo;
|
||||
import com.mt.wms.core.vo.R;
|
||||
import com.mt.wms.empty.controller.ApmsController;
|
||||
import com.mt.wms.empty.params.AutoTaskParam;
|
||||
import com.mt.wms.empty.params.AutoTaskQueryParam;
|
||||
import com.mt.wms.empty.service.AutoTaskService;
|
||||
import com.mt.wms.empty.vo.ApmsEndProcessVo;
|
||||
import com.mt.wms.empty.vo.AutoTaskVo;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -33,10 +39,16 @@ import java.util.List;
|
||||
@Service
|
||||
@Transactional
|
||||
public class AutoTaskServiceImpl extends BaseService implements AutoTaskService {
|
||||
|
||||
private final static Logger logger = LoggerFactory.getLogger(AutoTaskServiceImpl.class);
|
||||
@Resource
|
||||
private AutoExeTaskServiceBiz autoExeTaskServiceBiz;
|
||||
@Resource
|
||||
private AutoExeTaskHisServiceBiz autoExeTaskHisServiceBiz;
|
||||
@Resource
|
||||
private CurrTaskServiceBiz currTaskServiceBiz;
|
||||
@Resource
|
||||
private ApmsController apmsController;
|
||||
@Override
|
||||
public R<AutoTaskVo> get(IdParam idParam) {
|
||||
Assert.notNull(ApiErrorCode.INVALID_PARAMETER,idParam.getId());
|
||||
@ -55,12 +67,14 @@ public class AutoTaskServiceImpl extends BaseService implements AutoTaskService
|
||||
public R<PageVo<AutoTaskVo>> page(AutoTaskQueryParam autoTaskQueryParam) {
|
||||
QueryWrapper<AutoExeTask> wrapper=new QueryWrapper<>();
|
||||
wrapper.eq((autoTaskQueryParam.getStatus()!=null&&("").equals(autoTaskQueryParam.getStatus())),AutoExeTask.STATUS,autoTaskQueryParam.getStatus());
|
||||
wrapper.in(AutoExeTask.STATUS,0,1);
|
||||
Page<AutoExeTask> page = autoExeTaskServiceBiz.page(new Page<>(autoTaskQueryParam.getCurrent(), autoTaskQueryParam.getSize()), wrapper);
|
||||
return successful(new PageVo<>(page,AutoTaskVo.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public R<IdVo> stop(IdParam idParam) {
|
||||
|
||||
AutoExeTask autoExeTask = autoExeTaskServiceBiz.getById(idParam.getId());
|
||||
//状态置为终止
|
||||
autoExeTask.setStatus(3);
|
||||
@ -71,7 +85,19 @@ public class AutoTaskServiceImpl extends BaseService implements AutoTaskService
|
||||
autoExeTaskHisServiceBiz.save(autoExeTaskHis);
|
||||
//释放后续步骤
|
||||
// TODO: 2022/3/3
|
||||
//删除对应的几条currtask(未执行的),通知apms生产单作废
|
||||
List<CurrTask> currTaskList = currTaskServiceBiz.list(new QueryWrapper<CurrTask>()
|
||||
.eq(CurrTask.AUTO_EXE_TASK_ID, autoExeTask.getId()).eq(CurrTask.STATUS,0));
|
||||
for (CurrTask currTask:currTaskList
|
||||
) {
|
||||
R<ApmsEndProcessVo> apmsEndProcessVoR = apmsController.deleteBySheetNo(currTask.getSheetNo());
|
||||
if (!apmsEndProcessVoR.getData().getSuccess()){
|
||||
logger.info("Apms作废生产单接口错误");
|
||||
return R.failed("Apms作废生产单接口错误");
|
||||
}
|
||||
currTaskServiceBiz.removeById(currTask);
|
||||
}
|
||||
autoExeTaskServiceBiz.removeById(autoExeTask);
|
||||
return null;
|
||||
return successful(IdVo.builder().id(idParam.getId()).build());
|
||||
}
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ public class AsynRunTaskService extends BaseService {
|
||||
otherNowPoint=1;
|
||||
//两辆小车是否冲突
|
||||
Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, currTask.getStartPosition(), currTask.getTargetPosition(), otherNowPoint);
|
||||
while (conflictBoolean){
|
||||
if (conflictBoolean){
|
||||
//若冲突
|
||||
// TODO: 2022/2/26 执行小车移位任务。移位任务完成后再判断是否冲突,移位任务可以直接让小车移位到两端
|
||||
Map<String, Integer> json = new HashMap();
|
||||
@ -87,6 +87,8 @@ public class AsynRunTaskService extends BaseService {
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.error(new Date() + "WCS接口超时未响应!");
|
||||
//wocket推送到页面
|
||||
return;
|
||||
}
|
||||
}
|
||||
}else {
|
||||
@ -94,7 +96,7 @@ public class AsynRunTaskService extends BaseService {
|
||||
otherNowPoint=2;
|
||||
//两辆小车是否冲突
|
||||
Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, currTask.getStartPosition(), currTask.getTargetPosition(), otherNowPoint);
|
||||
while (conflictBoolean){
|
||||
if (conflictBoolean){
|
||||
//若冲突
|
||||
// TODO: 2022/2/26 执行小车移位任务。移位任务完成后再判断是否冲突,移位任务可以直接让小车移位到两端
|
||||
Map<String, Integer> json = new HashMap();
|
||||
@ -107,6 +109,8 @@ public class AsynRunTaskService extends BaseService {
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.error(new Date() + "WCS接口超时未响应!");
|
||||
//wocket推送到页面
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -182,16 +186,55 @@ public class AsynRunTaskService extends BaseService {
|
||||
if (vehicleId==1){
|
||||
// TODO: 2022/2/26 获取RGV2当前位置
|
||||
otherNowPoint=1;
|
||||
//两辆小车是否冲突
|
||||
Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, currTask.getStartPosition(), currTask.getTargetPosition(), otherNowPoint);
|
||||
if (conflictBoolean){
|
||||
//若冲突
|
||||
// TODO: 2022/2/26 执行小车移位任务。移位任务完成后再判断是否冲突,移位任务可以直接让小车移位到两端
|
||||
Map<String, Integer> json = new HashMap();
|
||||
//type=1为 入
|
||||
// taskType 4 单移动
|
||||
json.put("taskType", 4);
|
||||
json.put("sendRow", 39);
|
||||
String taskJson = JSON.toJSONString(json);
|
||||
try {
|
||||
HttpClient.httpPost("http://localhost:8009/rgv2/sendTask",taskJson);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.error(new Date() + "WCS接口超时未响应!");
|
||||
//wocket推送到页面
|
||||
return;
|
||||
}
|
||||
}
|
||||
}else {
|
||||
//获取RGV1当前位置
|
||||
otherNowPoint=2;
|
||||
//两辆小车是否冲突
|
||||
Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, currTask.getStartPosition(), currTask.getTargetPosition(), otherNowPoint);
|
||||
if (conflictBoolean){
|
||||
//若冲突
|
||||
// TODO: 2022/2/26 执行小车移位任务。移位任务完成后再判断是否冲突,移位任务可以直接让小车移位到两端
|
||||
Map<String, Integer> json = new HashMap();
|
||||
// taskType 4 单移动
|
||||
json.put("taskType", 4);
|
||||
json.put("sendRow", 1);
|
||||
String taskJson = JSON.toJSONString(json);
|
||||
try {
|
||||
HttpClient.httpPost("http://localhost:8009/rgv1/sendTask",taskJson);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.error(new Date() + "WCS接口超时未响应!");
|
||||
//wocket推送到页面
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
//两辆小车是否冲突
|
||||
/* //两辆小车是否冲突
|
||||
Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, location.getCode(), currTask.getTargetPosition(), otherNowPoint);
|
||||
while (conflictBoolean){
|
||||
if (conflictBoolean){
|
||||
//若冲突
|
||||
// TODO: 2022/2/26 执行小车移位任务。移位任务完成后再判断是否冲突,移位任务可以直接让小车移位到两端
|
||||
}
|
||||
}*/
|
||||
|
||||
//新建一条执行任务的关系表存放任务执行信息
|
||||
RunTask runTask=new RunTask();
|
||||
@ -208,9 +251,33 @@ public class AsynRunTaskService extends BaseService {
|
||||
inStockInfo.setStatus(1);
|
||||
inStockInfoServiceBiz.updateById(inStockInfo);
|
||||
// TODO: 2021/12/14 调用车辆填入起终点,得到车辆执行结果
|
||||
|
||||
Long startPoint = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, runTask.getStartPosition())).getCode();
|
||||
Long endPoint = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, runTask.getEndPosition())).getCode();
|
||||
Map<String, Object> json = new HashMap();
|
||||
// taskType 1 搬运
|
||||
json.put("taskType", 1);
|
||||
json.put("sendRow", endPoint);
|
||||
json.put("pickRow",startPoint);
|
||||
json.put("taskNo",currTaskId);
|
||||
json.put("ideNumber",1);
|
||||
json.put("processNumber",currTask.getPlcValue());
|
||||
String taskJson = JSON.toJSONString(json);
|
||||
String result =null;
|
||||
try {
|
||||
if (vehicleId==1){
|
||||
result = HttpClient.httpPost("http://localhost:8009/rgv1/sendTask", taskJson);
|
||||
}
|
||||
if (vehicleId==2){
|
||||
result = HttpClient.httpPost("http://localhost:8009/rgv2/sendTask", taskJson);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.error(new Date() + "WCS接口超时未响应!");
|
||||
}
|
||||
JSONObject jsonObject = JSON.parseObject(result);
|
||||
int status = Integer.parseInt(String.valueOf(jsonObject.get("msg")));
|
||||
//执行成功,托盘进炉
|
||||
if (true){
|
||||
if (status==1){
|
||||
//更新调度表状态为完成
|
||||
runTask.setUpdateTime(LocalDateTime.now());
|
||||
runTask.setEndTime(LocalDateTime.now());
|
||||
@ -246,15 +313,48 @@ public class AsynRunTaskService extends BaseService {
|
||||
if (vehicleId==1){
|
||||
// TODO: 2022/2/26 获取RGV2当前位置
|
||||
otherNowPoint=1;
|
||||
//两辆小车是否冲突
|
||||
Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, currTask.getStartPosition(), currTask.getTargetPosition(), otherNowPoint);
|
||||
if (conflictBoolean){
|
||||
//若冲突
|
||||
// TODO: 2022/2/26 执行小车移位任务。移位任务完成后再判断是否冲突,移位任务可以直接让小车移位到两端
|
||||
Map<String, Integer> json = new HashMap();
|
||||
//type=1为 入
|
||||
// taskType 4 单移动
|
||||
json.put("taskType", 4);
|
||||
json.put("sendRow", 39);
|
||||
String taskJson = JSON.toJSONString(json);
|
||||
try {
|
||||
HttpClient.httpPost("http://localhost:8009/rgv2/sendTask",taskJson);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.error(new Date() + "WCS接口超时未响应!");
|
||||
//wocket推送到页面
|
||||
return;
|
||||
}
|
||||
}
|
||||
}else {
|
||||
//获取RGV1当前位置
|
||||
otherNowPoint=2;
|
||||
}
|
||||
//两辆小车是否冲突
|
||||
Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, currTask.getStartPosition(), currTask.getTargetPosition(), otherNowPoint);
|
||||
while (conflictBoolean){
|
||||
//若冲突
|
||||
// TODO: 2022/2/26 执行小车移位任务。移位任务完成后再判断是否冲突,移位任务可以直接让小车移位到两端
|
||||
//两辆小车是否冲突
|
||||
Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, currTask.getStartPosition(), currTask.getTargetPosition(), otherNowPoint);
|
||||
if (conflictBoolean){
|
||||
//若冲突
|
||||
// TODO: 2022/2/26 执行小车移位任务。移位任务完成后再判断是否冲突,移位任务可以直接让小车移位到两端
|
||||
Map<String, Integer> json = new HashMap();
|
||||
// taskType 4 单移动
|
||||
json.put("taskType", 4);
|
||||
json.put("sendRow", 1);
|
||||
String taskJson = JSON.toJSONString(json);
|
||||
try {
|
||||
HttpClient.httpPost("http://localhost:8009/rgv1/sendTask",taskJson);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.error(new Date() + "WCS接口超时未响应!");
|
||||
//wocket推送到页面
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
PointInfo pointOfLocation = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, location.getCode()));
|
||||
//新建一条执行任务的关系表存放任务执行信息,终点为缓存区空闲库位
|
||||
@ -282,8 +382,32 @@ public class AsynRunTaskService extends BaseService {
|
||||
setCommonField(inStockInfo);
|
||||
inStockInfoServiceBiz.save(inStockInfo);
|
||||
// TODO: 2021/12/14 调用车辆填入起终点,得到车辆执行结果,填入任务号(待确认)
|
||||
|
||||
if (true){
|
||||
Long startPoint = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, runTask.getStartPosition())).getCode();
|
||||
Long endPoint = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, runTask.getEndPosition())).getCode();
|
||||
Map<String, Object> json = new HashMap();
|
||||
// taskType 1 搬运
|
||||
json.put("taskType", 1);
|
||||
json.put("sendRow", endPoint);
|
||||
json.put("pickRow",startPoint);
|
||||
json.put("taskNo",currTaskId);
|
||||
json.put("ideNumber",1);
|
||||
json.put("processNumber",currTask.getPlcValue());
|
||||
String taskJson = JSON.toJSONString(json);
|
||||
String result =null;
|
||||
try {
|
||||
if (vehicleId==1){
|
||||
result = HttpClient.httpPost("http://localhost:8009/rgv1/sendTask", taskJson);
|
||||
}
|
||||
if (vehicleId==2){
|
||||
result = HttpClient.httpPost("http://localhost:8009/rgv2/sendTask", taskJson);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.error(new Date() + "WCS接口超时未响应!");
|
||||
}
|
||||
JSONObject jsonObject = JSON.parseObject(result);
|
||||
int status = Integer.parseInt(String.valueOf(jsonObject.get("msg")));
|
||||
if (status==1){
|
||||
//更新关系表状态为完成
|
||||
runTask.setUpdateTime(LocalDateTime.now());
|
||||
runTask.setStatus(2);
|
||||
@ -317,15 +441,48 @@ public class AsynRunTaskService extends BaseService {
|
||||
if (vehicleId==1){
|
||||
// TODO: 2022/2/26 获取RGV2当前位置
|
||||
otherNowPoint=1;
|
||||
//两辆小车是否冲突
|
||||
Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, currTask.getStartPosition(), currTask.getTargetPosition(), otherNowPoint);
|
||||
if (conflictBoolean){
|
||||
//若冲突
|
||||
// TODO: 2022/2/26 执行小车移位任务。移位任务完成后再判断是否冲突,移位任务可以直接让小车移位到两端
|
||||
Map<String, Integer> json = new HashMap();
|
||||
//type=1为 入
|
||||
// taskType 4 单移动
|
||||
json.put("taskType", 4);
|
||||
json.put("sendRow", 39);
|
||||
String taskJson = JSON.toJSONString(json);
|
||||
try {
|
||||
HttpClient.httpPost("http://localhost:8009/rgv2/sendTask",taskJson);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.error(new Date() + "WCS接口超时未响应!");
|
||||
//wocket推送到页面
|
||||
return;
|
||||
}
|
||||
}
|
||||
}else {
|
||||
//获取RGV1当前位置
|
||||
otherNowPoint=2;
|
||||
}
|
||||
//两辆小车是否冲突
|
||||
Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, currTask.getStartPosition(), currTask.getTargetPosition(), otherNowPoint);
|
||||
while (conflictBoolean){
|
||||
//若冲突
|
||||
// TODO: 2022/2/26 执行小车移位任务。移位任务完成后再判断是否冲突,移位任务可以直接让小车移位到两端
|
||||
//两辆小车是否冲突
|
||||
Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, currTask.getStartPosition(), currTask.getTargetPosition(), otherNowPoint);
|
||||
if (conflictBoolean){
|
||||
//若冲突
|
||||
// TODO: 2022/2/26 执行小车移位任务。移位任务完成后再判断是否冲突,移位任务可以直接让小车移位到两端
|
||||
Map<String, Integer> json = new HashMap();
|
||||
// taskType 4 单移动
|
||||
json.put("taskType", 4);
|
||||
json.put("sendRow", 1);
|
||||
String taskJson = JSON.toJSONString(json);
|
||||
try {
|
||||
HttpClient.httpPost("http://localhost:8009/rgv1/sendTask",taskJson);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.error(new Date() + "WCS接口超时未响应!");
|
||||
//wocket推送到页面
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
// TODO: 2021/12/28 location排序
|
||||
Location location = locationServiceBiz.list(new QueryWrapper<Location>()
|
||||
@ -366,7 +523,32 @@ public class AsynRunTaskService extends BaseService {
|
||||
setCommonField(inStockInfo);
|
||||
inStockInfoServiceBiz.save(inStockInfo);
|
||||
// TODO: 2021/12/14 调用车辆填入起终点,得到车辆执行结果,填入任务号(待确认)
|
||||
if (true){
|
||||
Long startPoint = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, runTask.getStartPosition())).getCode();
|
||||
Long endPoint = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, runTask.getEndPosition())).getCode();
|
||||
Map<String, Object> json = new HashMap();
|
||||
// taskType 1 搬运
|
||||
json.put("taskType", 1);
|
||||
json.put("sendRow", endPoint);
|
||||
json.put("pickRow",startPoint);
|
||||
json.put("taskNo",currTaskId);
|
||||
json.put("ideNumber",1);
|
||||
json.put("processNumber",currTask.getPlcValue());
|
||||
String taskJson = JSON.toJSONString(json);
|
||||
String result =null;
|
||||
try {
|
||||
if (vehicleId==1){
|
||||
result = HttpClient.httpPost("http://localhost:8009/rgv1/sendTask", taskJson);
|
||||
}
|
||||
if (vehicleId==2){
|
||||
result = HttpClient.httpPost("http://localhost:8009/rgv2/sendTask", taskJson);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.error(new Date() + "WCS接口超时未响应!");
|
||||
}
|
||||
JSONObject jsonObject = JSON.parseObject(result);
|
||||
int status = Integer.parseInt(String.valueOf(jsonObject.get("msg")));
|
||||
if (status==1){
|
||||
//更新关系表状态为完成
|
||||
runTask.setUpdateTime(LocalDateTime.now());
|
||||
runTask.setStatus(2);
|
||||
@ -394,9 +576,14 @@ public class AsynRunTaskService extends BaseService {
|
||||
}
|
||||
//出库。起点为缓存区库位,终点为提升台
|
||||
@Async("asyncServiceExecutor")
|
||||
public void asynRunOutStock(Long runTaskId,Long locationId){
|
||||
//修改调度任务状态
|
||||
RunTask runTask = runTaskServiceBiz.getById(runTaskId);
|
||||
public void asynRunOutStock(Long locationId){
|
||||
RunTask runTask=new RunTask();
|
||||
setCommonField(runTask);
|
||||
//runTask.setVehicleId(vehicleId);
|
||||
runTask.setBeginTime(LocalDateTime.now());
|
||||
//runTask.setStartPosition(currTask.getOutStartPosition());
|
||||
//runTask.setEndPosition(currTask.getOutTargetPosition());
|
||||
runTaskServiceBiz.save(runTask);
|
||||
//修改缓存区状态
|
||||
InStockInfo inStockInfo = inStockInfoServiceBiz.getOne(new QueryWrapper<InStockInfo>()
|
||||
.eq("location_id", locationId));
|
||||
|
@ -51,6 +51,8 @@ public class RunTaskUtils {
|
||||
private AutoExeTaskServiceBiz autoExeTaskServiceBiz;
|
||||
@Resource
|
||||
private KilnInfoServiceBiz kilnInfoServiceBiz;
|
||||
@Resource
|
||||
private PlcNameSpaceServiceBiz plcNameSpaceServiceBiz;
|
||||
|
||||
/**
|
||||
* 进炉加工
|
||||
@ -58,7 +60,7 @@ public class RunTaskUtils {
|
||||
* @return
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
public R runTaskForInKiln(Long currTaskId) throws InterruptedException {
|
||||
public R runTaskForInKiln(Long currTaskId) throws InterruptedException{
|
||||
CurrTask currTask = currTaskServiceBiz.getById(currTaskId);
|
||||
//起点,起点和终点是液压台code、窑炉code、缓存区code
|
||||
String startPosition = currTask.getStartPosition();
|
||||
@ -90,15 +92,19 @@ public class RunTaskUtils {
|
||||
//有小车在运行,提示当前有车辆在运行,请稍后
|
||||
return R.failed("当前轨道有RGV车辆在运动,请等待当前RGV车辆执行完毕再执行任务!");
|
||||
}
|
||||
// TODO: 2022/2/27 传入任务id,起始点,若终点是窑炉,获取窑炉状态
|
||||
int kilnStatus = 1;
|
||||
|
||||
// TODO: 2022/2/27 传入任务id,起始点,若终点是窑炉,获取窑炉状态,能放两坨货的窑炉怎么判定状态?
|
||||
KilnInfo kilnInfo = kilnInfoServiceBiz.getById(currTask.getKilnId());
|
||||
String kilnNamePlace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
|
||||
.eq(PlcNameSpace.EQ_TYPE, 0)
|
||||
.eq(PlcNameSpace.EQ_ID, kilnInfo.getId())).getName();
|
||||
String result = readPlcToString(kilnNamePlace, "AllowIn");
|
||||
Boolean resultBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
|
||||
//窑炉状态为不可用
|
||||
if (kilnStatus == 0) {
|
||||
if (kilnInfo.getStatus() == 1) {
|
||||
return R.failed("目标窑炉不可用!");
|
||||
}
|
||||
//窑炉可用未满
|
||||
if (kilnStatus==1){
|
||||
if (resultBoolean){
|
||||
//计算出路径最短的车辆id
|
||||
Long vehicleId = taskDistanceUtils.chooseVehicle(currTask.getStartPosition(), currTask.getTargetPosition());
|
||||
//占用车辆
|
||||
@ -115,7 +121,7 @@ public class RunTaskUtils {
|
||||
return R.ok("操作成功,任务已开始执行。");
|
||||
}
|
||||
//窑炉已满
|
||||
if (kilnStatus==2){
|
||||
if (resultBoolean){
|
||||
//查询缓存区库位是否已满
|
||||
int count = locationServiceBiz.count(new QueryWrapper<Location>()
|
||||
.eq(Location.STATUS, 0)
|
||||
@ -249,4 +255,26 @@ public class RunTaskUtils {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取变量值
|
||||
* @param nameSpace nameSpace前缀
|
||||
* @param variableName 变量名称
|
||||
* @return result字符串
|
||||
*/
|
||||
private String readPlcToString(String nameSpace, String variableName){
|
||||
String identifier=nameSpace.concat(variableName);
|
||||
Map<String, Object> json = new HashMap();
|
||||
json.put("nameSpace", 6);
|
||||
json.put("plcName", "plc1");
|
||||
json.put("identifier",identifier);
|
||||
String result = null;
|
||||
try {
|
||||
result = HttpClient.httpPost("http://localhost:8009/opcua/read", JSON.toJSONString(json));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.info("readPLC: "+identifier+" 的值失败");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -89,9 +89,19 @@ public class TaskDistanceUtils {
|
||||
//小车当前位置、起点、终点,找出最大最小值
|
||||
int min=(((nowPoint<start)?nowPoint:start)<end)?((nowPoint<start)?nowPoint:start):end;
|
||||
int max=(((nowPoint>start)?nowPoint:start)>end)?((nowPoint>start)?nowPoint:start):end;
|
||||
//另一辆小车在在小车路径上比如冲突,不在小车路径上时判定一下安全距离(4米)
|
||||
if (otherNowPoint>=min&&otherNowPoint<=max){
|
||||
return true;
|
||||
}else {
|
||||
Double maxDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.CODE, max)).getDistance();
|
||||
Double minDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.CODE, min)).getDistance();
|
||||
Double otherVehicleDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.CODE, otherNowPoint)).getDistance();
|
||||
if (Math.abs(otherVehicleDistance-maxDistance)<4){
|
||||
return true;
|
||||
}
|
||||
if (Math.abs(otherVehicleDistance-minDistance)<4){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -56,6 +56,12 @@ public class CurrTaskMainQueryVo extends BaseVo implements PageVo.ConvertVo {
|
||||
*/
|
||||
@ApiModelProperty("任务类型")
|
||||
private Integer taskType;
|
||||
|
||||
/**
|
||||
* 是否自动执行: 0手动,1自动,如果是自动任务这里要监控进出和到缓存区的调度任务
|
||||
*/
|
||||
@ApiModelProperty("是否自动执行:手动,1自动")
|
||||
private Integer is_auto;
|
||||
/**
|
||||
* 开始位置
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user