opt:增加任务及点位消息通知

This commit is contained in:
2024-12-20 23:32:51 +08:00
parent 84ed95bc24
commit 3ed4f5fe10
15 changed files with 81 additions and 88 deletions

View File

@@ -192,9 +192,9 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService {
siteDeviceDriver.writing(10); siteDeviceDriver.writing(10);
siteDeviceDriver.writing(10); siteDeviceDriver.writing(10);
siteDeviceDriver.writing(10); siteDeviceDriver.writing(10);
log.error("tofix子母车取货完成离开第1次写入{}输送线信号成功!",siteDeviceDriver.getDeviceCode()); //log.error("tofix子母车取货完成离开第1次写入{}输送线信号成功!",siteDeviceDriver.getDeviceCode());
}catch(Exception e){ }catch(Exception e){
log.error("tofix子母车取货完成离开第1次写入{}信号失败:{}{}",siteDeviceDriver.getDeviceCode(),e,e.getMessage()); //log.error("tofix子母车取货完成离开第1次写入{}信号失败:{}{}",siteDeviceDriver.getDeviceCode(),e,e.getMessage());
} }
} }
} }

View File

@@ -34,7 +34,7 @@ public class ItemProtocol {
public int getOpcIntegerValue(String protocol) { public int getOpcIntegerValue(String protocol) {
Integer value = this.driver.getIntegeregerValue(protocol); Integer value = this.driver.getIntegeregerValue(protocol);
if (value == null) { if (value == null) {
log.error("读取错误!"); //log.error("读取错误!");
} else { } else {
return value; return value;
} }

View File

@@ -221,6 +221,10 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
SiteDeviceDriver siteDeviceDriver = (SiteDeviceDriver) device.getDeviceDriver(); SiteDeviceDriver siteDeviceDriver = (SiteDeviceDriver) device.getDeviceDriver();
//输送线对接增加取货完成写入确认信号10 //输送线对接增加取货完成写入确认信号10
siteDeviceDriver.writing(10); siteDeviceDriver.writing(10);
siteDeviceDriver.writing(10);
siteDeviceDriver.writing(10);
siteDeviceDriver.writing(10);
siteDeviceDriver.writing(10);
} }
//校验agv上报站点编号与指令起始点相同 //校验agv上报站点编号与指令起始点相同
if (ObjectUtil.isEmpty(inst)) { if (ObjectUtil.isEmpty(inst)) {

View File

@@ -51,7 +51,7 @@ public class ItemProtocol {
public int getOpcIntegerValue(String protocol) { public int getOpcIntegerValue(String protocol) {
Integer value = this.driver.getIntegeregerValue(protocol); Integer value = this.driver.getIntegeregerValue(protocol);
if (value == null) { if (value == null) {
log.error("读取错误!"); //log.error("读取错误!");
} else { } else {
return value; return value;
} }

View File

@@ -11,7 +11,6 @@ import org.nl.acs.device_driver.DeviceDriver;
import org.nl.acs.device_driver.RouteableDeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver;
import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver;
import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver;
import org.nl.acs.ext.wms.data.BaseRequest;
import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.AcsToWmsService;
import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.domain.Instruction;
import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.InstructionService;
@@ -24,7 +23,6 @@ import org.openscada.opc.lib.da.Server;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@@ -221,20 +219,24 @@ public class BaoshijianSiteDeviceDriver extends AbstractOpcDeviceDriver implemen
this.writing("x7", 0); this.writing("x7", 0);
} else if (x2 != last_x2 && x2 == 1 && !out && x5==0 && x7==0) { } else if (x2 != last_x2 && x2 == 1 && !out && x5==0 && x7==0) {
//DJW02申请空盘 //DJW02申请空盘
mode2 =1; mode2 = 1;
out = false; out = false;
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
String device_code = this.device_code + "DJW02"; String device_code = this.device_code + "DJW02";
jsonObject.put("device_code", device_code); jsonObject.put("device_code", device_code);
jsonObject.put("requestDate", new Date()); jsonObject.put("requestDate", new Date());
jsonObject.put("vehicle_type",2); jsonObject.put("vehicle_type", 2);
jsonObject.put("requestNo", IdUtil.simpleUUID()); jsonObject.put("requestNo", IdUtil.simpleUUID());
jsonObject.put("request_method_code", "TBXQKTask"); jsonObject.put("request_method_code", "TBXQKTask");
String result=acsToWmsService.applyTaskToWms(jsonObject); //log.error("tofix涂板线呼叫空架BaoshijianSiteDeviceDriver" + device_code + "信号为" + mode + ":" + "x2" + ":" + x2 + ",满足请求条件,发出请求空架任务");
String result = acsToWmsService.applyTaskToWms(jsonObject);
JSONObject res_jo = JSONObject.parseObject(result); JSONObject res_jo = JSONObject.parseObject(result);
if (res_jo.getString("status").equals("200")){ if ("200".equals(res_jo.getString("status"))) {
// log.error("tofix涂板线呼叫空架BaoshijianSiteDeviceDriver" + device_code + "信号为" + mode + ":" + "x2" + ":" + x2 + ",请求空架任务成功!");
this.writing("x5", 1); this.writing("x5", 1);
out = true; out = true;
} else {
log.error("tofix涂板线呼叫空架BaoshijianSiteDeviceDriver" + device_code + "信号为" + mode + ":" + "x2" + ":" + x2 + ",请求空架任务失败!");
} }
} }

View File

@@ -224,21 +224,15 @@ public class SiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceD
break; break;
case 6: case 6:
//空托盘出库 //空托盘出库
if (move == 1 && !requireSucess) { log.info("tofix输送线SiteDeviceDriver" + device_code + "信号为" + mode + ":" + move + ":" + requireSucess + "已无此信号协议,需输送线去掉");
apply(6);
}
break; break;
case 7: case 7:
//涂板线申请空盘 //涂板线申请空盘
if (move == 0 && !requireSucess) { log.info("tofix输送线SiteDeviceDriver" + device_code + "信号为" + mode + ":" + move + ":" + requireSucess + "已无此信号协议,需输送线去掉");
apply(7);
}
break; break;
case 8: case 8:
//空托盘出库 //空托盘出库
if (move == 1 && !requireSucess) { log.info("tofix输送线SiteDeviceDriver" + device_code + "信号为" + mode + ":" + move + ":" + requireSucess + "已无此信号协议,需输送线去掉");
apply(8);
}
break; break;
} }
switch (flag) { switch (flag) {
@@ -250,9 +244,7 @@ public class SiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceD
case 2: case 2:
writing(3); writing(3);
return; return;
} }
} }
last_mode = mode; last_mode = mode;
last_error = error; last_error = error;
@@ -412,31 +404,21 @@ public class SiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceD
jsonObject.put("requestDate", new Date()); jsonObject.put("requestDate", new Date());
jsonObject.put("vehicle_type", this.pallet_type); jsonObject.put("vehicle_type", this.pallet_type);
jsonObject.put("requestNo", IdUtil.simpleUUID()); jsonObject.put("requestNo", IdUtil.simpleUUID());
switch (type) { if (type == 5) {
case 5: if (device_code.startsWith("ZCSSX")) {
if (device_code.startsWith("ZCSSX")) { log.error("tofix输送线呼叫空架SiteDeviceDriver" + device_code + "信号为" + mode + ":" + move + ":" + requireSucess + ",满足请求条件,发出请求空架任务");
log.info("tofix输送线SiteDeviceDriver" + device_code + "信号为" + mode + ":" + move + ":" + requireSucess + ",满足请求条件,发出请求空架任务"); jsonObject.put("request_method_code", "KJQKTask");
jsonObject.put("request_method_code", "KJQKTask"); }
} else {
jsonObject.put("request_method_code", "TBXQKTask");
}
break;
case 7:
jsonObject.put("request_method_code", "TBXQKTask");
break;
case 8:
jsonObject.put("request_method_code", "KJSKTask");
break;
} }
String result = acsToWmsService.applyTaskToWms(jsonObject); String result = acsToWmsService.applyTaskToWms(jsonObject);
JSONObject res_jo = JSONObject.parseObject(result); JSONObject res_jo = JSONObject.parseObject(result);
// if (StrUtil.equals(res_jo.getString("code"), "200")) { if (StrUtil.equals(res_jo.getString("code"), "200")) {
this.writing(type); this.writing(type);
this.setRequireSucess(true); this.setRequireSucess(true);
log.info("acs申请任务", this.device_code, "任务申请成功!"); log.info("tofix输送线呼叫空架SiteDeviceDriver" + device_code + "信号为" + mode + ":" + move + ":" + requireSucess + ",申请空架任务成功");
// }else{ } else {
// this.writing(99); log.info("tofix输送线呼叫空架SiteDeviceDriver" + device_code + "信号为" + mode + ":" + move + ":" + requireSucess + ",申请空架任务失败!" + res_jo.getString("message"));
// } }
return true; return true;
} }
} }

