rev:更新

This commit is contained in:
2026-02-06 18:58:27 +08:00
parent 8d9fe360b9
commit 972731fc0c
9 changed files with 326 additions and 227 deletions

View File

@@ -11,7 +11,8 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.acs.device.domain.Device;
import org.nl.acs.agv.hk.service.AcsToHkService;
import org.nl.acs.agv.hk.service.HkToAcsService;
import org.nl.acs.agv.hk.service.data.GenPreScheduleTaskReq;
import org.nl.acs.device_driver.autodoor.standard_autodoor.ItemProtocol;
import org.nl.acs.device_driver.autodoor.standard_autodoor.StandardAutodoorDeviceDriver;
import org.nl.acs.device_driver.basedriver.robot_arm.RobotArmDeviceDriver;
import org.nl.acs.ext.wms.service.AcsToWmsService;
import org.nl.acs.instruction.domain.Instruction;
@@ -19,7 +20,7 @@ import org.nl.acs.instruction.enums.InstTypeEnum;
import org.nl.acs.instruction.enums.InstructionStatusEnum;
import org.nl.acs.instruction.service.InstructionService;
import org.nl.acs.opc.DeviceAppService;
import org.nl.acs.task.enums.TaskTypeEnum;
import org.nl.acs.opc.ThreadUtl;
import org.nl.acs.task.service.TaskService;
import org.nl.acs.task.service.dto.TaskDto;
import org.nl.system.service.param.ISysParamService;
@@ -58,16 +59,19 @@ public class HkToAcsServiceImpl implements HkToAcsService {
@SneakyThrows
@Override
public JSONObject agvCallback(JSONObject requestParam) {
log.info("agvCallback-----请求参数{}", requestParam.toString());
JSONObject resp = new JSONObject();
String reqCode = requestParam.getString("reqCode");
String robotCode = requestParam.getString("robotCode");
String taskCode = requestParam.getString("taskCode");
String method = requestParam.getString("method");
String currentCallCode = requestParam.getString("currentCallCode");
Instruction instruction = instructionService.findByCodeFromCache(taskCode);
if (ObjectUtil.isEmpty(instruction)) {
resp.put("code", "1");
resp.put("message", "请求失败,指令信息不存在,指令号:" + taskCode);
resp.put("reqCode", reqCode);
log.info("agvCallback-----响应参数{}", resp.toString());
return resp;
}
TaskDto taskDto = taskService.findByCodeFromCache(instruction.getTask_code());
@@ -75,6 +79,7 @@ public class HkToAcsServiceImpl implements HkToAcsService {
resp.put("code", "1");
resp.put("message", "请求失败,任务信息不存在,指令号:" + taskCode);
resp.put("reqCode", reqCode);
log.info("agvCallback-----响应参数{}", resp.toString());
return resp;
}
String now = DateUtil.now();
@@ -86,31 +91,21 @@ public class HkToAcsServiceImpl implements HkToAcsService {
instruction.setExecute_device_code(instruction.getStart_point_code());
instruction.setUpdate_time(now);
instructionService.update(instruction);
JSONObject reqParam = new JSONObject();
reqParam.put("task_id", instruction.getTask_id());
reqParam.put("task_code", instruction.getTask_code());
reqParam.put("car_no", robotCode);
acsToWmsService.feedCarNo(reqParam);
}
//method 回调2、任务完成/结束end
else if (StrUtil.equals(method, "end")) {
if (instruction.getInstruction_type().equals(InstTypeEnum.AGV_THREE_TASK.getCode())) {
instruction.setExecute_device_code(instruction.getStart_point_code());
Device device = deviceAppService.findDeviceByCode(instruction.getNext_device_code());
RobotArmDeviceDriver robotArmDeviceDriver;
if (device.getDeviceDriver() instanceof RobotArmDeviceDriver) {
robotArmDeviceDriver = (RobotArmDeviceDriver) device.getDeviceDriver();
Map<String, Object> map = new HashMap<>();
map.put("to_in", "0");
robotArmDeviceDriver.writing(map);
}
//修改指令状态完成
instruction.setInstruction_status(InstructionStatusEnum.FINISHED.getIndex());
instruction.setUpdate_time(now);
instructionService.finish(instruction);
// if (StrUtil.equals(instruction.getIs_wait(), "1") && StrUtil.equals(instruction.getInstruction_type(), InstTypeEnum.CTU_OUT_TASK.getCode())) {
// String ctuWaitTime = Optional.ofNullable(sysParamService.findByCode("ctuWaitTime").getValue()).map(Object::toString).orElse("3600");
// GenPreScheduleTaskReq gpsReq = GenPreScheduleTaskReq.builder()
// .positionCode(instruction.getStart_device_code())
// .nextTask(ctuWaitTime)
// .agvTyp("10")
// .build();
// acsToHkService.genPreScheduleTask(gpsReq, null);
// }
}
//method 回调3、任务取消cancel
else if (StrUtil.equals(method, "cancel")) {
@@ -126,21 +121,9 @@ public class HkToAcsServiceImpl implements HkToAcsService {
resp.put("code", "1");
resp.put("message", "请求失败,请求位置编号不存在!");
resp.put("reqCode", reqCode);
log.info("agvCallback-----响应参数{}", resp.toString());
return resp;
}
// StandardWeightSiteDeviceDriver standardWeightSiteDeviceDriver;
// //CTU取货申请
// //如果请求位置编号与指令起点一致并且是输送线则是取货申请
// if (device.getDeviceDriver() instanceof StandardWeightSiteDeviceDriver) {
// standardWeightSiteDeviceDriver = (StandardWeightSiteDeviceDriver) device.getDeviceDriver();
// if (TaskTypeEnum.CTU_TASK.getCode().equals(taskDto.getTask_type())) {
// standardWeightSiteDeviceDriver.setReqCtuTakeRequireSuccess(true);
// standardWeightSiteDeviceDriver.setReqCtuTakeInstCode(taskCode);
// } else {
// standardWeightSiteDeviceDriver.setReqAgvTakeRequireSuccess(true);
// standardWeightSiteDeviceDriver.setReqAgvTakeInstCode(taskCode);
// }
// }
// 机械手驱动
RobotArmDeviceDriver robotArmDeviceDriver;
if (device.getDeviceDriver() instanceof RobotArmDeviceDriver) {
@@ -154,13 +137,6 @@ public class HkToAcsServiceImpl implements HkToAcsService {
}
//method 回调5、inApplyOk
else if (StrUtil.equals(method, "inApplyOK")) {
//如果是WMS下发的任务就反馈WMS取货完成
if (!instruction.getTask_code().startsWith("-")) {
JSONObject reqParam = new JSONObject();
reqParam.put("task_code", instruction.getTask_code());
reqParam.put("point_code", instruction.getStart_point_code());
acsToWmsService.takeFinish(reqParam);
}
Device device = deviceAppService.findDeviceByCode(instruction.getStart_device_code());
RobotArmDeviceDriver robotArmDeviceDriver;
if (device.getDeviceDriver() instanceof RobotArmDeviceDriver) {
@@ -168,35 +144,18 @@ public class HkToAcsServiceImpl implements HkToAcsService {
Map<String, Object> map = new HashMap<>();
map.put("to_out", "0");
robotArmDeviceDriver.writing(map);
// robotArmDeviceDriver.setReqAgvTakeRequireSuccess(true);
// robotArmDeviceDriver.setReqAgvTakeInstCode(taskCode);
}
}
//method 回调6、放料箱申请outApply
else if (StrUtil.equals(method, "outApply")) {
Device device = deviceAppService.findDeviceByCode(instruction.getNext_device_code());
if (instruction.getInstruction_type().equals(InstTypeEnum.AGV_THREE_TASK.getCode())) {
device = deviceAppService.findDeviceByCode(instruction.getStart_device_code());
}
if (ObjectUtil.isEmpty(device)) {
resp.put("code", "1");
resp.put("message", "请求失败,请求位置编号不存在!");
resp.put("reqCode", reqCode);
log.info("agvCallback-----响应参数{}", resp.toString());
return resp;
}
// StandardWeightSiteDeviceDriver standardWeightSiteDeviceDriver;
// //CTU取货申请
// //如果请求位置编号与指令起点一致并且是输送线则是取货申请
// if (device.getDeviceDriver() instanceof StandardWeightSiteDeviceDriver) {
// standardWeightSiteDeviceDriver = (StandardWeightSiteDeviceDriver) device.getDeviceDriver();
// if (TaskTypeEnum.CTU_TASK.getCode().equals(taskDto.getTask_type())) {
// standardWeightSiteDeviceDriver.setReqCtuTakeRequireSuccess(true);
// standardWeightSiteDeviceDriver.setReqCtuTakeInstCode(taskCode);
// } else {
// standardWeightSiteDeviceDriver.setReqAgvTakeRequireSuccess(true);
// standardWeightSiteDeviceDriver.setReqAgvTakeInstCode(taskCode);
// }
// }
RobotArmDeviceDriver robotArmDeviceDriver;
if (device.getDeviceDriver() instanceof RobotArmDeviceDriver) {
robotArmDeviceDriver = (RobotArmDeviceDriver) device.getDeviceDriver();
@@ -206,28 +165,50 @@ public class HkToAcsServiceImpl implements HkToAcsService {
robotArmDeviceDriver.setReqAgvTakeRequireSuccess(true);
robotArmDeviceDriver.setReqAgvTakeInstCode(taskCode);
}
}
//method 回调7、放货完成
else if (StrUtil.equals(method, "outApplyOK")) {
Device device = deviceAppService.findDeviceByCode(instruction.getStart_device_code());
RobotArmDeviceDriver robotArmDeviceDriver;
if (device.getDeviceDriver() instanceof RobotArmDeviceDriver) {
robotArmDeviceDriver = (RobotArmDeviceDriver) device.getDeviceDriver();
Map<String, Object> map = new HashMap<>();
map.put("to_in", "0");
robotArmDeviceDriver.writing(map);
// robotArmDeviceDriver.setReqAgvTakeRequireSuccess(true);
// robotArmDeviceDriver.setReqAgvTakeInstCode(taskCode);
} else if (StrUtil.equals(method, "inDoor")) {
Device device = deviceAppService.findDeviceByCode(currentCallCode);
StandardAutodoorDeviceDriver standardAutodoorDeviceDriver;
if (device != null && device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) {
standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
Map<String, Object> param = new HashMap<>();
param.put(ItemProtocol.to_open, 1);
standardAutodoorDeviceDriver.writing(param);
standardAutodoorDeviceDriver.setRequireDoor(true);
standardAutodoorDeviceDriver.setRequireTaskCode(taskCode);
} else {
resp.put("code", "1");
resp.put("message", "请求开门失败,请求位置编号不存在!");
resp.put("reqCode", reqCode);
log.info("agvCallback-----响应参数{}", resp.toString());
return resp;
}
} else if (StrUtil.equals(method, "outDoor")) {
Device device = deviceAppService.findDeviceByCode("DOOR02");
StandardAutodoorDeviceDriver standardAutodoorDeviceDriver;
if (device != null && device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) {
standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
Map<String, Object> param = new HashMap<>();
param.put(ItemProtocol.to_open, 0);
standardAutodoorDeviceDriver.writing(param);
ThreadUtl.sleep(500);
standardAutodoorDeviceDriver.writing(param);
standardAutodoorDeviceDriver.setRequireDoor(false);
} else {
resp.put("code", "1");
resp.put("message", "请求关门失败,请求位置编号不存在!");
resp.put("reqCode", reqCode);
log.info("agvCallback-----响应参数{}", resp.toString());
return resp;
}
}
resp.put("code", "0");
resp.put("message", "成功");
resp.put("reqCode", reqCode);
log.info("agvCallback-----响应参数{}", resp.toString());
return resp;
}
@Override
public JSONObject warnCallback(JSONObject requestParam) {
String reqCode = requestParam.getString("reqCode");

View File

@@ -11,6 +11,7 @@ import org.nl.acs.device.service.DeviceService;
import org.nl.acs.device_driver.autodoor.standard_autodoor.ItemProtocol;
import org.nl.acs.device_driver.autodoor.standard_autodoor.StandardAutodoorDeviceDriver;
import org.nl.acs.device_driver.basedriver.agv.ndcone.AgvNdcOneDeviceDriver;
import org.nl.acs.device_driver.basedriver.stretch_wrapper.StretchWrapperDeviceDriver;
import org.nl.acs.ext.wms.service.AcsToWmsService;
import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl;
import org.nl.acs.instruction.domain.Instruction;
@@ -31,7 +32,9 @@ import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.nl.acs.agv.server.impl.NDCAgvServiceImpl.Bytes2HexString;
/**
@@ -170,8 +173,8 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
inst.setAgv_jobno(String.valueOf(index));
inst.setSend_status(CommonFinalParam.ONE);
instructionService.update(inst);
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
}
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
}
//任务完毕
//无车id及状态
@@ -223,8 +226,10 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
StandardAutodoorDeviceDriver driver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
log.info("agv车号为"+carno+",进入自动门:"+device_code+"区域,请求开门中");
Map<String,Object> param = new HashMap<>();
param.put(ItemProtocol.to_open,1);
// 下发开门
driver.writing(ItemProtocol.to_open,"1");
driver.writing(param);
log.info("agv车号为"+carno+",进入自动门区域"+"自动门:"+device_code+"已联机,允许开门。");
logServer.deviceExecuteLog(device_code, "", "", "允许开门。");
if (driver.getOpen() == 1) {
@@ -263,10 +268,34 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) {
StandardAutodoorDeviceDriver driver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
// 关门
driver.writing(ItemProtocol.to_open,"0");
Map<String,Object> param = new HashMap<>();
param.put(ItemProtocol.to_open,0);
driver.writing(param);
log.info("agv车号为"+carno+",准备离开自动门:"+device_code+"区域,请求关门中");
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0);
}
} else if (phase == 0x4D){
if (agvaddr != 0) {
old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr);
if (StrUtil.contains(old_device_code, "-")) {
String[] point = old_device_code.split("-");
device_code = point[0];
} else if (StrUtil.contains(old_device_code, ".")) {
String[] point = old_device_code.split("\\.");
device_code = point[0];
} else {
device_code = old_device_code;
}
}
device = deviceAppService.findDeviceByCode(device_code);
if (ObjectUtil.isEmpty(device_code)) {
log.info(agvaddr + "对应设备号为空!");
return;
}
if (device != null && device.getDeviceDriver() instanceof StretchWrapperDeviceDriver){
}
Instruction instruction = instructionService.findByCodeFromCache(String.valueOf(ikey));
} else {
//上报异常信息
//不需要WCS反馈

View File

@@ -1,10 +1,14 @@
package org.nl.acs.device_driver.autodoor.standard_autodoor;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.acs.agv.hk.UnifiedResponse;
import org.nl.acs.agv.hk.service.AcsToHkService;
import org.nl.acs.agv.hk.service.data.ContinueTaskReq;
import org.nl.acs.common.base.CommonFinalParam;
import org.nl.acs.device.domain.Device;
import org.nl.acs.device.service.DeviceService;
@@ -15,6 +19,7 @@ import org.nl.acs.ext.wms.data.one.feedBackTaskStatus.FeedBackTaskStatusRequest;
import org.nl.acs.ext.wms.service.AcsToWmsService;
import org.nl.acs.instruction.service.InstructionService;
import org.nl.acs.log.service.DeviceExecuteLogService;
import org.nl.acs.opc.ThreadUtl;
import org.nl.acs.route.service.RouteLineService;
import org.nl.acs.task.service.TaskService;
import org.nl.acs.utils.ReadUtil;
@@ -48,6 +53,7 @@ public class StandardAutodoorDeviceDriver extends AbstractOpcDeviceDriver implem
TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl");
AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl");
AcsToHkService acsToHkService = SpringContextHolder.getBean(AcsToHkService.class);
String container;
String container_type_desc;
String last_container_type_desc;
@@ -66,10 +72,10 @@ public class StandardAutodoorDeviceDriver extends AbstractOpcDeviceDriver implem
int move = 0;
int task = 0;
int last_close= 0;
int last_open= 0;
int last_to_close= 0;
int last_to_open= 0;
int last_close = 0;
int last_open = 0;
int last_to_close = 0;
int last_to_open = 0;
boolean hasVehicle = false;
boolean isReady = false;
@@ -96,6 +102,9 @@ public class StandardAutodoorDeviceDriver extends AbstractOpcDeviceDriver implem
private int instruction_finished_time_out;
private volatile boolean requireDoor = false;
private volatile String requireTaskCode = null;
int branchProtocol = 0;
String message = "";
@@ -114,6 +123,23 @@ public class StandardAutodoorDeviceDriver extends AbstractOpcDeviceDriver implem
to_close = this.itemProtocol.getToClose();
to_open = this.itemProtocol.getToOpen();
if (this.requireDoor){
Map<String,Object> param = new HashMap<>();
param.put(ItemProtocol.to_open,1);
this.writing(param);
if (this.open == 1 && StrUtil.isNotBlank(this.requireTaskCode)){
ContinueTaskReq req = ContinueTaskReq.builder()
.taskCode(this.requireTaskCode)
.build();
UnifiedResponse unifiedResponse = acsToHkService.continueTask(req);
// 初始化
if (unifiedResponse.isSuccess()) {
this.requireTaskCode = null;
}
}
ThreadUtl.sleep(3000);
}
last_close = close;
last_open = open;
last_to_close = to_close;
@@ -145,9 +171,9 @@ public class StandardAutodoorDeviceDriver extends AbstractOpcDeviceDriver implem
this.checkcontrol(itemMap);
} catch (Exception e) {
e.printStackTrace();
try{
try {
this.checkcontrol(itemMap);
} catch (Exception e1){
} catch (Exception e1) {
e1.printStackTrace();
}
}
@@ -155,6 +181,7 @@ public class StandardAutodoorDeviceDriver extends AbstractOpcDeviceDriver implem
lucene.deviceExecuteLog(new LuceneLogDto(this.getDeviceCode(), "下发多个电气信号:" + itemMap));
}
}
/**
* 抽取统一下发电气信号前缀
*

View File

@@ -37,7 +37,9 @@ import org.nl.system.service.param.ISysParamService;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ThreadPoolExecutor;
/**
@@ -195,12 +197,6 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
data = ndcAgvService.sendAgvOneModeInst(phase, index, 0);
flag = true;
}
if (flag) {
// log.info("==================允许AGV取货==================");
// logServer.deviceExecuteLog(device_code, "", "", "允许AGV取货。");
//log.info("{},{}", device_code, "允许AGV取货。");
// lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, "允许AGV取货。"));
}
// 到达货架
if (device.getDeviceDriver() instanceof StandardStorageDeviceDriver) {
log.info("到达{}取货点开始取货", device_code);
@@ -214,7 +210,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
if (device.getDeviceDriver() instanceof StretchWrapperDeviceDriver) {
StretchWrapperDeviceDriver deviceDriver = (StretchWrapperDeviceDriver) device.getDeviceDriver();
// 下发请求取货
deviceDriver.writing(ItemProtocol.to_out, "1");
Map<String, Object> param = new HashMap<>();
param.put(ItemProtocol.to_out, 1);
deviceDriver.writing(param);
// 判断是否允许取货
if (deviceDriver.getAction() == 1) {
log.info("到达{}取货点开始取货", device_code);
@@ -230,7 +228,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
RobotArmDeviceDriver deviceDriver = (RobotArmDeviceDriver) device.getDeviceDriver();
if (deviceDriver.getHeartbeat() == 1) {
// 下发正在取货
deviceDriver.writing(org.nl.acs.device_driver.basedriver.robot_arm.ItemProtocol.to_out, "1");
Map<String, Object> param = new HashMap<>();
param.put(org.nl.acs.device_driver.basedriver.robot_arm.ItemProtocol.to_out, 1);
deviceDriver.writing(param);
log.info("到达{}取货点开始取货", device_code);
inst.setExecute_status("1");
instructionService.update(inst);
@@ -245,7 +245,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
// 判断是否允许取
if (deviceDriver.getEmp_ready() == 1) {
// 下发正在取货
deviceDriver.writing(org.nl.acs.device_driver.basedriver.pallet_dispenser.ItemProtocol.to_out, "1");
Map<String, Object> param = new HashMap<>();
param.put(org.nl.acs.device_driver.basedriver.pallet_dispenser.ItemProtocol.to_out, 1);
deviceDriver.writing(param);
log.info("到达{}取货点开始取货", device_code);
inst.setExecute_status("1");
instructionService.update(inst);
@@ -311,8 +313,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
// 到达缠绕机取货完成
if (device.getDeviceDriver() instanceof StretchWrapperDeviceDriver) {
StretchWrapperDeviceDriver deviceDriver = (StretchWrapperDeviceDriver) device.getDeviceDriver();
deviceDriver.writing(ItemProtocol.to_out_finish, "1");
Map<String, Object> param = new HashMap<>();
param.put(ItemProtocol.to_out_finish, 1);
deviceDriver.writing(param);
data = ndcAgvService.sendAgvOneModeInst(phase, index, 0);
log.info("agv进入" + device_code + "取货完成");
flag = true;
@@ -322,7 +325,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
if (device.getDeviceDriver() instanceof RobotArmDeviceDriver) {
RobotArmDeviceDriver deviceDriver = (RobotArmDeviceDriver) device.getDeviceDriver();
// 取货复位
deviceDriver.writing("to_out","0");
Map<String, Object> param = new HashMap<>();
param.put("to_out", 0);
deviceDriver.writing(param);
data = ndcAgvService.sendAgvOneModeInst(phase, index, 0);
log.info("agv进入" + device_code + "取货完成");
flag = true;
@@ -331,7 +336,9 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
// 到达拆盘机手取货完成
if (device.getDeviceDriver() instanceof PalletDispenseDeviceDriver) {
PalletDispenseDeviceDriver deviceDriver = (PalletDispenseDeviceDriver) device.getDeviceDriver();
deviceDriver.writing("to_out","0");
Map<String, Object> param = new HashMap<>();
param.put("to_out", 0);
deviceDriver.writing(param);
data = ndcAgvService.sendAgvOneModeInst(phase, index, 0);
log.info("agv进入" + device_code + "取货完成");
flag = true;
@@ -387,18 +394,13 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
data = ndcAgvService.sendAgvOneModeInst(phase, index, 0);
flag = true;
}
if (flag) {
// log.info("==================允许AGV放货==================");
// logServer.deviceExecuteLog(device_code, "", "", "允许AGV放货。");
// log.info("{},{}", device_code, "允许AGV放货。");
// lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, "允许AGV放货。"));
}
// 缠绕机
if (device.getDeviceDriver() instanceof StretchWrapperDeviceDriver) {
StretchWrapperDeviceDriver deviceDriver = (StretchWrapperDeviceDriver) device.getDeviceDriver();
// 下发请求放货
deviceDriver.writing(ItemProtocol.to_in, "1");
Map<String, Object> param = new HashMap<>();
param.put(ItemProtocol.to_in, 1);
deviceDriver.writing(param);
// 判断是否允许放货
if (deviceDriver.getAction() == 1) {
log.info("到达{}放货点开始放货", device_code);
@@ -472,18 +474,12 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
data = ndcAgvService.sendAgvOneModeInst(phase, index, 0);
flag = true;
}
if (flag) {
//log.info("================允许AGV放货后离开=================");
//logServer.deviceExecuteLog(device_code, "", "", "允许AGV放货后离开。");
// log.info("{},{}", device_code, "允许AGV放货后离开。");
//lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, "允许AGV放货后离开。"));
}
// 到达缠绕机放货完成
if (device.getDeviceDriver() instanceof StretchWrapperDeviceDriver) {
StretchWrapperDeviceDriver deviceDriver = (StretchWrapperDeviceDriver) device.getDeviceDriver();
deviceDriver.writing(ItemProtocol.to_in_finish, "1");
Map<String, Object> param = new HashMap<>();
param.put(ItemProtocol.to_in_finish, 1);
deviceDriver.writing(param);
data = ndcAgvService.sendAgvOneModeInst(phase, index, 0);
log.info("{}放货完成", device_code);
flag = true;
@@ -492,7 +488,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
// 到达机械手放货完成
if (device.getDeviceDriver() instanceof RobotArmDeviceDriver) {
RobotArmDeviceDriver deviceDriver = (RobotArmDeviceDriver) device.getDeviceDriver();
deviceDriver.writing("to_in","0");
deviceDriver.writing("to_in", "0");
data = ndcAgvService.sendAgvOneModeInst(phase, index, 0);
log.info("{}放货完成", device_code);
flag = true;

View File

@@ -2,11 +2,13 @@ package org.nl.acs.device_driver.basedriver.robot_arm;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.acs.AcsConfig;
import org.nl.acs.agv.hk.UnifiedResponse;
import org.nl.acs.agv.hk.service.AcsToHkService;
import org.nl.acs.agv.hk.service.data.ContinueTaskReq;
@@ -27,6 +29,7 @@ import org.nl.acs.utils.ReadUtil;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.lucene.LuceneExecuteLogService;
import org.nl.system.service.lucene.dto.LuceneLogDto;
import org.nl.system.service.param.ISysParamService;
import org.openscada.opc.lib.da.Server;
import java.util.*;
@@ -50,7 +53,7 @@ public class RobotArmDeviceDriver extends AbstractOpcDeviceDriver implements Dev
RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl");
TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl");
ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class);
AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl");
private final AcsToHkService acsToHkService = SpringContextHolder.getBean(AcsToHkService.class);
@@ -126,19 +129,27 @@ public class RobotArmDeviceDriver extends AbstractOpcDeviceDriver implements Dev
heartbeat = this.itemProtocol.getHeartbeat();
emp_task = this.itemProtocol.getEmp();
pallet_apply = this.itemProtocol.getPallet();
to_out = this.itemProtocol.getToOut();
to_in = this.itemProtocol.getToIn();
if (emp_task != last_emp_task) {
this.requireSucess = false;
}
if (pallet_apply != last_pallet_apply) {
this.requireSucess = false;
}
last_heartbeat = heartbeat;
last_emp_task = emp_task;
last_pallet_apply = pallet_apply;
if (last_heartbeat == 1) {
Date date = new Date();
if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) {
log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out);
} else {
this.instruction_require_time = date;
this.executeTask();
}
Date date = new Date();
if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) {
log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out);
} else {
this.instruction_require_time = date;
this.executeTask();
}
}
@@ -146,37 +157,51 @@ public class RobotArmDeviceDriver extends AbstractOpcDeviceDriver implements Dev
* 执行业务逻辑
*/
public void executeTask() {
String hasWms = paramService.findByCode(AcsConfig.HASWMS).getValue();
JSONObject param = new JSONObject();
// 申请叫料任务
if (last_emp_task == 1) {
if (emp_task == 1 && !requireSucess) {
List<Task> list = taskserver.list(
new QueryWrapper<Task>().lambda()
.eq(Task::getNext_device_code, devicecode)
.eq(Task::getIs_delete, "0")
.in(Task::getTask_status, "0", "1")
);
if (ObjectUtil.isEmpty(list)) {
if (ObjectUtil.isEmpty(list) && "1".equals(hasWms)) {
// 调用上位接口
param.put("device_code", devicecode);
param.put("type", "2");
param.put("type_dtl", "2");
acsToWmsService.applyTask(param);
HttpResponse httpResponse = acsToWmsService.applyTask(param);
if (httpResponse != null) {
JSONObject resp = JSONObject.parseObject(httpResponse.body());
if (resp != null && resp.getIntValue("status") == 200) {
this.requireSucess = true;
}
}
}
}
// 申请下料任务
if (last_pallet_apply == 1) {
if (pallet_apply == 1 && !requireSucess) {
List<Task> list = taskserver.list(
new QueryWrapper<Task>().lambda()
.eq(Task::getStart_device_code, devicecode)
.eq(Task::getIs_delete, "0")
.in(Task::getTask_status, "0", "1")
);
if (ObjectUtil.isEmpty(list)) {
if (ObjectUtil.isEmpty(list) && "1".equals(hasWms)) {
// 调用上位接口
param.put("device_code", devicecode);
param.put("type", "2");
param.put("type_dtl", "1");
acsToWmsService.applyTask(param);
HttpResponse httpResponse = acsToWmsService.applyTask(param);
if (httpResponse != null) {
JSONObject resp = JSONObject.parseObject(httpResponse.body());
if (resp != null && resp.getIntValue("status") == 200) {
this.requireSucess = true;
}
}
}
}
// 取货/放货信号写入需要初始化并允许离开

View File

@@ -1,11 +1,14 @@
package org.nl.acs.device_driver.basedriver.stretch_wrapper;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.acs.AcsConfig;
import org.nl.acs.common.base.CommonFinalParam;
import org.nl.acs.device.domain.Device;
import org.nl.acs.device.service.DeviceService;
import org.nl.acs.device_driver.DeviceDriver;
@@ -21,6 +24,7 @@ import org.nl.acs.utils.ReadUtil;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.lucene.LuceneExecuteLogService;
import org.nl.system.service.lucene.dto.LuceneLogDto;
import org.nl.system.service.param.ISysParamService;
import org.openscada.opc.lib.da.Server;
import java.util.*;
@@ -47,6 +51,8 @@ public class StretchWrapperDeviceDriver extends AbstractOpcDeviceDriver implemen
AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl");
ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class);
String container;
String container_type_desc;
String last_container_type_desc;
@@ -113,6 +119,14 @@ public class StretchWrapperDeviceDriver extends AbstractOpcDeviceDriver implemen
action = this.itemProtocol.getAction();
error = this.itemProtocol.getError();
if (task_in != last_task_in){
this.requireSucess = false;
}
if (task_out != last_task_out){
this.requireSucess = false;
}
last_action = action;
last_error = error;
last_task_in = task_in;
@@ -131,37 +145,50 @@ public class StretchWrapperDeviceDriver extends AbstractOpcDeviceDriver implemen
* 执行业务逻辑
*/
public void executeTask() {
String hasWms = paramService.findByCode(AcsConfig.HASWMS).getValue();
JSONObject param = new JSONObject();
// 申请叫料任务
if (last_task_in == 1) {
if (last_task_in == 1 && !this.requireSucess) {
List<Task> list = taskserver.list(
new QueryWrapper<Task>().lambda()
.eq(Task::getNext_device_code, devicecode)
.eq(Task::getIs_delete, "0")
.in(Task::getTask_status, "0", "1")
);
if (ObjectUtil.isEmpty(list)) {
if (ObjectUtil.isEmpty(list) && "1".equals(hasWms)) {
// 调用上位接口
param.put("device_code", devicecode);
param.put("type", "1");
param.put("type_dtl", "2");
acsToWmsService.applyTask(param);
HttpResponse httpResponse = acsToWmsService.applyTask(param);
if (httpResponse != null) {
JSONObject resp = JSONObject.parseObject(httpResponse.body());
if (resp != null && resp.getIntValue("status") == 200){
this.requireSucess = true;
}
}
}
}
// 申请下料任务
if (last_task_out == 1) {
if (last_task_out == 1 && !this.requireSucess) {
List<Task> list = taskserver.list(
new QueryWrapper<Task>().lambda()
.eq(Task::getStart_device_code, devicecode)
.eq(Task::getIs_delete, "0")
.in(Task::getTask_status, "0", "1")
);
if (ObjectUtil.isEmpty(list)) {
if (ObjectUtil.isEmpty(list) && "1".equals(hasWms)) {
// 调用上位接口
param.put("device_code", devicecode);
param.put("type", "1");
param.put("type_dtl", "1");
acsToWmsService.applyTask(param);
HttpResponse httpResponse = acsToWmsService.applyTask(param);
if (httpResponse != null) {
JSONObject resp = JSONObject.parseObject(httpResponse.body());
if (resp != null && resp.getIntValue("status") == 200){
this.requireSucess = true;
}
}
}
}
}

View File

@@ -19,6 +19,7 @@ import org.apache.commons.lang3.ObjectUtils;
import org.nl.acs.AcsConfig;
import org.nl.acs.agv.hk.UnifiedResponse;
import org.nl.acs.agv.hk.service.AcsToHkService;
import org.nl.acs.agv.hk.service.data.CancelTaskReq;
import org.nl.acs.agv.hk.service.data.GenAgvSchedulingTaskReq;
import org.nl.acs.agv.server.NDCAgvService;
import org.nl.acs.agv.server.XianGongAgvService;
@@ -445,11 +446,12 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
}
// 下发指令到海康调度
if (dto.getAgv_system_type().equals(AgvSystemTypeEnum.Hik_System_Type.getIndex())) {
List<Map<String, String>> positionCodePath = Arrays.asList(MapOf.of("positionCode", dto.getStart_parent_code(), "type", "00"), MapOf.of("positionCode", dto.getNext_parent_code(), "type", "00"));
List<Map<String, String>> positionCodePath = Arrays.asList(MapOf.of("positionCode", dto.getStart_device_code(), "type", "00"), MapOf.of("positionCode", dto.getNext_device_code(), "type", "00"));
GenAgvSchedulingTaskReq gasReq = GenAgvSchedulingTaskReq
.builder()
.taskTyp(dto.getInstruction_type())
.positionCodePath(positionCodePath)
.ctnrTyp("1")
.priority(dto.getPriority())
.taskCode(dto.getInstruction_code())
.build();
@@ -975,7 +977,7 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
&& !StrUtil.equals(entity.getSend_status(), "2")) {
flag = true;
} else if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "2")) {
} else if (StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.NDC_System_Type.getCode())) {
// NDC agv指令不当场取消指令,需要等agv上报
if (StrUtil.isEmpty(entity.getAgv_jobno())) {
throw new BadRequestException(LangProcess.msg("task_insNDC"));
@@ -985,10 +987,13 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
// ndcAgvService.deleteAgvInstToNDC((Instruction) entity);
flag = true;
}
} else if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "3")
} else if (StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.Hik_System_Type.getCode())
&& !StrUtil.equals(entity.getSend_status(), "2")) {
XianGongAgvService xianGongAgvService = SpringContextHolder.getBean(XianGongAgvService.class);
xianGongAgvService.deleteXZAgvInst(entity.getInstruction_code());
AcsToHkService acsToHkService = SpringContextHolder.getBean(AcsToHkService.class);
CancelTaskReq req = CancelTaskReq.builder()
.taskCode(entity.getInstruction_code())
.build();
acsToHkService.cancelTask(req);
flag = true;
} else {
flag = true;
@@ -996,29 +1001,6 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
if (flag) {
if (StrUtil.equals(entity.getInstruction_type(), "7")) {
CancelTaskRequest cancelTaskRequest = new CancelTaskRequest();
cancelTaskRequest.setOrderId(entity.getInstruction_code());
cancelTaskRequest.setPalletCode(entity.getVehicle_code());
cancelTaskRequest.setSrcLocation(entity.getStart_point_code());
cancelTaskRequest.setDestLocation(entity.getNext_point_code());
// 1 入库2 出库3 移库4 空托盘入库5 空托盘出库
int type = 0;
if (StrUtil.equals(task.getStorage_task_type(), CommonFinalParam.ONE)) {
type = 1;
} else if (StrUtil.equals(task.getStorage_task_type(), "2")) {
type = 4;
} else if (StrUtil.equals(task.getStorage_task_type(), "3")) {
type = 2;
} else if (StrUtil.equals(task.getStorage_task_type(), "4")) {
type = 5;
} else if (StrUtil.equals(task.getStorage_task_type(), "5")) {
type = 3;
}
cancelTaskRequest.setTaskType(type);
acsToLiKuService.cancelTask(cancelTaskRequest);
}
String currentUsername = SecurityUtils.getCurrentUsername();
String now = DateUtil.now();
entity.setUpdate_time(now);

View File

@@ -898,7 +898,7 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
instdto.setNext_point_code2(next_point_code2);
instdto.setAgv_system_type(agv_system_type);
instdto.setAgv_inst_type(CommonFinalParam.ONE);
instructionservice.create2(instdto);
instructionservice.create(instdto);
acsTask.setTask_status(CommonFinalParam.ONE);
this.update(acsTask);

View File

@@ -78,90 +78,122 @@ https://juejin.cn/post/6844903775631572999
</appender>
<!--开发环境:打印控制台-->
<springProfile name="dev">
<root level="debug">
<root level="info">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
<appender-ref ref="CONSOLE"/>
</root>
<logger name="com.baomidou.mybatisplus.core.MybatisConfiguration" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.redisson.command.RedisExecutor" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.reflections.Reflections" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.redisson.connection.ClientConnectionsEntry" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.mybatis.spring.mapper.ClassPathMapperScanner" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<logger name="jdbc" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.springframework" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.baomidou.dynamic.datasource.DynamicRoutingDataSource" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.redisson.connection.pool.MasterPubSubConnectionPool" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.redisson.connection.pool.MasterConnectionPool" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.redisson.Version" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.alibaba.druid.pool.DruidDataSource" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.nl.config.RedisConfig" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.apache" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.hibernate" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="io.netty" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="io.lettuce" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.fasterxml" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.quartz" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="com.google" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="springfox" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
<logger name="org.redisson" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="log4jdbc" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
<logger name="org.springframework.data" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="nl.basjes" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
<logger name="org.jinterop" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="com.yomahub.tlog.id.snowflake.UniqueIdGenerator" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.yomahub.tlog.core.rpc.TLogRPCHandler" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
<logger name="org.openscada" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
<!-- <root level="debug">-->
<!-- <appender-ref ref="asyncLuceneAppender"/>-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </root>-->
<!-- <logger name="com.baomidou.mybatisplus.core.MybatisConfiguration" level="ERROR" additivity="false">-->
<!-- <appender-ref ref="asyncLuceneAppender"/>-->
<!-- <appender-ref ref="asyncFileAppender"/>-->
<!-- </logger>-->
<!-- <logger name="org.redisson.command.RedisExecutor" level="ERROR" additivity="false">-->
<!-- <appender-ref ref="asyncLuceneAppender"/>-->
<!-- <appender-ref ref="asyncFileAppender"/>-->
<!-- </logger>-->
<!-- <logger name="org.reflections.Reflections" level="ERROR" additivity="false">-->
<!-- <appender-ref ref="asyncLuceneAppender"/>-->
<!-- <appender-ref ref="asyncFileAppender"/>-->
<!-- </logger>-->
<!-- <logger name="org.redisson.connection.ClientConnectionsEntry" level="ERROR" additivity="false">-->
<!-- <appender-ref ref="asyncLuceneAppender"/>-->
<!-- <appender-ref ref="asyncFileAppender"/>-->
<!-- </logger>-->
<!-- <logger name="org.mybatis.spring.mapper.ClassPathMapperScanner" level="ERROR" additivity="false">-->
<!-- <appender-ref ref="asyncLuceneAppender"/>-->
<!-- <appender-ref ref="asyncFileAppender"/>-->
<!-- </logger>-->
<!-- <logger name="org.springframework" level="ERROR" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="com.baomidou.dynamic.datasource.DynamicRoutingDataSource" level="INFO" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="org.redisson.connection.pool.MasterPubSubConnectionPool" level="INFO" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="org.redisson.connection.pool.MasterConnectionPool" level="INFO" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="org.redisson.Version" level="INFO" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="com.alibaba.druid.pool.DruidDataSource" level="INFO" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="org.nl.config.RedisConfig" level="INFO" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="org.apache" level="ERROR" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="org.hibernate" level="ERROR" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="io.netty" level="ERROR" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="jdbc" level="ERROR" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="io.lettuce" level="ERROR" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="com.fasterxml" level="ERROR" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="org.quartz" level="ERROR" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="com.google" level="ERROR" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="springfox" level="ERROR" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="log4jdbc" level="ERROR" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="nl.basjes" level="ERROR" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="com.yomahub.tlog.id.snowflake.UniqueIdGenerator" level="ERROR" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- <logger name="com.yomahub.tlog.core.rpc.TLogRPCHandler" level="ERROR" additivity="true">-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
</springProfile>
<!--生产环境:打印控制台和输出到文件-->