|
@@ -158,96 +158,103 @@ public class TaskWorkNode {
|
|
|
private static ReentrantLock lock = new ReentrantLock();
|
|
|
|
|
|
public void updateTaskStatusJob(String data, String consumerQueue) throws InterruptedException {
|
|
|
+ String returnData = "";
|
|
|
+ boolean specialCallBackMyselfFlag = false;
|
|
|
+ Map conMap = new HashMap();
|
|
|
+ boolean lockFlag = false;
|
|
|
+ TaskNode taskNode = null;
|
|
|
+ TTask tTask = null;
|
|
|
+ AAutoNodeLog log = null;
|
|
|
+
|
|
|
+ BaseContextHandler.setTenant("0000");
|
|
|
JSONObject jsonObject = JSONObject.parseObject(data);
|
|
|
System.out.println("返回请求数据: " + data);
|
|
|
String taskNodeId = jsonObject.getString("taskNodeId");
|
|
|
- //业务类型-1、是普通的节点类型,2-是线边库轮询
|
|
|
- String bizType = jsonObject.getString("bizType");
|
|
|
- String handMode = jsonObject.getString("handMode");
|
|
|
- //多产品搬运类型
|
|
|
- String carryType = jsonObject.getString("carryType");
|
|
|
+ taskNode = taskNodeService.getById(taskNodeId);
|
|
|
+ tTask = taskMapper.selectById(taskNode.getTaskId());
|
|
|
+ //初始化业务日志
|
|
|
+ log = getBusinessLog(tTask, taskNode);
|
|
|
|
|
|
- BaseContextHandler.setTenant("0000");
|
|
|
- String queueName = "device.queue."+ BizConstant.MQ_GLOBAL_EXCEPTION;
|
|
|
-
|
|
|
- if (consumerQueue.equals(queueName)) {
|
|
|
- AAutoNodeLog log = AAutoNodeLog.builder().build();
|
|
|
- StringBuilder buffer = new StringBuilder();
|
|
|
- //处理产线存储
|
|
|
- String lineName = jsonObject.getString("Line");
|
|
|
- ZZone line = zoneService.getOne(new LbqWrapper<ZZone>().like(ZZone::getAbbreviate, lineName.substring(0, lineName.length()-1)));
|
|
|
- buffer.append(lineName).append("-设备(").append(jsonObject.getString("Name")+")").append(jsonObject.getString("Status"));
|
|
|
- log.setExeResult("0").setManual("1").setFeedback("全局异常:"+ buffer.toString()).setStartTime(new Date()).setExecuteTime(new Date()).setZoneId(line.getId());
|
|
|
-
|
|
|
- LbqWrapper<AAutoNodeLog> lbqWrapper = new LbqWrapper<AAutoNodeLog>();
|
|
|
- lbqWrapper.eq(AAutoNodeLog::getZoneId, line.getId()).eq(AAutoNodeLog::getExeResult, log.getExeResult()).eq(AAutoNodeLog::getManual, log.getManual()).eq(AAutoNodeLog::getStatus, 0).eq(AAutoNodeLog::getFeedback, log.getFeedback());
|
|
|
- //判断全局异常是否已存在
|
|
|
- AAutoNodeLog exist = autoNodeLogService.getOne(lbqWrapper);
|
|
|
- if(null == exist){
|
|
|
- autoNodeLogService.save(log);
|
|
|
- }else{
|
|
|
- //更新执行时间
|
|
|
- exist.setExecuteTime(new Date());
|
|
|
- autoNodeLogService.updateAllById(exist);
|
|
|
- }
|
|
|
- //throw new RuntimeException("全局通知异常");
|
|
|
- return;
|
|
|
- }
|
|
|
- logger.info("=======================" + taskNodeId);
|
|
|
+ try {
|
|
|
+ lockFlag = lock.tryLock();
|
|
|
+ if(lockFlag){
|
|
|
+ logger.info("节点{}获取到了执行锁",taskNode.getId());
|
|
|
+ TaskNode hisTask = taskNodeMapper.selectById(taskNodeId);
|
|
|
+ if("3".equals(hisTask.getExeResult())){
|
|
|
+ logger.info("节点{}已经执行完成,重复推送丢弃",taskNodeId);
|
|
|
+ }
|
|
|
|
|
|
- TaskNode taskNode = taskNodeService.getById(taskNodeId);
|
|
|
-//
|
|
|
- if (taskNode == null || taskNode.getTaskId() == null) {
|
|
|
- //模拟处理数据
|
|
|
- AAutoNodeLog log = AAutoNodeLog.builder().build();
|
|
|
- log.setExeResult("0").setManual("0").setFeedback("当前任务节点为空");
|
|
|
- autoNodeLogService.save(log);
|
|
|
- throw new RuntimeException("节点参数异常");
|
|
|
- }
|
|
|
- TTask tTask = taskMapper.selectById(taskNode.getTaskId());
|
|
|
- if (tTask == null || tTask.getStatus() == "3") {
|
|
|
- AAutoNodeLog log = AAutoNodeLog.builder().build();
|
|
|
- log.setTaskNodeId(taskNode.getId()).setExeResult("0").setManual("0").setFeedback("当前任务为空");
|
|
|
- autoNodeLogService.save(log);
|
|
|
- throw new RuntimeException("节点参数异常");
|
|
|
- }
|
|
|
-// //获取配置序数据
|
|
|
- //任务初始化判断
|
|
|
- if ("1".equals(tTask.getStatus())) {
|
|
|
- //下发的数据才更新状态
|
|
|
- tTask.setStatus("2").setStartTime(new Date());
|
|
|
- taskMapper.updateById(tTask);
|
|
|
- planMapper.updateproduceStatusBegin();
|
|
|
- orderMapper.updateproduceStatusBegin();
|
|
|
-
|
|
|
- msgUtil.redis_set(CacheKey.PRESOURCE_CURRENT_TASK + "_" + tTask.getResourceId(), tTask.getId());
|
|
|
- msgUtil.redis_set(CacheKey.PRESOURCE_CURRENT_TASK_OBJECT + "_" + tTask.getResourceId(), tTask);
|
|
|
- }
|
|
|
- //获取配置节点
|
|
|
-// String autoProgramUrl = getInterfaceUrl(taskNode);
|
|
|
+ //业务类型-1、是普通的节点类型,2-是线边库轮询
|
|
|
+ String bizType = jsonObject.getString("bizType");
|
|
|
+ String handMode = jsonObject.getString("handMode");
|
|
|
+ //多产品搬运类型
|
|
|
+ String carryType = jsonObject.getString("carryType");
|
|
|
+
|
|
|
+ String queueName = "device.queue."+ BizConstant.MQ_GLOBAL_EXCEPTION;
|
|
|
+
|
|
|
+ if (consumerQueue.equals(queueName)) {
|
|
|
+ StringBuilder buffer = new StringBuilder();
|
|
|
+ //处理产线存储
|
|
|
+ String lineName = jsonObject.getString("Line");
|
|
|
+ ZZone line = zoneService.getOne(new LbqWrapper<ZZone>().like(ZZone::getAbbreviate, lineName.substring(0, lineName.length()-1)));
|
|
|
+ buffer.append(lineName).append("-设备(").append(jsonObject.getString("Name")+")").append(jsonObject.getString("Status"));
|
|
|
+ log.setExeResult("0").setManual("1").setFeedback("全局异常:"+ buffer.toString()).setStartTime(new Date()).setExecuteTime(new Date()).setZoneId(line.getId());
|
|
|
+
|
|
|
+ LbqWrapper<AAutoNodeLog> lbqWrapper = new LbqWrapper<AAutoNodeLog>();
|
|
|
+ lbqWrapper.eq(AAutoNodeLog::getZoneId, line.getId()).eq(AAutoNodeLog::getExeResult, log.getExeResult()).eq(AAutoNodeLog::getManual, log.getManual()).eq(AAutoNodeLog::getStatus, 0).eq(AAutoNodeLog::getFeedback, log.getFeedback());
|
|
|
+ //判断全局异常是否已存在
|
|
|
+ AAutoNodeLog exist = autoNodeLogService.getOne(lbqWrapper);
|
|
|
+ if(null == exist){
|
|
|
+ autoNodeLogService.save(log);
|
|
|
+ }else{
|
|
|
+ //更新执行时间
|
|
|
+ exist.setExecuteTime(new Date());
|
|
|
+ autoNodeLogService.updateAllById(exist);
|
|
|
+ }
|
|
|
+ //throw new RuntimeException("全局通知异常");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ logger.info("=======================" + taskNodeId);
|
|
|
+
|
|
|
+ //
|
|
|
+ if (taskNode == null || taskNode.getTaskId() == null) {
|
|
|
+ //模拟处理数据
|
|
|
+ log.setExeResult("0").setManual("0").setFeedback("当前任务节点为空");
|
|
|
+ autoNodeLogService.save(log);
|
|
|
+ throw new RuntimeException("节点参数异常");
|
|
|
+ }
|
|
|
|
|
|
- //填充配置节点内容
|
|
|
- ResourceAutoCode resourceAutoCode = resourceAutoCodeService.getById(taskNode.getAutoNode().getId());
|
|
|
- taskNode.setAutoNode(resourceAutoCode);
|
|
|
+ if (tTask == null || tTask.getStatus() == "3") {
|
|
|
+ log.setTaskNodeId(taskNode.getId()).setExeResult("0").setManual("0").setFeedback("当前任务为空");
|
|
|
+ autoNodeLogService.save(log);
|
|
|
+ throw new RuntimeException("节点参数异常");
|
|
|
+ }
|
|
|
+ // //获取配置序数据
|
|
|
+ //任务初始化判断
|
|
|
+ if ("1".equals(tTask.getStatus())) {
|
|
|
+ //下发的数据才更新状态
|
|
|
+ tTask.setStatus("2").setStartTime(new Date());
|
|
|
+ taskMapper.updateById(tTask);
|
|
|
+ planMapper.updateproduceStatusBegin();
|
|
|
+ orderMapper.updateproduceStatusBegin();
|
|
|
+
|
|
|
+ msgUtil.redis_set(CacheKey.PRESOURCE_CURRENT_TASK + "_" + tTask.getResourceId(), tTask.getId());
|
|
|
+ msgUtil.redis_set(CacheKey.PRESOURCE_CURRENT_TASK_OBJECT + "_" + tTask.getResourceId(), tTask);
|
|
|
+ }
|
|
|
+ //获取配置节点
|
|
|
+ // String autoProgramUrl = getInterfaceUrl(taskNode);
|
|
|
|
|
|
- isFinal = resourceAutoCode.isFinal() ? true : false;
|
|
|
- msgUtil.redis_set(CacheKey.TASK_CURRENT_NODE + "_" + taskNode.getResourceId(), resourceAutoCode);
|
|
|
+ //填充配置节点内容
|
|
|
+ ResourceAutoCode resourceAutoCode = resourceAutoCodeService.getById(taskNode.getAutoNode().getId());
|
|
|
+ taskNode.setAutoNode(resourceAutoCode);
|
|
|
|
|
|
- //更新节点任务
|
|
|
- taskNode.setExeStatus("2").setStartTime(new Date());
|
|
|
- taskNodeMapper.updateAllById(taskNode);
|
|
|
+ isFinal = resourceAutoCode.isFinal() ? true : false;
|
|
|
+ msgUtil.redis_set(CacheKey.TASK_CURRENT_NODE + "_" + taskNode.getResourceId(), resourceAutoCode);
|
|
|
|
|
|
- //初始化业务日志
|
|
|
- AAutoNodeLog log = getBusinessLog(tTask, taskNode);
|
|
|
+ //更新节点任务
|
|
|
+ taskNode.setExeStatus("2").setStartTime(new Date());
|
|
|
+ taskNodeMapper.updateAllById(taskNode);
|
|
|
|
|
|
-// logger.info("==================请求地址=============" + autoProgramUrl);
|
|
|
- String returnData = "";
|
|
|
- boolean specialCallBackMyselfFlag = false;
|
|
|
- Map conMap = new HashMap();
|
|
|
- boolean lockFlag = false;
|
|
|
- try {
|
|
|
- lockFlag = lock.tryLock(10,TimeUnit.SECONDS);
|
|
|
- if(lockFlag){
|
|
|
if ("04".equals(taskNode.getInterfaceType())) {
|
|
|
//人工上下料或质检
|
|
|
//不用调接口,直接返回成功
|
|
@@ -343,7 +350,7 @@ public class TaskWorkNode {
|
|
|
JSONObject ret = new JSONObject();
|
|
|
ret.put("result","true");
|
|
|
returnData = ret.toJSONString();
|
|
|
- }else if(resourceBusiness.getName().contains("下料业务") && "GetServoStacker".equals(method) && "打标业务".equals(beforResourceBusiness.getName())){
|
|
|
+ }else if(taskNode.getCompleteBatchSort()!=1 && "3".equals(beforTask.getStatus()) && resourceBusiness.getName().contains("下料业务") && "GetServoStacker".equals(method) && "打标业务".equals(beforResourceBusiness.getName())){
|
|
|
specialCallBackMyselfFlag = true;
|
|
|
String jsonParam = getRequestParam(conMap);
|
|
|
//缓存执行当前节点传参
|
|
@@ -372,6 +379,7 @@ public class TaskWorkNode {
|
|
|
}
|
|
|
}
|
|
|
}else{
|
|
|
+ logger.info("节点{}未获取到了执行锁",taskNode.getId());
|
|
|
conMap.put("result",false);
|
|
|
}
|
|
|
} catch (BizException e) {
|