View File

@@ -84,9 +84,9 @@ public class QueryZDAgvTaskStatus {
siteDeviceDriver.writing(10); siteDeviceDriver.writing(10);
siteDeviceDriver.writing(10); siteDeviceDriver.writing(10);
siteDeviceDriver.writing(10); siteDeviceDriver.writing(10);
log.error("tofix子母车反馈任务完成第2次写入{}输送线信号成功!",siteDeviceDriver.getDeviceCode()); //log.error("tofix子母车反馈任务完成第2次写入{}输送线信号成功!",siteDeviceDriver.getDeviceCode());
}catch(Exception e){ }catch(Exception e){
log.error("tofix子母车反馈任务完成第2次写入检测站点驱动信号失败{}{}",e,e.getMessage()); //log.error("tofix子母车反馈任务完成第2次写入检测站点驱动信号失败{}{}",e,e.getMessage());
} }
} }
} }
@@ -120,7 +120,7 @@ public class QueryZDAgvTaskStatus {
} }
} }
} catch (Exception e){ } catch (Exception e){
log.error("自动线程开始查询浙大AGV任务状态失败失败原因:{}", e.getMessage()); //log.error("自动线程开始查询浙大AGV任务状态失败失败原因:{}", e.getMessage());
} }
} }

View File

@@ -246,7 +246,7 @@ public class SyncDeviceStatus {
redisUtils.set("agv", agv); redisUtils.set("agv", agv);
// log.trace("自动上报驱动状态,完毕耗时{}", System.currentTimeMillis() - startTime); // log.trace("自动上报驱动状态,完毕耗时{}", System.currentTimeMillis() - startTime);
} catch (Exception e) { } catch (Exception e) {
log.error("tofix自动线程开始查询AGV设备自动上报驱动状态失败{}{}", e, e.getMessage()); //log.error("tofix自动线程开始查询AGV设备自动上报驱动状态失败{}{}", e, e.getMessage());
} }
} }
} }

View File

@@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.common.enums.NoticeEnum; import org.nl.common.enums.NoticeEnum;
@@ -18,12 +17,11 @@ import org.nl.common.exception.BadRequestException;
import org.nl.common.mnt.websocket.MsgType; import org.nl.common.mnt.websocket.MsgType;
import org.nl.common.mnt.websocket.SocketMsg; import org.nl.common.mnt.websocket.SocketMsg;
import org.nl.common.mnt.websocket.WebSocketServer; import org.nl.common.mnt.websocket.WebSocketServer;
import org.nl.common.utils.SecurityUtils;
import org.nl.system.service.dict.dao.Dict; import org.nl.system.service.dict.dao.Dict;
import org.nl.system.service.dict.dao.mapper.SysDictMapper; import org.nl.system.service.dict.dao.mapper.SysDictMapper;
import org.nl.system.service.notice.ISysNoticeService; import org.nl.system.service.notice.ISysNoticeService;
import org.nl.system.service.notice.dao.mapper.SysNoticeMapper;
import org.nl.system.service.notice.dao.SysNotice; import org.nl.system.service.notice.dao.SysNotice;
import org.nl.system.service.notice.dao.mapper.SysNoticeMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -33,7 +31,6 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
/** /**
* @description 服务实现 * @description 服务实现
@@ -156,19 +153,21 @@ public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice
@Override @Override
public void createNotice(String msg, String title, String type) { public void createNotice(String msg, String title, String type) {
log.info("创建消息通知-信息:{}, 标题:{}, 类型:{}", msg, title, type); log.info("创建消息通知-信息:{}, 标题:{}, 类型:{}", msg, title, type);
// 获取标题相同的信息 String dealStatus = NoticeEnum.DEAL_STATUS_NO.getValue();
List<SysNotice> sysNotices = sysNoticeMapper.selectList(new LambdaQueryWrapper<SysNotice>().eq(SysNotice::getNotice_title, title)); String haveRead = NoticeEnum.HAVE_READ_OFF.getValue();
if (ObjectUtil.isNotEmpty(sysNotices)) return; if (title.contains("LTX")||title.contains("ZCS")) {
dealStatus = NoticeEnum.DEAL_STATUS_NO_NEED.getValue();
haveRead = NoticeEnum.HAVE_READ_ON.getValue();
}
SysNotice noticeDto = SysNotice.builder() SysNotice noticeDto = SysNotice.builder()
.notice_id(IdUtil.getSnowflake(1,1).nextIdStr()) .notice_id(IdUtil.getSnowflake(1, 1).nextIdStr())
.notice_type(type) .notice_type(type)
.notice_title(title) .notice_title(title)
.notice_content(msg) .notice_content(msg)
.deal_status(NoticeEnum.DEAL_STATUS_NO.getValue()) .deal_status(dealStatus)
.have_read(NoticeEnum.HAVE_READ_OFF.getValue()) .have_read(haveRead)
.create_time(DateUtil.now()) .create_time(DateUtil.now())
.build(); .build();
// 插入
sysNoticeMapper.insert(noticeDto); sysNoticeMapper.insert(noticeDto);
JSONObject res = new JSONObject(); JSONObject res = new JSONObject();
res.put("data", "notice_message_update"); res.put("data", "notice_message_update");

View File

@@ -34,11 +34,8 @@ import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
/** /**
* @Author: lyd * @Author: lyd
@@ -73,6 +70,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
private CockpitMapper cockpitMapper; private CockpitMapper cockpitMapper;
@Autowired @Autowired
private GHCMLTask ghcmlTask; private GHCMLTask ghcmlTask;
/** /**
* 初始化反射方法 * 初始化反射方法
*/ */
@@ -116,13 +114,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
interactRecordService.saveRecord(requestMethodName, param, result, GeneralDefinition.ACS_LMS); interactRecordService.saveRecord(requestMethodName, param, result, GeneralDefinition.ACS_LMS);
} catch (Exception e) { } catch (Exception e) {
String message = e.getMessage(); String message = e.getMessage();
log.error("ACS请求LMS出现错误,acsApply请求参数为:{},错误信息为:{},{}",param,e, message); log.error("ACS请求LMS出现错误,acsApply请求参数为:{},错误信息为:{},{}", param, e, message);
result.setCode(HttpStatus.HTTP_BAD_REQUEST); result.setCode(HttpStatus.HTTP_BAD_REQUEST);
result.setMessage(message); result.setMessage(message);
result.setRequestNo(requestNo); result.setRequestNo(requestNo);
String title = "acsApply: " + param.getString("request_method_code");
// 消息通知 // 消息通知
noticeService.createNotice("异常信息:" + message, "acsApply: " + param.getString("request_medthod_code"), noticeService.createNotice("异常信息:" + message, title, NoticeTypeEnum.EXCEPTION.getCode());
NoticeTypeEnum.EXCEPTION.getCode());
} }
return result; return result;
} }
@@ -194,6 +192,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
switch (type) { switch (type) {
case 1: case 1:
//反馈设备状态,将对应固化室修改为传入状态 //反馈设备状态,将对应固化室修改为传入状态
List<String> deviceCodeList = new ArrayList<>(Arrays.asList("ZCSSX010107", "ZCSSX010207", "ZCSSX030101", "ZCSSX030201", "ZCSSX020101", "ZCSSX020201",
"ZCSSX030107", "ZCSSX030207", "ZCSSX020107", "ZCSSX020207", "LTX01DJW02", "LTXD2JW02", "LTXD03JW02", "LTXD04JW02", "LTXD05JW02", "LTXD06JW02"));
if (deviceCodeList.contains(device_code)) {
String msg = device_code + "的光电反馈变更:"+pointService.getById(device_code).getPoint_status()+" -> " + state;
noticeService.createNotice(msg, device_code, NoticeTypeEnum.NOTIFICATION.getCode());
}
pointMapper.updatePointStatus(device_code, state); pointMapper.updatePointStatus(device_code, state);
break; break;
case 2: case 2:
@@ -203,8 +207,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
case 3: case 3:
//设备反馈故障 //设备反馈故障
try { try {
SchBasePoint schBasePoint=pointService.getById(device_code); SchBasePoint schBasePoint = pointService.getById(device_code);
if(ObjectUtil.isNotEmpty(schBasePoint)) { if (ObjectUtil.isNotEmpty(schBasePoint)) {
if ("0".equals(current_status)) { if ("0".equals(current_status)) {
schBasePoint.setIs_used(true); schBasePoint.setIs_used(true);
pointService.update(schBasePoint); pointService.update(schBasePoint);

View File

@@ -111,7 +111,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
@Override @Override
public SchBaseVehiclematerialgroup getVehicleGroupInfo(String vehicleCode, String vehicleType, String status) { public SchBaseVehiclematerialgroup getVehicleGroupInfo(String vehicleCode, String vehicleType, String status) {
LambdaQueryWrapper<SchBaseVehiclematerialgroup> lambda = new QueryWrapper<SchBaseVehiclematerialgroup>().lambda(); LambdaQueryWrapper<SchBaseVehiclematerialgroup> lambda = new QueryWrapper<SchBaseVehiclematerialgroup>().lambda();
lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode) lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode)
// .eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType) // .eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType)
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, status) .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, status)
.eq(SchBaseVehiclematerialgroup::getIs_delete, false); .eq(SchBaseVehiclematerialgroup::getIs_delete, false);

View File

@@ -3,7 +3,6 @@ package org.nl.wms.sch.task_manage;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
@@ -224,9 +223,8 @@ public abstract class AbstractTask {
// 获取执行中的任务 // 获取执行中的任务
List<SchBaseTask> unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig( List<SchBaseTask> unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig(
taskConfig.getConfig_code(), apply_point_code, taskConfig.getTask_direction()); taskConfig.getConfig_code(), apply_point_code, taskConfig.getTask_direction());
Assert.isFalse(unFinishTasksByTaskConfig.size() >= tcmn, Assert.isFalse(unFinishTasksByTaskConfig.size() >= tcmn,
"点位申请的任务未完成数已超过上限,无法申请任务"); "点位" + apply_point_code + ",已存在未完成任务类型为" + taskConfig.getConfig_code() + "的任务,申请失败!请检查!");
// 获取对接位点位对象 // 获取对接位点位对象
SchBasePoint pointObj = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>() SchBasePoint pointObj = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_code, apply_point_code)); .eq(SchBasePoint::getPoint_code, apply_point_code));

View File

@@ -168,7 +168,7 @@ public class GHCMLTask extends AbstractTask {
if (ObjectUtil.isNotEmpty(temp)) { if (ObjectUtil.isNotEmpty(temp)) {
return temp; return temp;
} }
// 如果没有找到。或者分配等待点失败,就选择一个空列存放 //如果没有找到。或者分配等待点失败,就选择一个空列存放
return autoMapper.getZCEmptyMaterialPoint(nextRegionStr.get(0), jsonObject.getString("material_id")); return autoMapper.getZCEmptyMaterialPoint(nextRegionStr.get(0), jsonObject.getString("material_id"));
} }

View File

@@ -64,15 +64,16 @@ public class KJQKTask extends AbstractTask {
JSONObject extGroupData = JSONObject.parseObject(requestParam); JSONObject extGroupData = JSONObject.parseObject(requestParam);
// 根据对接位查找对应的载具类型 // 根据对接位查找对应的载具类型
SchBasePoint endPoint = pointService.getById(task.getPoint_code2()); SchBasePoint endPoint = pointService.getById(task.getPoint_code2());
log.error("tofix__KJQKTask_目标点位:" + endPoint.getPoint_code() + ",点位状态为:"+endPoint.getPoint_status()); log.error("tofix__KJQKTask_目标点位" + endPoint.getPoint_code() + ",点位状态为:"+endPoint.getPoint_status());
if (!endPoint.getPoint_status().equals(PointStatusEnum.EMPTY_POINT.getCode())) { if (!endPoint.getPoint_status().equals(PointStatusEnum.EMPTY_POINT.getCode())) {
log.error("tofix__KJQKTask_目标点位:" + endPoint.getPoint_code() + ",点位状态不为无货,不满足补空架任务生成条件"); log.error("tofix__KJQKTask_目标点位" + endPoint.getPoint_code() + "申请KJQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!");
throw new BadRequestException("目标点位:" + endPoint.getPoint_code() + ",点位状态不为无货,不满足补空架任务生成条件"); throw new BadRequestException("点位" + endPoint.getPoint_code() + "申请KJQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!");
} }
extGroupData.put("vehicle_type", endPoint.getCan_vehicle_type()); extGroupData.put("vehicle_type", endPoint.getCan_vehicle_type());
SchBasePoint point = findStartPoint(startRegionStr, extGroupData); SchBasePoint point = findStartPoint(startRegionStr, extGroupData);
if (ObjectUtil.isEmpty(point)) { if (ObjectUtil.isEmpty(point)) {
throw new BadRequestException("未找到所需点位!"); log.error("tofix__KJQKTask_点位" + endPoint.getPoint_code() + "未找到取空架起点!请检查ZCSSX010107,ZCSSX010207点位状态是否为2有货,或这些起点已存在未完成的KJQKTask任务");
throw new BadRequestException("点位:" + endPoint.getPoint_code() + "未找到取空架起点!请检查ZCSSX010107,ZCSSX010207点位状态是否为2有货,或这些起点已存在未完成的KJQKTask任务");
} }
// 设置终点并修改创建成功状态 // 设置终点并修改创建成功状态
task.setPoint_code1(point.getPoint_code()); task.setPoint_code1(point.getPoint_code());
@@ -80,7 +81,6 @@ public class KJQKTask extends AbstractTask {
task.setRemark(""); task.setRemark("");
task.setTask_status(TaskStatus.CREATED.getCode()); task.setTask_status(TaskStatus.CREATED.getCode());
taskService.save(task); taskService.save(task);
log.error("tofix_KJQKTask+" + task.getPoint_code1() + ":" + task.getPoint_code2() + "创建任务成功!");
point.setIng_task_code(task.getTask_code()); point.setIng_task_code(task.getTask_code());
PointUtils.setUpdateByAcs(point); PointUtils.setUpdateByAcs(point);
pointService.updateById(point); pointService.updateById(point);
@@ -96,14 +96,13 @@ public class KJQKTask extends AbstractTask {
// todo:不考虑等待点 // todo:不考虑等待点
LambdaQueryWrapper<SchBasePoint> lam = new QueryWrapper<SchBasePoint>().lambda(); LambdaQueryWrapper<SchBasePoint> lam = new QueryWrapper<SchBasePoint>().lambda();
lam.in(SchBasePoint::getRegion_code, startRegionStr) lam.in(SchBasePoint::getRegion_code, startRegionStr)
.eq(SchBasePoint::getVehicle_type, extGroupData.getString("vehicle_type")) .eq(SchBasePoint::getCan_material_type, "AGV")
.eq(SchBasePoint::getIs_used, true) .eq(SchBasePoint::getIs_used, true)
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL有数据表示锁住 .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL有数据表示锁住
.or() .or()
.eq(SchBasePoint::getIng_task_code, "")) .eq(SchBasePoint::getIng_task_code, ""))
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode()) .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
.orderByAsc(SchBasePoint::getCol_num) .orderByAsc(SchBasePoint::getPoint_code);
.orderByAsc(SchBasePoint::getRow_num);
List<SchBasePoint> list = pointService.list(lam); List<SchBasePoint> list = pointService.list(lam);
return list.size() > 0 ? list.get(0) : null; return list.size() > 0 ? list.get(0) : null;
} }

View File

@@ -100,19 +100,23 @@ public class TBXQKTask extends AbstractTask {
String requestParam = task.getRequest_param(); String requestParam = task.getRequest_param();
JSONObject extGroupData = JSONObject.parseObject(requestParam); JSONObject extGroupData = JSONObject.parseObject(requestParam);
// 根据对接位查找对应的载具类型 // 根据对接位查找对应的载具类型
SchBasePoint startPoint = pointService.getById(task.getPoint_code2()); SchBasePoint endPoint = pointService.getById(task.getPoint_code2());
extGroupData.put("vehicle_type", startPoint.getCan_vehicle_type()); if (!endPoint.getPoint_status().equals(PointStatusEnum.EMPTY_POINT.getCode())) {
log.error("tofix__TBXQKTask_目标点位" + endPoint.getPoint_code() + "申请TBXQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!");
throw new BadRequestException("点位" + endPoint.getPoint_code() + "申请TBXQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!");
}
extGroupData.put("vehicle_type", endPoint.getCan_vehicle_type());
SchBasePoint point = findStartPoint(startRegionStr, extGroupData); SchBasePoint point = findStartPoint(startRegionStr, extGroupData);
if (ObjectUtil.isEmpty(point)) { if (ObjectUtil.isEmpty(point)) {
throw new BadRequestException("未找到所需点位!"); log.error("tofix__TBXQKTask_点位" + endPoint.getPoint_code() + "未找到取空架起点!请检查起点ZCSSX020107,ZCSSX020207,ZCSSX030107,ZCSSX030207点位状态是否为2有货,或这些起点已存在未完成的TBXQKTask任务");
throw new BadRequestException("点位" + endPoint.getPoint_code() + "未找到取空架起点!请检查起点ZCSSX020107,ZCSSX020207,ZCSSX030107,ZCSSX030207点位状态是否为2有货,或这些起点已存在未完成的TBXQKTask任务");
} }
// 设置终点并修改创建成功状态 // 设置终点并修改创建成功状态
task.setPoint_code1(point.getPoint_code()); task.setPoint_code1(point.getPoint_code());
task.setVehicle_type(startPoint.getCan_vehicle_type()); task.setVehicle_type(endPoint.getCan_vehicle_type());
task.setRemark(""); task.setRemark("");
task.setTask_status(TaskStatus.CREATED.getCode()); task.setTask_status(TaskStatus.CREATED.getCode());
taskService.save(task); taskService.save(task);
point.setIng_task_code(task.getTask_code()); point.setIng_task_code(task.getTask_code());
PointUtils.setUpdateByAcs(point); PointUtils.setUpdateByAcs(point);
pointService.updateById(point); pointService.updateById(point);
@@ -130,14 +134,15 @@ public class TBXQKTask extends AbstractTask {
lam.in(SchBasePoint::getRegion_code, startRegionStr) lam.in(SchBasePoint::getRegion_code, startRegionStr)
// 点位类型是拆盘机出口 // 点位类型是拆盘机出口
.eq(SchBasePoint::getPoint_type, GeneralDefinition.EXIT) .eq(SchBasePoint::getPoint_type, GeneralDefinition.EXIT)
.eq(SchBasePoint::getCan_vehicle_type, requestParam.getString("vehicle_type")) .eq(SchBasePoint::getCan_material_type, "RGV")
// 当前执行的任务为空或者NULL有数据表示锁住 // 当前执行的任务为空或者NULL有数据表示锁住
.and(la -> la.isNull(SchBasePoint::getIng_task_code) .and(la -> la.isNull(SchBasePoint::getIng_task_code)
.or() .or()
.eq(SchBasePoint::getIng_task_code, "")) .eq(SchBasePoint::getIng_task_code, ""))
.eq(SchBasePoint::getPoint_status,"2") .eq(SchBasePoint::getPoint_status, "2")
.eq(SchBasePoint::getBlock_num, "1") .eq(SchBasePoint::getBlock_num, "1")
.eq(SchBasePoint::getIs_used, true); .eq(SchBasePoint::getIs_used, true)
.orderByAsc(SchBasePoint::getPoint_code);
List<SchBasePoint> schBasePoints = pointService.list(lam); List<SchBasePoint> schBasePoints = pointService.list(lam);
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
} }